網上對該問題的帖子很多但是經常不是很全面筆者在使用時也遇到了很多實際問題比如參數不存在啊類型沒有引用啊等等下面我盡量細致地來通過例子實現一下如果還有不正確的地方希望得到高手指點
首先我們使用一種簡單的方式即通過控件的方式來定義存儲過程和數據源
新建一個單元命名為DataMConn在加入一個ADO單元下的ADOStoredProc這裡命名為ADOSPTempAbove 再加入Data Access單元下的一個DataSource這裡命名為DataSourceAbove設置DataSourceAbove的DataSet屬性為ADOSPTempAbove當然這個屬性也可以在程序中指定
下面可以在另一個單元中添加一個DataGrid這裡的命名為dgAbove下面的代碼加了詳細注釋
With DataMConnADOSPTempAbove do
begin
ProcedureName := GetAbove; //指定存儲過程名稱
ParametersClear; //清除原有參數
//以下創建了兩個新的參數關於如何傳遞表名做為參數請參我在 數據庫 分類的高級應用中寫的文章
ParametersCreateParameter(@tableNameftStringpdinput);
ParametersCreateParameter(@strDateftStringpdinput);
//以下為參數賦值
ParametersParamByName(@tableName)Value := tempTableName;
ParametersParamByName(@strDate)Value := strDate;
try
Open; //返回結果集用open否則用EexcProc
except
begin
ShowMessage(打開表錯誤);
Exit;
end;
end;
//如果沒有在控件屬性中設置DataSourceAbove的DataSet屬性可以在這裡設置
//DataSourceAboveDatSet := DataMConnADOSPTempAbove
dgAboveDataSource := DataMConnDataSourceAbove;
end;
From:http://tw.wingwit.com/Article/program/Delphi/201311/24941.html