Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выбрать и записать общее количество записей из 
:(
    Опции темы
Guest
Дата 31.1.2005, 22:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здрасте всем!!!
Скажите пожалуйста, как мне выбрать общее количество записей из Базы, запихнуть это число в переменную, и затем эту переменную присвоить Label1.Caption := AllRecords; ?
У меня используется Access, запросы делаю через ADOQuery на DBGrid.
Плиз!
Заранее благодарю!
  Вверх
Kesh
Дата 31.1.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



А что, разве ADOQuery.RecordCount - не работает?..


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 1.2.2005, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Код

  with ADOQuery1 do
  begin
     Close;
     SQL.Clear;
     SQL.Add('SELECT Count(*) as FiledResult FROM MyTable');
     try
       Open;
     
       Label1.Caption := FieldValues['FiledResult'];
     finally
        Close;
     end;
 end;  



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Kesh
Дата 1.2.2005, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Pegas Я понимаю, что предложенное тобой решение оптимальнее с точки зрения экономии ресурсов, но обрати внимание, что человек все равно
Цитата(Guest @ 31.1.2005, 22:20)
запросы делаю через ADOQuery на DBGrid.

Так имеет ли смысл прогонять еще один запрос для того, чтобы получить количество записей?..



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 1.2.2005, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Я просто показал, как это можно сделать через запрос.
а вообще-то конечно в этом случае лучше:
Код

Label1.Caption := IntToStr(ADOQuery1.RecordCount);



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 1.2.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Pegas @ 31.1.2005, 16:41)
а вообще-то конечно в этом случае лучше:

Код

Label1.Caption := IntToStr(ADOQuery1.RecordCount);



не будет работать smile

Надо так:

Код

ADOQuery1.Last;
Label1.Caption := IntToStr(ADOQuery1.RecordCount);


Только не считайте меня идиотом и не возражайте что "У МЕНЯ РАБОТАЕТ". Собака порылась в том что ADO - это клиент сервер, и прием данных осуществляется по частям в зависимости от размера буффера поэтому пока не перейдёшь на последнюю запись RecordCount будет для маленьких выборок показывать правильное значение, а для больших - то количество записей которое поместилось в локальный буффер. Однако на серьёзном клиент сервере такое хождение по выборке вперёд назад, особенно если выборка большая, приводит к 2м негативным явлениям:

1) Сетевой трафик, несколько раз перебрасываются данные с сервера на клиент
2) Накладывание дополнительных блокировок на сервер, обычно стоит на сервере page lock - т.е. блокируется страница на которой находится курсор, "гуляние" курсора по таблице вызывает увеличение блокировок и негативно сказывается на других клиентах работающих с таблицей.

Поэтому если выборка маленькая, то этот метод применим, а если большая, то лучше тем же или отдельным запросом сделать Select Count(*)


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Kesh
Дата 1.2.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Vit Спасибо... как то не задумывался об этом...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0938 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.