Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Ошибка при заполнении параметров в TADStoredProc;
Ошибка при заполнении параметров в TADStoredProc;
Posted: 2007/10/12 08:06
 
у меня 42 - ин и 2 аут параметра.
Выдает ошибку- (картинку прикрепил...)
код..... Просто я вроде препер сделал(DogInfo- класс при выполнении процедуры значения не менял)

with TADStoredProc.Create(nil) do
// with ADStoredProc,DogInfo.Client,DogInfo.Prop do
begin



Connection:=B2Connection;
PackageName:= 'PKI_PEB_API';
StoredProcName:= 'LoanSetup';

Prepare;
//


ParamByName('aCompanyID').AsInteger :=DogInfo.Prop.IdCompany;
// Params[0].AsInteger:= DogInfo.Prop.IdCompany;
ParamByName('aIdentifyCode').AsString :=DogInfo.Client.OKPO;
ParamByName('aLastName').AsString :=DogInfo.Client.LastName;
ParamByName('aFirstName').AsString :=DogInfo.Client.FirstName;
ParamByName('aSecondName').AsString :=DogInfo.Client.MiddleName;

ParamByName('aPassportNo').AsString :=DogInfo.Client.PaspSer+' '+DogInfo.Client.PaspNum;
ParamByName('aPassportIssueDate').AsDateTime := DogInfo.Client.PaspDate;
ParamByName('aPassportIssuePlace').AsString :=DogInfo.Client.PaspOut;
ParamByName('aBirthday').AsDateTime := DogInfo.Client.DtBirth;
ParamByName('aAddress').AsString :=DogInfo.Client.Address;
ParamByName('aJuridicalAddress').AsString :=DogInfo.Client.Address;
ParamByName('aPhone').AsString :='work:'+DogInfo.Client.WPhone+'//home:'+DogInfo.Client.HPhone;

if isint(zamenaStr(trim(Format('%14.2f', [DogInfo.Client.Wages])),'.,','')) then
begin
ParamByName('aIncomeLevel').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Client.Wages])),'.,',''));
end;

ParamByName('aWorkPlace').AsString :=DogInfo.Client.WorkPlase;
ParamByName('aWorkOKPO').AsString :=DogInfo.Client.WorkOKPO;
ParamByName('aDealNo').AsString :=DogInfo.Prop.NDog;
ParamByName('aDealDate').AsDate :=DogInfo.Prop.DtBeg;
ParamByName('aValueDate').AsDate :=DogInfo.Prop.DtBeg;
ParamByName('aExpectedClosedate').AsDate :=DogInfo.Prop.DtEnd;
ParamByName('aDescription').AsString :='user inserted: '+GlobalVars.GetVar('UserName')+'//'+datetimetostr(now())+' // ГФТ //';

if isint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Shop])),'.,','')) then
begin
ParamByName('aMaxAmount').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Shop])),'.,',''));
end;
ParamByName('aCurrencyID').AsInteger:=980;

if (DogInfo.Prop.DogType=1)and(DogInfo.Prop.Annuitet>0) then
begin
ParamByName('aLoanTypeCode').AsString :='356';
if isint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Annuitet])),'.,','')) then
begin
ParamByName('aAnnuityAmount').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Annuitet])),'.,',''));
end;
end
else
begin
ParamByName('aLoanTypeCode').AsString :='355';
end;

if DogInfo.Prop.DogType = dtOldDog then
begin
ParamByName('aInterestRate').asstring := 'NULL';
end
else if (DogInfo.Prop.DogType = dtNewDogA) or (DogInfo.Prop.DogType = dtNewDogE) then
begin
ParamByName('aInterestRate').Asstring := '26';//GetVarOfCompany(DogInfo.Prop.IdCompany,'BankPrc');//0;
end;

if (DogInfo.Prop.Amount_Bank>0)and(DogInfo.Prop.DogType=0) then
begin
ParamByName('aSumDiscount').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Bank])),'.,',''))
end
else
begin
ParamByName('aSumDiscount').AsInteger:=0;
end;

ParamByName('aFeeRate').AsInteger:=0;
ParamByName('aGoodValue').AsInteger:=strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Goods_Price])),'.,',''));

ParamByName('aCORROKPO').AsString :=DogInfo.Shop.OKPO;
ParamByName('aCORRName').AsString :=DogInfo.Shop.Name;
ParamByName('aCORRSName').AsString :=DogInfo.Shop.Name;
ParamByName('aCORRBANKID').AsInteger:= DogInfo.Shop.MFO;
ParamByName('aCORRACCOUNTNO').AsString := DogInfo.Shop.Acc;
ParamByName('aCorrPLATPURPOSE').AsString := DogInfo.Shop.Remark;

if isint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Shop])),'.,','')) then
begin
ParamByName('aCorrAMOUNT').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Shop])),'.,',''));
end;
// ParamByName('aInsureOKPO').AsString :='null';
// ParamByName('aInsureName').AsString :='null';
// ParamByName('aInsureSName').AsString :='null';
// ParamByName('aInsureBANKID').AsInteger:= 0 ;//strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Shop.MFO])),'.,',''));
// ParamByName('aInsureACCOUNTNO').AsString := 'null';
// ParamByName('aInsurePLATPURPOSE').AsString := 'null';

// ParamByName('aInsureAMOUNT').AsInteger:=0;// strtoint(zamenaStr(trim(Format('%14.2f', [Amount_Shop])),'.,',''));

ParamByName('aGuarantorOKPO').AsString :=DogInfo.Guarantor.OKPO;
ParamByName('aGuarantorName').AsString :=DogInfo.Guarantor.Name;
ParamByName('aGuarantorSName').AsString :=DogInfo.Guarantor.Name;
ParamByName('aGuarantorBANKID').AsInteger:= DogInfo.Guarantor.MFO;
ParamByName('aGuarantorACCOUNTNO').AsString := DogInfo.Guarantor.Acc;
ParamByName('aGuarantorPLATPURPOSE').AsString := DogInfo.Guarantor.Remark;

if isint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Comission])),'.,','')) then
begin
ParamByName('aGuarantorAMOUNT').AsInteger:= strtoint(zamenaStr(trim(Format('%14.2f', [DogInfo.Prop.Amount_Comission])),'.,',''));
end;



ExecProc;
ConsoleMessage(' %d %s', [ParamByName('aStatus').AsInteger,ParamByName('aStatusMsg').AsString]);

Post edited by: stivens, at: 2007/10/12 08:09
File Attachment:
File name: ERROR.rar
File size:17767 bytes


Post edited by: stivens, at: 2007/10/12 08:10
Re:Ошибка при заполнении параметров в TADStoredProc;
Posted: 2007/10/13 08:50
 
Привет

После вызова Prepare, типы данных параметра не может быть изменен. TADParam.AsXXXX неявно устанавливает тип параметра. AsInteger - в ftInteger. Скорее всего числовой параметр был определен anyDAC, как ftFmtBCD. Что бы не менять тип параметра, используйте TADParam.Value.

Удачи,
Дмитрий