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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 01:02   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
Лампочка Присвоить результат запроса переменной

Код:
 DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(*) FROM osd,d WHERE osd.idd=d.idd;');
    DM.ADOQuery1.Open;
Подскажите, как мне присвоить переменной? результат запроса... (COUNT(*))?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 03:04   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Может лучше посчитать количество записей по какому-то полю? Например:
Код:
    DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(ID) FROM osd,d WHERE osd.idd=d.idd;');
    DM.ADOQuery1.Open;

Lable1.Caption:=IntToStr(ADOQuery1.FieldByName('ID').AsInteger);
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2010, 03:26   #3
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Может лучше посчитать количество записей по какому-то полю? Например:
Код:
    DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(ID) FROM osd,d WHERE osd.idd=d.idd;');
    DM.ADOQuery1.Open;

Lable1.Caption:=IntToStr(ADOQuery1.FieldByName('ID').AsInteger);
не работает по полю пишет поле не найдено
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 03:39   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А любое другое поле пробовали подставлять вместо ID, которое я в принципе в качестве примера привел?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2010, 06:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

artemavd, count(ID) и count(*) ПОЛНОСТЬЮ идентичны (если только в таблице нет записей, где ваше поле ID is NULL - но я такого даже в страшном сне представить не могу )
и ещё, если пишете select count(ID) from, то обратиться в запросе по полю FieldByName('ID') НЕ ПОЛУЧИТСЯ, у Вас в запросе НЕТ такого поля!


Droid,
Код:
    DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=d.idd');
    DM.ADOQuery1.Open;

Lable1.Caption:=IntToStr(ADOQuery1.FieldByName('CNT').AsInteger);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2010, 08:42   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
где ваше поле ID is NULL
Ну NULL вообще спорный момент в СУБД... Его поведение в разных СУБД по разному, так что если используется Count(поле) неплохо было бы выяснить как конкретное СУБД ведет себя с NULL
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2010, 09:44   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Виталий, NULL в ключевом поле однозначно недопустим (я думаю, что любой движок СУБД сам об этом позаботиться, даже если программист и попытается сделать подобную чушь).

речь о другом,
имхо, в любой СУБД count*) отрабатывает так, как и ожидается - возвращает количество записей в выборке!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2010, 10:41   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
NULL в ключевом поле однозначно недопустим
Кто сказал что у автора это поле ключ?
Я встречал запросы, где нужно получить кол-во но без NULL значений по неключевым полям, там * не во всяких СУБД прокатывала...
В любом случае автору ответ дан.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2010, 12:59   #9
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

Код:
 Lable1.Caption:=IntToStr(ADOQuery1.FieldByName('CNT').AsInteger);
У меня у Query нет такого параметра
1 старый программист, лучше новых 2-х

Последний раз редактировалось Droid; 05.05.2010 в 13:13.
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 13:17   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
У меня у Query нет такого параметра
Его нет в списке, который появляется при нажатии Ctrl+Пробел или когда точку ставишь, но даже если нет его в списке, то просто продолжайте набирать это. Ошибки не будет. Если в списке нет, то это не значит, что этого свойства нет.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
присвоить значение формы переменной bicdibus Общие вопросы Delphi 4 19.03.2010 17:22
TMemoryStream присвоить строковой переменной inndim Общие вопросы Delphi 3 06.05.2009 11:36
Переменной присвоить имя файла komar73 Microsoft Office Excel 4 26.03.2009 15:20
Присвоить результат запроса переменной XATAB БД в Delphi 3 25.02.2009 21:20
присвоить переменной целого типа значение поля key полученное в результате выполнения SQL запроса Worms БД в Delphi 5 10.01.2008 21:07