存贮过程无法保存的问题 ( 积分: 100 )

B

bo60503

Unregistered / Unconfirmed
GUEST, unregistred user!
一个dbchenkbox中的信息无法保存,参数为hzbz,我找了好长时间,找不出问题来,大家帮帮忙吧。<br>存贮过程:<br>&nbsp;&nbsp;CREATE&nbsp;PROCEDURE&nbsp;proc_sjb&nbsp;(@jflx&nbsp;char(1),@gggj&nbsp;char(1),@ggdj&nbsp;char(1),@cjm&nbsp;char(1),<br>@pbbh&nbsp;char(6),@ts&nbsp;smallint,@hzbz&nbsp;char(1),@ydglm&nbsp;char(4),@yddw&nbsp;char(40),@ztrl&nbsp;int)&nbsp;AS<br>update&nbsp;df_sjb&nbsp;set&nbsp;jflx=@jflx,gggj=@gggj,ggdj=@ggdj,cjm=@cjm,ts=@ts,<br>hzbz=@hzbz,ztrl=@ztrl&nbsp;&nbsp;where&nbsp;pbbh=@pbbh&nbsp;and&nbsp;ydglm=@ydglm&nbsp;and&nbsp;yddw=@yddw<br>if&nbsp;@@error!=0&nbsp;<br>begin<br>&nbsp;&nbsp;rollback&nbsp;transaction<br>&nbsp;&nbsp;return<br>end<br>GO<br>代码:<br>procedure&nbsp;Tf_pbcssz.bcbtnClick(Sender:&nbsp;TObject);<br>var&nbsp;pbbhbl,ydglmbl:string;<br>begin&nbsp;//用于调用服务器的proc_sjb过程,给df_sjb修改参数值<br>&nbsp;&nbsp;with&nbsp;datamodule1&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@pbbh').Value:=trim(pbbhedit.text);<br>&nbsp;&nbsp;&nbsp;&nbsp;pbbhbl:=pbbhedit.Text;<br>&nbsp;&nbsp;&nbsp;&nbsp;ydglmbl:=ydglmedit.Text;<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@jflx').Value:=inttostr(jflxcombobox.ItemIndex);<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@ts').Value:=strtoint(tsedit.text);<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@ydglm').Value:=trim(ydglmedit.Text);<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@yddw').Value:=trim(yddwedit.Text);<br>&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@ztrl').Value:=strtoint(ztrlEdit.text);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;gggjdbcheckbox.state=cbchecked&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@gggj').Value:='1'<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@gggj').Value:='0';<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;ggdjdbcheckbox.state=cbchecked&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@ggdj').Value:='1'<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@ggdj').Value:='0';<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;cjmdbcheckbox.state=cbchecked&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@cjm').Value:='1'<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@cjm').Value:='0';<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;hzbzdbcheckbox.state=cbchecked&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@hzbz').Value:='1'<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwq_proc1.Parameters.ParamByName('@hzbz').Value:='0';&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;fwq_proc1.ExecProc;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;fwq_proc1.parameters.ParamByName('@return_value').value=0&nbsp;then&nbsp;&nbsp;//取存储过程的返回值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showmessage('保存成功!');<br>&nbsp;&nbsp;&nbsp;&nbsp;qdf_sjb.Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;qdf_sjb.open;<br>&nbsp;&nbsp;&nbsp;&nbsp;QDF_SJB.Locate('PBBH;ydglm',vararrayof([PBBHBL,ydglmbl]),[]);<br>&nbsp;&nbsp;&nbsp;&nbsp;//qdf_sjb.Next;<br>&nbsp;&nbsp;&nbsp;&nbsp;//qdf_sjb.Prior;<br>&nbsp;&nbsp;end;<br>end;
 
怎麽無法保存?提示?
 
如果你的存储过程没错的话,你在fwq_proc1.Parameters.ParamByName('@pbbh').Value:=trim(pbbhedit.text);<br>这句前加下fwq_Proc1.parameters.refresh;<br><br>如果还是不行,提示参数找不到的话,你就不要这样直接调用参数,有时这样会出错,你就动态创建参数<br>procedure&nbsp;bool&nbsp;save(out&nbsp;string&nbsp;sError)<br>var<br>&nbsp;&nbsp;storeTmp:&nbsp;TADOStroedProc;<br>begin<br>&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;false;<br>&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp&nbsp;:=&nbsp;TADOStoredProc.create(self);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp.connection&nbsp;:=&nbsp;con;//自己加<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp.producename=&nbsp;'proc_sjb';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp.parameters.clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp.Parameters.CreateParameter('@jflx',ftstring,pdInput,1,inttostr(jflxcombobox.ItemIndex));<br>&nbsp;&nbsp;&nbsp;&nbsp;.............................................///照上面的写<br>&nbsp;&nbsp;&nbsp;//返回值pdoutput就行了<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storeTmp.ExecProc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fianlly<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeAndNil(StoreTmp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;except<br>&nbsp;&nbsp;&nbsp;end;<br>end;
 
应该是UPDATA&nbsp;语句报错了,&nbsp;可能是类型不匹配。&nbsp;你在Query&nbsp;Analyzer调试一下SP好了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
823
SUNSTONE的Delphi笔记
S
顶部