Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 18:48   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Последовательное чтение записей

Добрый вечер! Вопрос: можно ли сделать так, чтобы когда я данные из БД загрузил, список учеников, у меня записи поочередно друг за другом считывались или например заносились/отображались в Edit? Например, есть два ученика:
1. Иванов Иван Иванович
2. Петров Петр Петрович
. Нужно, чтобы сначала занеслось ФИО Иванова, потом за ним следом бы занеслось в Edit ФИО Петрова. Причем делаться это должно автоматически. Я сделаю запрос сам наверное. Все что мне нужно, так это как сделать это самоей последовательное чтение записей. Алгоритм такой будет:
Чтение первой записи -> Занесение ФИО в Edit -> Выполнение запроса для конкретной ФИО -> Считывание следующей записи и т.д. Можно ли так сделать? Заранее спасибо за информацию.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.09.2009, 18:57   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Чтение первой записи -> Занесение ФИО в Edit -> Выполнение запроса для конкретной ФИО -> Считывание следующей записи и т.д. Можно ли так сделать? Заранее спасибо за информацию.
все можно сделать
только вот встречный вопрос (уточняющий, для твоей же пользы)
а что делает Выполнение запроса для конкретной ФИО?
просто может можно обработать весь список ФИО в одном запросе?!
soleil@mmc вне форума Ответить с цитированием
Старый 01.09.2009, 19:33   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
а что делает Выполнение запроса для конкретной ФИО?
Запрос будет считывать ID ученика с такими ФИО. Моя задача сейчас: посчитать количество 2-ек в поле Mark_jur в таблице mark. Потом для этого же ID посчитать количество 3-ек, 4-ок, 5-ок и н-ок. Во вложении таблицы БД. Вставку записей я сделал. Теперь нужно посчитать.
Вложения
Тип файла: zip Новая папка (12).zip (4.7 Кб, 17 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.09.2009, 20:54   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

лучше всего сразу иметь лист с парой значений ID, FIO
а по вопросу: по идее ты же добавляешь в конец списка и тогда нужно считать Combobox1.Items[Combobox1.Items.Count-1] (последний) Combobox1.Items[Combobox1.Items.Count-2] (предпоследний) и т.д.
soleil@mmc вне форума Ответить с цитированием
Старый 02.09.2009, 09:59   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А запросом это сделать можно?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 02.09.2009, 10:21   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А запросом это сделать можно?
Конечно можно. Оценки считаются агрегатными функциями SUM
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2009, 10:25   #7
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Откровенно говоря, на уровне БД это и нужно делать.... Только я не понимаю, зачем вам отображать Фамилии в Edit???

А запрос будет такой:
Код:
select sp.ID, sp.FIO,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=2)as dva, 
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=3)as tri,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=4)as chet,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=5)as pyat
from spisok as sp
Заранее прошу прощения - давно не пользовался чистым SQL, все как-то на T-SQL... Пусть гуру поправят =)
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 02.09.2009, 11:50   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А запросом это сделать можно?
Как раз таки запросом это и НАДО делать!

ломайте свои стереотипы - чтобы обработать одну запись, нужно её взять, куда-то поместить (в какой-то ненужный Edit), потом обработать это самое значение...
НИ В КОЕМ РАЗЕ. Запрос и только запрос! И уже в запросе получаете нужные результаты сразу по всем ученикам!

я ещё допускаю, что какие-то данные Вы можете получать не по всем ученикам, а по одному ученику (ну, например, какую-то статистику, дополнительную информацию), но и в этом случае это делается через запрос (лучше параметрический) и при этом данные ученика ни в какой edit записывать не надо!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.09.2009, 13:14   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

SuperVisor, правильно ли я понял как переделать Ваш запрос на SQL? Ваш запрос на T-SQL:
Код:
select sp.ID, sp.FIO,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=2)as dva, 
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=3)as tri,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=4)as chet,
  (select count(ID) from mark where with_spisok=sp.id and mark_jur=5)as pyat
from spisok as sp
И вот на SQL:
Код:
select ID,FIO, count('2')
from spisok,mark 
where (mark.With_spisok=spisok.ID) and (Mark_jur=2)
????
Цитата:
И уже в запросе получаете нужные результаты сразу по всем ученикам!
Было бы здорово вообще
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 02.09.2009, 13:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Было бы здорово вообще
Тогда нужно помацать твою БД непосредственно за... ее таблицы
А так не скажешь что ты там наворотил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
последовательное выполнение процедур в макросе iamaxl Microsoft Office Excel 4 07.07.2009 16:23
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
C++. Последовательное обращение к файлам с расширением Парсифаль Помощь студентам 8 06.05.2009 21:54
Последовательное копирование непустых строк.. Judge52 Microsoft Office Excel 2 13.03.2009 08:23