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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 15:13   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
У меня глупый вопрос: А почему не сделать все одним вложенным запросом? Зачем их по порядку выполнять?
ну, позвольте не согласится. Поясняю. Выбираем мы данные. Один запрос с кучей условий и полей (вложенные подзапросы, LEFT и RIGTH JOIN, UNION и т.д. и т.п.)
Выбрали. (причём, выборка может занять какое-то время, к сожалению, не всегда это происходит за доли секунды). А теперь необходимо узнать, сколько записей в выборке отвечают определённому условию... (в том числе LIKE ... или просто одно/два три поля заданных.. Заново делаем запрос? (знаю, знаю, можно фильтрацией поиграться)
А если нужно из полученных данных подсчитать итоговые значения каких-то полей?
Или сгруппировать и по группе получить итог?... ну в общем мысль понятна, надеюсь?

Насколько проще/эффективнее (не надо повторно дёргать сервер "тяжёлыми" запросами), когда можно делать запросы к уже полученной выборке!!!

p.s. Вполне допускаю, что в примере с двумя условиями ([ScanDate]= и [Number application]= вполне можно обойтись одним запросом
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2010, 15:18   #12
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
А почему не сделать все одним вложенным запросом? Зачем их по порядку выполнять?
Затем, что запросы прописаны в разных кнопках. И вторую кнопку могут нажать, чтобы выполнить второй запрос, а могут и не нажать.
Цитата:
только вот неясно - каким образом в одном и том же поле Form1.Label55.Caption окажутся данные по полю Number application и ScanDate одновременно?!
Очень просто. На DBGridEh1 я обрабатываю событие OnCellClick, в процедуре которой пишу код, который присваивает Lable55.Caption значение выбранной в любом месте в таблице. И по этому значению выполняется запрос.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.10.2010, 15:36   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Очень просто. На DBGridEh1 я обрабатываю событие OnCellClick, в процедуре которой пишу код, который присваивает Lable55.Caption значение выбранной в любом месте в таблице. И по этому значению выполняется запрос.
а. ясно. Так заведите строчку WhereSQL
куда и накапливайте Ваши условия.
примерно так:
Код:
  if Length(Trim(WhereSQL))>0 then 
             WhereSQL := WhereSQL + ' and ';
  WhereSQL :=  WhereSQL + '([Нужное_поле]='+QuotedStr(Form1.Label55.Caption)+') '

  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'select * from Таблица '+WhereSQL ;
  ADOQuery1.Open;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2010, 15:46   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Не понял эту строчку:
Цитата:
[Нужное_поле]
в моем случае это либо поле [ScanDate] или [Number application]. Да? И какой тип будет иметь WhereSQL? string?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.10.2010, 15:48   #15
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

угу
только вот еще надо где-то накапливать/запоминать выбранные значения
уж проще иметь несколько полей для ввода - обычно список полей для фильтрации ограничен несколькими полями и не нужно лепить сильно замудренный интерфейс отбора записей
soleil@mmc вне форума Ответить с цитированием
Старый 11.10.2010, 15:51   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Serge_Bliznykov
Я имел ввиду что все это сделать одним запросом, а не последовательно выполняемой их кучей, так что ты сказал тоже самое но другими словами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение запросов Dima-fenomen Microsoft Office Access 4 11.03.2010 23:15
Последовательное чтение записей artemavd БД в Delphi 32 09.09.2009 20:14
последовательное выполнение процедур в макросе iamaxl Microsoft Office Excel 4 07.07.2009 16:23
Выполнение запросов к БД rcr БД в Delphi 17 22.05.2009 16:28
Последовательное копирование непустых строк.. Judge52 Microsoft Office Excel 2 13.03.2009 08:23