Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 23:29 08.06.24 
Компютри и Интернет
   >> Delphi
*Кратък преглед

Страници по тази тема: 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



Здравей!
По това как си формулирал въпроса си мога да заключа че едвали това е единственият проблем който имаш.
На такъв въпрос има само един отговор и той е "така".
Венцислав Александрийски



Тема Re: защонови [re: z_free]  
Автор afterglow (inner flame)
Публикувано16.07.04 11:22



Ако ползваш TQuery.RecordCount извиквай TQuery.FetchAll преди това.

Ако записите, които query-то връща са много, реално идват на порции - като Open-неш query-то идва първата част от тях и след това като scroll-ваш по записите и се наложи, идват останалите. В този случай RecordCount връща (-1).

HTH



Тема Re: защонови [re: v_automation]  
Автор ess (мечтател)
Публикувано16.07.04 16:27



Е защо сега така? Човека си пита. Честно казано, може да няма достатъчно опит в тези неща, затова пита тук.
На мене ако ми се случи такова нещо, ще погледна малко сорс, ще пробвам по 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';

-

Не просто е много дразнещ, но и голям проблем. Случва се от време на време и главно на динамично създадени обекти.



Тема psнови [re: z_free]  
Автор z_free (людоед)
Публикувано16.07.04 17:01



Последните два реда от кода са там по грешка, и сега не мога да ги едит. + в <разхождане по записите> се включва едно 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



Здравей!
Никой не се е родил научен и няма нищо лошо в това да попиташ, но не става дума за това.
Хубаво е че искаш да му помогнеш, но според мен нетрябваше да го правиш дакато не си формулира въпроса.
Ще ти хареса ли форум от вида:
тема: защо
тема: как
тема: защо
тема: защо
тема: защо
тема: как
тема: как
тема: кой
тема: ......
Коя от така записаните темите би те заинтересувала?
Приятно ли ти е да си кликаш на хаос по линковете?
Въпроса не е до това дали има опит, а как пита!
Ако пита базата както пита във форума значи резултата който получава е съвсем нормален и следователно няма какво да му се обяснява
Венцислав Александрийски



Тема хм...нови [re: z_free]  
Автор afterglow (inner flame)
Публикувано17.07.04 17:20



Мдааа...



Тема Re: много простонови [re: z_free]  
Автор killall (Дядо Мраз)
Публикувано19.07.04 23:12



qr := tquery.create(nil);
with qr do begin
databasename := 'restdata';
sql.text := 'select * from users';
open;
last;
first;

showmessage(inttostr(recordcount)); // показва -1
free;
end;


_ _ _

Time is like a drug. Too much of it kills you.


Тема Аха, само че колегата...нови [re: killall]  
Автор afterglow (inner flame)
Публикувано20.07.04 00:10



...нещо не го разбирам какво точно очаква. Може проблемът да не му е в това, в което си мисли, че е...



Тема killing in the name ofнови [re: afterglow]  
Автор z_free (людоед)
Публикувано20.07.04 09:19



Очаквам, когато отворя query с просто select заявка, която връща пет записа, които съвсем коректно се четат (while not Eof do begin showmessage(qrF1.AsString); next; end; си показва съобщение пет пъти) -- тогава очаквам qr.RecordCount да е 5, a не -1.

Много я разтекохме темата, нищо не разбрахме ....

-------------
Special killer double trouble triple extra nicotine monster!


Тема UniDirectionalнови [re: z_free]  
Автор andrew_nikoloff (void)
Публикувано20.07.04 09:48



Какво ти е UniDirectional на query-то? Възможно ли е да ти връща -1 заради него?



Тема Re: killing in the name ofнови [re: z_free]  
Автор NDeu (динозавър)
Публикувано20.07.04 12:52



RTFS
Да погледнем в изворите (sources)
Имаме property RecordCount: Integer read GetRecordCount;
в TDataSet, където
function GetRecordCount: Integer; virtual;
function TDataSet.GetRecordCount: Longint;
begin
Result := -1;
end;
Т.е. ако GetRecordCount не е препокрита в наследниците, ще имаме -1

В твоя случай, обаче

TQuery = class(TDBDataSet)
TDBDataSet = class(TBDEDataSet)
TBDEDataSet = class(TDataSet)

function TBDEDataSet.GetRecordCount: Integer;
begin
CheckActive;
if (DbiGetExactRecordCount(FHandle, Result) <> DBIERR_NONE) and
(DbiGetRecordCount(FHandle, Result) <> DBIERR_NONE) then
Result := -1;
end;

Т.е. DbiGetExactRecordCount и DbiGetRecordCount ти връщат грешка.
Защо?
Ти трябва да си отговориш
Не казваш за каква база става въпрос и с какви драйвери се връзваш.



Тема Re: защонови [re: v_automation]  
АвторApo (Нерегистриран)
Публикувано20.07.04 17:20



probvai taka:
Query.First;
Query.Last;
i sega ve4e Query.RecordCount



Тема Re: защонови [re: v_automation]  
Автор ess (мечтател)
Публикувано20.07.04 17:39



Не си съвсем прав. Сигурно има хора с опит, които веднага като видят такъв въпрос "защо RecordCount = -1", ще отговорят конкретно и компетентно.

Някои от отговорите са такива или с насочващи въпроси, по същество.

Това, че ти не си се сетил веднага за какво става дума или че не си разбрал въпроса, не ти дава право да отговаряш по този начин.

No offense...

---
...и аз пиша на кирилица!



Страници по тази тема: 1 | 2 | >> (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.