new-zu |
Отправлено: 16.11.2005, 10:59 |
|
Не зарегистрирован
|
Народ объясните пожалуйста почему после исполнения кода:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OraQuery1->Close();
OraQuery1->ParamByName("INDEKS_KPA")->AsString = Edit1->Text;
OraQuery1->ParamByName("ZAVADSKOY_NOMER")->AsString = Edit2->Text;
OraQuery1->ParamByName("GORANT_SROK")->AsString = Edit3->Text;
OraQuery1->ParamByName("PAPKA")->AsString = Edit4->Text;
OraQuery1->ParamByName("OTMETKA_O_PROVED")->AsString = Edit5->Text;
OraQuery1->ParamByName("in_dat1")->AsString = MaskEdit1->Text;
OraQuery1->ParamByName("in_dat2")->AsString = MaskEdit2->Text;
OraQuery1->ParamByName("in_dat5")->AsString = MaskEdit3->Text;
OraQuery1->ParamByName("in_dat6")->AsString = MaskEdit4->Text;
OraQuery1->Open();
StatusBar2->Panels->Items[0]->Text=OraQuery1->RecordCount;
OraQuery1->First();
}
SQL запрос: select * from SPYSOK_PRIBOROV
where
(INDEKS_KPA LIKE :INDEKS_KPA or :INDEKS_KPA is null)
and (ZAVADSKOY_NOMER LIKE :ZAVADSKOY_NOMER or :ZAVADSKOY_NOMER is
null)
and (GORANT_SROK like :GORANT_SROK or :GORANT_SROK is null)
and (PAPKA like:PAPKA or :PAPKA is null)
and (OTMETKA_O_PROVED LIKE:OTMETKA_O_PROVED or :OTMETKA_O_PROVED
is null)
and DATA_IZGOTOVLENIY BETWEEN to_date(:in_dat1,'dd.mm.yyyy') AND
to_date(:in_dat2,'dd.mm.yyyy')
and DATA_PROVERKI BETWEEN to_date(:in_dat5,'dd.mm.yyyy') AND
to_date(:in_dat6,'dd.mm.yyyy')
В StatusBar2 высвесивается только 25 записей хотя я точно заня что их там 225 |
|
AVC |
Отправлено: 16.11.2005, 15:07 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
В StatusBar2 высвесивается только 25 записей хотя я точно заня что их там 225
|
Записи в StatusBar Да вы, батенька, ба-а-льшой орининал .
25 — это, скорее всего, первая порция от 225, станьте на последнюю запись и посмотрите результат.
|
|
BadMan |
Отправлено: 15.12.2005, 19:09 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
На сколько я знаю RecordCount не работает с запросами — он показывает не количество строк всего по запросу, а только реально считанное в текущем курсоре... Если база будет состоять из пары миллионов записей — то никакой памяти не хватит на запрос SELECT *
Тут надо в самом запросе функцию размещать подсчета записей по условию... |
|
dust |
Отправлено: 15.12.2005, 22:08 |
|
Не зарегистрирован
|
QUOTE |
new-zu:
В StatusBar2 высвесивается только 25 записей
|
Наверное, в DBGrid видно 25 строк, вот и фетчит Query по 25 записей...QUOTE |
BadMan:
На сколько я знаю RecordCount не работает с запросами
|
Извините, но — чушь. Property есть, но не работает ?
QUOTE |
BadMan:
он показывает не количество строк всего по запросу, а только реально считанное в текущем курсоре
|
А ?...
QUOTE |
BadMan:
Если база будет состоять из пары миллионов записей — то никакой памяти не хватит на запрос SELECT *
|
Хватит. Никто (находясь в здравом рассудке) не тягает на клиента миллионы записей.
QUOTE |
BadMan:
Тут надо в самом запросе функцию размещать подсчета записей по условию
|
Хоть бы имхи ставил что-ли...
QUOTE |
new-zu:
хотя я точно заня что их там 225
|
Ну так и скажи: CODE | OraQuery1->FetchAll(); | — ведь не 2000000 записей у тебя.
|
|
Gedeon |
Отправлено: 16.12.2005, 08:51 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Ну, FetchAll(); — это не гуманно, это пока 225 записей, а потом будет 1000000 и что?
Проще все-таки у сервера спросить сколько записей отвечает данному условию, хоть отдельным запросом(что наверное лучше), хоть в этом же.
|
|