|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с хранимой процедурой
Господа прошу о помощи , решил сделать dll, т.е. привызове процедуры передаю ей параметры для записи в БД и получаю от нее код и описание ошибки, и использую TAdoStoredProc, хочу оговорить работаю с mssql 2000, при реализации этого в простом приложении все работает, если пытаюсь создать dll для выполнения этой же задачи, то вылетает ошибка EOleException 'Неправильно определен объект Parametr. Представлены несовместимые или неполные сведения'
делаю так Var i,ErrCode,MsgType:integer; date,Msg:string; time:Tdatetime; begin time:=strtodatetime(date); adost:=TADOStoredProc.Create(nil); adocon:=TADOConnection.Create(nil); adocon.ConnectionString:='Provider=SQLOLEDB.1;Pass word=123456;User ID=sa;Initial Catalog=marketingogk6;Data Source=Sotnikovsa;Auto Translate=True;Workstation ID=SOTNIKOVSA;Use Encryption for Data=False'; adost.Connection:=adocon; adost.ProcedureName:='ASKUEdata_ins'; with adost.Parameters.AddParameter do begin Name:= '@Return_value'; DataType:=ftInteger; Direction:=pdReturnValue; Attributes:=[paNullable]; Value:=(null); end; with adost.Parameters.AddParameter do begin Name:= '@period_end'; DataType:=ftDateTime; Direction:=pdInput; Attributes:=[paNullable]; Precision:=0; Value:=time; end; with adost.Parameters.AddParameter do begin Name:= '@interval'; DataType:=ftInteger; Direction:=pdInput; Attributes:=[paNullable]; Precision:=10; Value:=3; end; with adost.Parameters.AddParameter do begin Name:= '@code'; DataType:=ftInteger; Direction:=pdInput; Attributes:=[paNullable]; Precision:=10; Value:=1; end; with adost.Parameters.AddParameter do begin Name:= '@value'; DataType:=ftfloat; Direction:=pdInput; Attributes:=[paNullable]; Precision:=10; Value:=311111.01; end; with adost.Parameters.AddParameter do begin Name:= '@Capacity_exid'; DataType:=ftString; Direction:=pdInput; Attributes:=[paNullable]; Size:=255; Value:='VM000000000001'; end; with adost.Parameters.AddParameter do begin Name:= '@guid'; DataType:=ftString; Direction:=pdInput; Attributes:=[paNullable]; Value:='Gres24'; end; with adost.Parameters.AddParameter do begin Name:= '@id'; DataType:=ftBCD; Direction:=pdOutput; Attributes:=[paNullable]; Value:=(null); end; with adost.Parameters.AddParameter do begin Name:= '@MsgType'; DataType:=ftInteger; Direction:=pdOutput; Attributes:=[paNullable]; Value:=(null); end; with adost.Parameters.AddParameter do begin Name:= '@Msg'; DataType:=ftString; Direction:=pdOutput; Attributes:=[paNullable]; Value:=(null); end; with adost.Parameters.AddParameter do begin Name:= '@ErrCode'; DataType:=ftInteger; Direction:=pdOutput; Attributes:=[paNullable]; Value:=(null); end; i:=adost.Parameters.Count; adost.ExecProc; ErrCode:=Adost.Parameters.ParamValues['@ErrCode']; MsgType:= Adost.Parameters.ParamValues['@MsgType']; msg:=Adost.Parameters.ParamValues['@msg']; if ErrCode>0 then Windows.MessageBox(hWnd, Pchar(Msg), 'Command Line', MB_OK); т.е. вызываю процедуру которая выглядит так create procedure ASKUEDATA_INS @period_end T_datetime, @interval T_int, @code T_int, @value T_float, @capacity_exid T_sname, @guid T_sname, @id T_reference out, @Msg T_infomsg out, @MsgType T_int out, @ErrCode T_int out as begin и т.д. Если делать просто то все ок, но в dll ? когда прописываешь все вручную, то ничего не получается, помогите пожалуйста, очень нужна помощь!!! Заранее благодарен!!! |