ADOStoredProc + Parameters
5 отговора
133 прегледа
ADOStoredProc + Parameters
Имам ADOStoredProc с 4 параметъра. Зададох имената им предварително. После по време на изпълнение викам:
Parameters.ParamValues['...'] := ...
При първо извикване всичко е ОК.
При следващи извиквания правя още ADOStoredProc.Close; ADOStoredProc.Open
Но винаги резултата е както са били първоначалните стойности на параметрите.
И друго: когато имам грид към тази процедура, за някои стойности на параметрите някакъв COM връща EFAIL. Струва ми сече е при RecordCount.
Май е вярно, че Borland все още не са оправили ADO компонентите.
Parameters.ParamValues['...'] := ...
При първо извикване всичко е ОК.
При следващи извиквания правя още ADOStoredProc.Close; ADOStoredProc.Open
Но винаги резултата е както са били първоначалните стойности на параметрите.
И друго: когато имам грид към тази процедура, за някои стойности на параметрите някакъв COM връща EFAIL. Струва ми сече е при RecordCount.
Май е вярно, че Borland все още не са оправили ADO компонентите.
Re: ADOStoredProc + Parameters
Не е вярно. Работят си без какъвто и да е проблем... всичко си зависи от кода. Някъде допускаш грешка. От преди да ги публикуват официално ги използвам, и проблем няма.
Re: ADOStoredProc + Parameters
>> От преди да ги публикуват официално ги използвам, и проблем няма.
Публикуваха ги в Delphi 5 и ако нямаше проблеми, нямаше отделен пач да има за ADO.
Иначе явно правя нещо не както трябва, ама как да го оправя? Сега кода ми е следния, при първо извикване е ОК, при следващите заявката се изпълнява с първоначалните стойности.
with Dm.AdoSales do
begin
Parameters.ParamValues['StartDate'] := StartDate;
Parameters.ParamValues['EndDate'] := EndDate;
Parameters.ParamValues['Distributor'] := Distributor;
Parameters.ParamValues['Vendor'] := VendorCode;
Close;
Open;
Публикуваха ги в Delphi 5 и ако нямаше проблеми, нямаше отделен пач да има за ADO.
Иначе явно правя нещо не както трябва, ама как да го оправя? Сега кода ми е следния, при първо извикване е ОК, при следващите заявката се изпълнява с първоначалните стойности.
with Dm.AdoSales do
begin
Parameters.ParamValues['StartDate'] := StartDate;
Parameters.ParamValues['EndDate'] := EndDate;
Parameters.ParamValues['Distributor'] := Distributor;
Parameters.ParamValues['Vendor'] := VendorCode;
Close;
Open;
Опитай така
with Dm.AdoSales do
begin
Close;
Parameters.ParamValues['StartDate'] := StartDate;
Parameters.ParamValues['EndDate'] := EndDate;
Parameters.ParamValues['Distributor'] := Distributor;
Parameters.ParamValues['Vendor'] := VendorCode;
Open;
end;
Re: ADOStoredProc + Parameters
Тъй де, нямам навика да се заяждам, но едно малко уточнение мисля, че няма да навреди на никой...
>> ако нямаше проблеми, нямаше отделен пач да има за ADO
Вярно е, имаше отделен пач за АДО, по-точно за MDAC, но той не бе заради това, че компонентите бяха бъгъви, а че онези от Майкрософт бяха омазали MDAC 2.6, и в определени случаи връщаше една тъпа грешка от типа на "Either EOF or BOF is True, or the current record has been deleted." или нещо такова, независимо дали използваш VCL компоненти, или си работиш "дървено" като мен - направо с COM интерфейсите.... А иначе след последния общ ъпдейт на Делфи 5, все ми се струва че грешки нямаше...
>> ако нямаше проблеми, нямаше отделен пач да има за ADO
Вярно е, имаше отделен пач за АДО, по-точно за MDAC, но той не бе заради това, че компонентите бяха бъгъви, а че онези от Майкрософт бяха омазали MDAC 2.6, и в определени случаи връщаше една тъпа грешка от типа на "Either EOF or BOF is True, or the current record has been deleted." или нещо такова, независимо дали използваш VCL компоненти, или си работиш "дървено" като мен - направо с COM интерфейсите.... А иначе след последния общ ъпдейт на Делфи 5, все ми се струва че грешки нямаше...
Re: Опитай така
Опитвал съм го, също и с Requery.
Моля, 1) ако някой го е правил и става или не може да пише; 2) ако някой иска да флуди да си намери друга тема.
Втория проблем с EFAIL открих откъде идва: имам колкона А*10000000+Б и става някакво препълване за А=998. Интересно е, че заявката в Access се изпълнява и полето има стойност #error, а в Delphi при:
First;
while not Eof do
Next;
дава грешка.
Моля, 1) ако някой го е правил и става или не може да пише; 2) ако някой иска да флуди да си намери друга тема.
Втория проблем с EFAIL открих откъде идва: имам колкона А*10000000+Б и става някакво препълване за А=998. Интересно е, че заявката в Access се изпълнява и полето има стойност #error, а в Delphi при:
First;
while not Eof do
Next;
дава грешка.