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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2015, 16:41   #1
!незнайка!
Новичок
Джуниор
 
Регистрация: 14.09.2015
Сообщений: 2
По умолчанию count *

доброе время суток!
Люди добрые, помогите с запросом!
у меня выполняется запрос и надо посчитать кол во записей
Код:
Close;
        SQL.Clear;
        Form2.Query1.Close;
        SQL.Text:='SELECT * FROM jurnal  WHERE DAT_A >= :date1 and DAT_A < :date2';
        if edit4.Text<> '' then sql.Add(' and strana like "%'+edit4.Text+'%"');
        if edit5.Text<> '' then sql.Add(' and FIO_INSPEK like "%'+edit5.Text+'%"');
        if CheckBox1.Checked=true then  sql.Add(' and INAUT like "ÂÂÎÇ"');
        if CheckBox2.Checked=true then  sql.Add(' and INAUT like "ÂÛÂÎÇ"');
        if CheckBox3.Checked=true then  sql.Add (' and  NOT STRANA = "Ðîññèÿ"');
        if checkbox4.Checked=true then  sql.Add(' and count (*)');
      Form2.Query1.ParamByName('Date1').AsDateTime:=Datetimepicker1.DateTime-1;
      Form2.Query1.ParamByName('Date2').AsDateTime:=Datetimepicker2.DateTime;
      
        Open;
     //    Label3.Caption:=IntToStr(Query1.FieldValues['Count']);
подскажите

Последний раз редактировалось Stilet; 14.09.2015 в 16:46.
!незнайка! вне форума Ответить с цитированием
Старый 14.09.2015, 16:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
if checkbox4.Checked=true then sql.Add(' and count (*)');
Это убираем.
Цитата:
SQL.Text:='SELECT * FROM jurnal WHERE DAT_A >= ate1 and DAT_A < ate2';
Это переписываем в:
Код:
if checkbox4.Checked then
 SQL.Text:='SELECT count(*) FROM jurnal  WHERE DAT_A >= :date1 and DAT_A < :dDate2'
else
 SQL.Text:='SELECT * FROM jurnal  WHERE  DAT_A >= :date1 and DAT_A < :date2'
Остальное можно оставить.
Хотя это: and strana like "%'+edit4.Text+'%" я бы тоже по другому писанул, но если оно у тебя работает и так сойдет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2015, 17:03   #3
!незнайка!
Новичок
Джуниор
 
Регистрация: 14.09.2015
Сообщений: 2
По умолчанию

спасибо тебе сейчас попробую

как сделать чтобы в гриде отображались данные и кол во?

а как корректней будет?
писани, если не сложно.
Благодарен

Последний раз редактировалось Stilet; 14.09.2015 в 18:35.
!незнайка! вне форума Ответить с цитированием
Старый 16.09.2015, 06:28   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Обычно используют 3 способа
1 отдельный запрос в базу (select count(поле) from ...) и показ его результата на форме
2 Цикл по датасету с подсчётом в переменную, например, и показ её
3 Использовать свойство RecordCount датасета, но оно не всегда показывает верный результат, самый быстрый и удобный способ, если сможете смириться с тем, что может быть неточность показаний, лично я его использую, почти всегда некритично, если ошибка, т.к. просто информационное поле в интерфейсе юзера, а в каких-нибудь отчётах я считаю сразу на стороне базы.
phomm вне форума Ответить с цитированием
Старый 16.09.2015, 11:20   #5
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
3 Использовать свойство RecordCount датасета, но оно не всегда показывает верный результат
Это зависит от компонентов. В ODAC можно задать получение точного числа записей, это будет скрытый запрос с count(*).
Vapaamies вне форума Ответить с цитированием
Старый 16.09.2015, 11:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

RecordCount возвращает количество записей уже полученных с сервера и всегда точно. К сожалению это не всегда совпадает с тем а сколько их всего будет получено. А когда они все будут получены зависит от компонента и его настроек и конкретной ситуации.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается ListBox.Count от ListBox.Items.Count bakanaev Общие вопросы Delphi 5 16.08.2012 12:35
select count(*) RuVarez БД в Delphi 2 13.04.2012 13:12
Функция Count() _Mixer_ SQL, базы данных 2 06.04.2011 11:24
count(*) as dedyshka PHP 8 28.12.2009 15:53
count(*) antoniosm БД в Delphi 9 12.09.2007 13:06