使用下面的代码,调用存储过程删除数据,但是只能删除一条记录,再删除记录时,就会出现找不到参数的提示信息,重新启动应用程序又可以删除一条记录了。var
Str_ID:String;begin
Str_ID:=ClientDataSet1.FieldByName('canshu1').AsString;
SQLStoredProc1.Params.Clear;
SQLStoredProc1.StoredProcName:='BIAO_DELETE';
SQLStoredProc1.Params.ParamByName('canshu1').Value:=Str_ID;
SQLStoredProc1.ExecProc;
ClientDataSet1.Refresh;
CREATE OR ALTER procedure BIAO_DELETE (
canshu1 varchar(100))
as
begin
delete from biao where canshu1=:canshu1;
end
Str_ID:String;begin
Str_ID:=ClientDataSet1.FieldByName('canshu1').AsString;
SQLStoredProc1.Params.Clear;
SQLStoredProc1.StoredProcName:='BIAO_DELETE';
SQLStoredProc1.Params.ParamByName('canshu1').Value:=Str_ID;
SQLStoredProc1.ExecProc;
ClientDataSet1.Refresh;
CREATE OR ALTER procedure BIAO_DELETE (
canshu1 varchar(100))
as
begin
delete from biao where canshu1=:canshu1;
end
SQLStoredProc1:Parameter 'canshu1'not found.
请问何故?
procedure TRES_CQ_JB_F.btnSB_DelClick(Sender: TObject);
begin
inherited;
if MessageDlg('你確定要刪除所選中的加班數據嗎?'+char(13)+char(13)+'注意:刪除後就不能恢復!',mtWarning,[mbYes,mbNo],0)=idyes then
begin
if not adoq_JB.IsEmpty then
begin
adoq_JB.Delete;
end;
ChangeStatus(sBrowse);
end;
end;
还是用Query自己写指令更简单
若是ADO,则用组件图形化设置更直观
SQLStoredProc1.Parameters.CreateParameter('canshu1',ftString,pdInput,200,Str_ID);
SQLStoredProc1.ExecProc;这里ftString,200是canshu1字段的类型,长度
pdInput表示是传入参数
Str_ID是参数canshu1传入值如果有多个参数,相应有添加就行,如:
SQLStoredProc1.Parameters.CreateParameter('参数2',ftString,pdInput,20,'参数2值');
SQLStoredProc1.Parameters.CreateParameter('参数3',ftFloat,pdInput,0,100);
Str_ID:=ClientDataSet1.FieldByName('canshu1').AsString;
使用后台删除或者更新数据,ClientDataSet1要重新读取数据,Refresh是没用的