|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
защо
|
|
Автор |
z_free (людоед) |
Публикувано | 15.07.04 23:24 |
|
защо от време на време tquery обектите ми връщат recordCount = -1 когато в тях има много записи като изключим това си работят коректно?
Обикновено се получава при динамично създадени tquery
-------------
Special killer double trouble triple extra nicotine monster!
| |
Тема
|
Re: защо
[re: z_free]
|
|
Автор | v_automation (Нерегистриран) |
Публикувано | 15.07.04 23:39 |
|
Здравей!
По това как си формулирал въпроса си мога да заключа че едвали това е единственият проблем който имаш.
На такъв въпрос има само един отговор и той е "така".
Венцислав Александрийски
| |
|
Ако ползваш TQuery.RecordCount извиквай TQuery.FetchAll преди това.
Ако записите, които query-то връща са много, реално идват на порции - като Open-неш query-то идва първата част от тях и след това като scroll-ваш по записите и се наложи, идват останалите. В този случай RecordCount връща (-1).
HTH
| |
|
Е защо сега така? Човека си пита. Честно казано, може да няма достатъчно опит в тези неща, затова пита тук.
На мене ако ми се случи такова нещо, ще погледна малко сорс, ще пробвам по 1 или 2 начина и ако случайно не разбреа, тогава ще питам.
Нали за това са тези форуми...
---
...и аз пиша на кирилица!Редактирано от ess на 16.07.04 16:28.
| |
Тема
|
много просто
[re: afterglow]
|
|
Автор | z_free (Нерегистриран) |
Публикувано | 16.07.04 16:54 |
|
Пояснение:
var
qr: tquery;
...
qr := tquery.create(nil);
with qr do begin
databasename := 'restdata';
sql.text := 'select * from users';
<разхождане из записите>
showmessage(inttostr(recordcount)); // показва -1
free;
end;
qr.Databasename := 'restdata';
qr.sql.text := 'select * from users';
-
Не просто е много дразнещ, но и голям проблем. Случва се от време на време и главно на динамично създадени обекти.
| |
|
Последните два реда от кода са там по грешка, и сега не мога да ги едит. + в <разхождане по записите> се включва едно open :)
В момента не мога да опитам с fetch all, подозирам, че може и да не сработи. Все пак се разхождам по записите ..
-------------
Special killer double trouble triple extra nicotine monster!Редактирано от z_free на 16.07.04 17:18.
| |
Тема
|
Re: много просто
[re: z_free]
|
|
Автор |
ess (мечтател) |
Публикувано | 16.07.04 17:21 |
|
Преди да изпълниш
sql.text := 'select * from users';
изпълни набързо (може и да не е толкоз бързо:) едно:
sql.text := 'select count(*) as RecordsCount from users';
и си вземи броя записи: FieldByName('RecordsCount').AsInteger
Ако в твоята ситуация е възможно де...
---
...и аз пиша на кирилица!
| |
Тема
|
не може, трябва решение, надявах се ..
[re: ess]
|
|
Автор | z_free (Нерегистриран) |
Публикувано | 16.07.04 18:30 |
|
В моя случай не може току така, защото sql изречението се генерира по време на изпълнение и се предава като параметър на функция, която създава tquery и го отваря. За да го реализирам така ще трябва да парс-вам изречението и да си генерирам ново със select count, което даже е рисковано понякога, а и бавно.
Надявах се някой да се е сблъсквал с това и да го е решавал ...
| |
Тема
|
Re: защо
[re: ess]
|
|
Автор | v_automation (Нерегистриран) |
Публикувано | 16.07.04 22:55 |
|
Здравей!
Никой не се е родил научен и няма нищо лошо в това да попиташ, но не става дума за това.
Хубаво е че искаш да му помогнеш, но според мен нетрябваше да го правиш дакато не си формулира въпроса.
Ще ти хареса ли форум от вида:
тема: защо
тема: как
тема: защо
тема: защо
тема: защо
тема: как
тема: как
тема: кой
тема: ......
Коя от така записаните темите би те заинтересувала?
Приятно ли ти е да си кликаш на хаос по линковете?
Въпроса не е до това дали има опит, а как пита!
Ако пита базата както пита във форума значи резултата който получава е съвсем нормален и следователно няма какво да му се обяснява
Венцислав Александрийски
| |
|
Мдааа...
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|