ADOStoredProc + Parameters

5 отговора 133 прегледа
#1

ADOStoredProc + Parameters

Имам ADOStoredProc с 4 параметъра. Зададох имената им предварително. После по време на изпълнение викам:
Parameters.ParamValues['...'] := ...
При първо извикване всичко е ОК.
При следващи извиквания правя още ADOStoredProc.Close; ADOStoredProc.Open
Но винаги резултата е както са били първоначалните стойности на параметрите.

И друго: когато имам грид към тази процедура, за някои стойности на параметрите някакъв COM връща EFAIL. Струва ми сече е при RecordCount.

Май е вярно, че Borland все още не са оправили ADO компонентите.

Отговор
в отговор на Йopдaн #2

Re: ADOStoredProc + Parameters

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

Отговор
в отговор на ИBAHЧO #3

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;

Отговор
в отговор на Йopдaн #4

Опитай така


with Dm.AdoSales do
begin
Close;
Parameters.ParamValues['StartDate'] := StartDate;
Parameters.ParamValues['EndDate'] := EndDate;
Parameters.ParamValues['Distributor'] := Distributor;
Parameters.ParamValues['Vendor'] := VendorCode;
Open;
end;


Отговор
в отговор на Йopдaн #5

Re: ADOStoredProc + Parameters

Тъй де, нямам навика да се заяждам, но едно малко уточнение мисля, че няма да навреди на никой...
>> ако нямаше проблеми, нямаше отделен пач да има за ADO
Вярно е, имаше отделен пач за АДО, по-точно за MDAC, но той не бе заради това, че компонентите бяха бъгъви, а че онези от Майкрософт бяха омазали MDAC 2.6, и в определени случаи връщаше една тъпа грешка от типа на "Either EOF or BOF is True, or the current record has been deleted." или нещо такова, независимо дали използваш VCL компоненти, или си работиш "дървено" като мен - направо с COM интерфейсите.... А иначе след последния общ ъпдейт на Делфи 5, все ми се струва че грешки нямаше...

Отговор
в отговор на andrew_nikoloff #6

Re: Опитай така

Опитвал съм го, също и с Requery.

Моля, 1) ако някой го е правил и става или не може да пише; 2) ако някой иска да флуди да си намери друга тема.

Втория проблем с EFAIL открих откъде идва: имам колкона А*10000000+Б и става някакво препълване за А=998. Интересно е, че заявката в Access се изпълнява и полето има стойност #error, а в Delphi при:
First;
while not Eof do
Next;
дава грешка.

Отговор