проблемы с Adostoredproc
Здравствуйте, помогите пожалуйста решить проблему. Есть скрипт, который выкачивает отчетную форму из базы данных MSSQL:
function GetReport(Num: integer): boolean;
var
ReportSP: TADOStoredProc;
begin
Result:=false;
try
try
ReportSP:=TADOStoredProc.Create(nil);
ReportSP.Connection:=ADOConnection2;
ReportSP.ProcedureName:='GetReportImage';
ReportSP.Parameters.Clear;
ReportSP.Parameters.Refresh;
ReportSP.Parameters.ParamByName('@Report').Value:=Num;
ReportSP.Open;
ReportSP.First;
TBlobField(ReportSP.FieldByName('report')).SaveToFile('c:\Num'+inttostr(Num)+'.frf');
Result:=true;
finally
ReportSP.Close;
ReportSP.Free;
end;
except
Showmessage('This is error. ');
end;
end;
begin
GetReport(1); //Выкачиваем отчет с номером 1
end.
Процедура в Delphi, которая запускает данный скрипт:
procedure TForm4.Button1Click(Sender: TObject);
begin
fsScript1.Clear;
fsScript1.Lines.Text:=fsScript1.Lines.Text+fsSyntaxMemo1.Lines.Text;
fsScript1.Parent:=fsGlobalUnit;
fsScript1.SyntaxType:='PascalScript';
fsScript1.AddObject('ADOConnection2', ADOConnection2);
if fsScript1.Compile then fsScript1.Execute else
ShowMessage(fsScript1.ErrorMsg+''+fsScript1.ErrorPos);
end;
хранимая процедура на сервере:
CREATE procedure dbo.GetReportImage(@Report int)
AS
BEGIN
SELECT * from Reports WHERE Number=@Report
END
GO
Проблема в том, что при вызове метода ReportSP.Parameters.Refresh вылетает сообщение:
Could not convert variant of type (NULL) into type (INTEGER)
Что делать? Перепробовал уже все что можно. Ничего не помогает.
function GetReport(Num: integer): boolean;
var
ReportSP: TADOStoredProc;
begin
Result:=false;
try
try
ReportSP:=TADOStoredProc.Create(nil);
ReportSP.Connection:=ADOConnection2;
ReportSP.ProcedureName:='GetReportImage';
ReportSP.Parameters.Clear;
ReportSP.Parameters.Refresh;
ReportSP.Parameters.ParamByName('@Report').Value:=Num;
ReportSP.Open;
ReportSP.First;
TBlobField(ReportSP.FieldByName('report')).SaveToFile('c:\Num'+inttostr(Num)+'.frf');
Result:=true;
finally
ReportSP.Close;
ReportSP.Free;
end;
except
Showmessage('This is error. ');
end;
end;
begin
GetReport(1); //Выкачиваем отчет с номером 1
end.
Процедура в Delphi, которая запускает данный скрипт:
procedure TForm4.Button1Click(Sender: TObject);
begin
fsScript1.Clear;
fsScript1.Lines.Text:=fsScript1.Lines.Text+fsSyntaxMemo1.Lines.Text;
fsScript1.Parent:=fsGlobalUnit;
fsScript1.SyntaxType:='PascalScript';
fsScript1.AddObject('ADOConnection2', ADOConnection2);
if fsScript1.Compile then fsScript1.Execute else
ShowMessage(fsScript1.ErrorMsg+''+fsScript1.ErrorPos);
end;
хранимая процедура на сервере:
CREATE procedure dbo.GetReportImage(@Report int)
AS
BEGIN
SELECT * from Reports WHERE Number=@Report
END
GO
Проблема в том, что при вызове метода ReportSP.Parameters.Refresh вылетает сообщение:
Could not convert variant of type (NULL) into type (INTEGER)
Что делать? Перепробовал уже все что можно. Ничего не помогает.
Комментарии