网上对该问题的帖子很多但是经常不是很全面笔者在使用时也遇到了很多实际问题比如参数不存在啊类型没有引用啊等等下面我尽量细致地来通过例子实现一下如果还有不正确的地方希望得到高手指点
首先我们使用一种简单的方式即通过控件的方式来定义存储过程和数据源
新建一个单元命名为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;