我下面的代码为何在运行期提示'将截断字符串或二进制数据'并不能得到正确的结果?
对于这样的多表操作什么方法最行之有效?
procedure Tfrm_ylck.bzeditKeyPress(Sender: TObject; var Key: Char);
var tempo,temrq,temxh,temdm,temmc,temgg,temsl,temkc:string;
begin
temxh:=xhedit.Text;
tempo:=poedit.Text;
temrq:=ckrqedit.Text;
with DM.AQ_One do
begin
DM.AQ_One.SQL.Clear;
DM.AQ_One.SQL.Add('Select * from Detail_one where Cpxh='''+temxh+'''');
DM.AQ_One.Open;
if DM.AQ_One.RecordCount=0 then
begin
Application.MessageBox('此PO号不存在于数据库,请检查你的输入是否正确,确定后再进行PO出库操作!','提示',mb_ok+mb_iconinformation);
end
else
DM.AQ_One.First;
While not DM.AQ_One.Eof do
begin
temdm:=DM.AQ_One.fieldbyname('Wldm').Value;
temmc:=DM.AQ_One.fieldbyname('Wlmc').Value;
temgg:=DM.AQ_One.fieldbyname('Wlgg').Value;
temsl:=DM.AQ_One.fieldbyname('Sl').Value;
temkc:=inttostr((strtoint(temsl)*strtoint(posledit.Text)));
with DM.AQ_pock DO
begin
DM.AQ_pock.SQL.Clear;
DM.AQ_pock.SQL.Add('Insert Into Po_ck(PoNo,Ckrq,Wldm,Wlmc,Wlgg,Yl,Cksl,Bz)values(:no,:rq,:dm,:mc,:gg,:yl,:cksl,:bz)');
DM.AQ_pock.Parameters.ParamByName('no').Value:=poedit.Text;
DM.AQ_pock.Parameters.ParamByName('rq').Value:=ckrqedit.Text;
DM.AQ_pock.Parameters.ParamByName('dm').Value:=temdm;
DM.AQ_pock.Parameters.ParamByName('mc').Value:=temmc;
DM.AQ_pock.Parameters.ParamByName('gg').Value:=temgg;
DM.AQ_pock.Parameters.ParamByName('Yl').Value:=temsl;
DM.AQ_pock.Parameters.ParamByName('cksl').Value:=(strtoint(temsl)*strtoint(posledit.Text));
DM.AQ_pock.Parameters.ParamByname('bz').Value:=bzedit.Text;
DM.AQ_pock.ExecSQL;
end;
with DM.AQ_Kc DO
begin
SQL.Add('Update detail_all Set Sl=Sl-'+temkc+' where Wldm='''+temdm+'''');
DM.AQ_Kc.ExecSQL;
end;
temdm:='';
temmc:='';
temgg:='';
temsl:='';
DM.AQ_one.Next;
end;
With DM.AQ_pock do
begin
SQL.Clear;
SQL.Add('Select * from Po_ck where PoNo='''+tempo+''' and Ckrq='''+ckrqedit.Text+'''');
DM.AQ_pock.Open;
DM.DS_pock.DataSet:=DM.AQ_pock;
end;
END;
end;
对于这样的多表操作什么方法最行之有效?
procedure Tfrm_ylck.bzeditKeyPress(Sender: TObject; var Key: Char);
var tempo,temrq,temxh,temdm,temmc,temgg,temsl,temkc:string;
begin
temxh:=xhedit.Text;
tempo:=poedit.Text;
temrq:=ckrqedit.Text;
with DM.AQ_One do
begin
DM.AQ_One.SQL.Clear;
DM.AQ_One.SQL.Add('Select * from Detail_one where Cpxh='''+temxh+'''');
DM.AQ_One.Open;
if DM.AQ_One.RecordCount=0 then
begin
Application.MessageBox('此PO号不存在于数据库,请检查你的输入是否正确,确定后再进行PO出库操作!','提示',mb_ok+mb_iconinformation);
end
else
DM.AQ_One.First;
While not DM.AQ_One.Eof do
begin
temdm:=DM.AQ_One.fieldbyname('Wldm').Value;
temmc:=DM.AQ_One.fieldbyname('Wlmc').Value;
temgg:=DM.AQ_One.fieldbyname('Wlgg').Value;
temsl:=DM.AQ_One.fieldbyname('Sl').Value;
temkc:=inttostr((strtoint(temsl)*strtoint(posledit.Text)));
with DM.AQ_pock DO
begin
DM.AQ_pock.SQL.Clear;
DM.AQ_pock.SQL.Add('Insert Into Po_ck(PoNo,Ckrq,Wldm,Wlmc,Wlgg,Yl,Cksl,Bz)values(:no,:rq,:dm,:mc,:gg,:yl,:cksl,:bz)');
DM.AQ_pock.Parameters.ParamByName('no').Value:=poedit.Text;
DM.AQ_pock.Parameters.ParamByName('rq').Value:=ckrqedit.Text;
DM.AQ_pock.Parameters.ParamByName('dm').Value:=temdm;
DM.AQ_pock.Parameters.ParamByName('mc').Value:=temmc;
DM.AQ_pock.Parameters.ParamByName('gg').Value:=temgg;
DM.AQ_pock.Parameters.ParamByName('Yl').Value:=temsl;
DM.AQ_pock.Parameters.ParamByName('cksl').Value:=(strtoint(temsl)*strtoint(posledit.Text));
DM.AQ_pock.Parameters.ParamByname('bz').Value:=bzedit.Text;
DM.AQ_pock.ExecSQL;
end;
with DM.AQ_Kc DO
begin
SQL.Add('Update detail_all Set Sl=Sl-'+temkc+' where Wldm='''+temdm+'''');
DM.AQ_Kc.ExecSQL;
end;
temdm:='';
temmc:='';
temgg:='';
temsl:='';
DM.AQ_one.Next;
end;
With DM.AQ_pock do
begin
SQL.Clear;
SQL.Add('Select * from Po_ck where PoNo='''+tempo+''' and Ckrq='''+ckrqedit.Text+'''');
DM.AQ_pock.Open;
DM.DS_pock.DataSet:=DM.AQ_pock;
end;
END;
end;
解决方案 »
- delphi 多语言转换 转换为繁体显示出乱码,用的是project->languages. 请问要如何才能显示正常? 谢谢
- 高手请进:Delphi下操纵word的问题。
- 关于quickreport中如何出现线条的问题
- 有一组数据呈周期性变化趋势,类似于正弦波形的数据,用什么方法能准确计算其周期?
- 怎样在DbGrid中象显示其他字段一样也将图像字段显示在网格内??
- idpop删除邮件问题
- 在问个简单的问题:Delphi中引号的问题
- 改注册表的难题:没有权限??100分相送
- 扩展名为swf的游戏用什么软件播放?
- 怎样得到一个Adoquery中记录的条数
- 请问扫描软件的原理大概是什么?
- DELPHI6为什么不能安装,急急急
var tempo,temrq,temxh,temdm,temmc,temgg,temsl,temkc:string;
begin
temxh:=xhedit.Text;
tempo:=poedit.Text;
temrq:=ckrqedit.Text;
with DM.AQ_One do
begin
DM.AQ_One.SQL.Clear;
///// DM.AQ_One.SQL.Add('Select * from Detail_one where Cpxh='''+temxh+'''');
///改为下句
DM.AQ_One.SQL.Add('Select * from Detail_one where Cpxh='+''''+temxh+'''');
DM.AQ_One.Open;
if DM.AQ_One.RecordCount=0 then
begin
Application.MessageBox('此PO号不存在于数据库,请检查你的输入是否正确,确定后再进行PO出库操作!','提示',mb_ok+mb_iconinformation);
end
else
DM.AQ_One.First;
While not DM.AQ_One.Eof do
begin
temdm:=DM.AQ_One.fieldbyname('Wldm').Value;
temmc:=DM.AQ_One.fieldbyname('Wlmc').Value;
temgg:=DM.AQ_One.fieldbyname('Wlgg').Value;
temsl:=DM.AQ_One.fieldbyname('Sl').Value;
temkc:=inttostr((strtoint(temsl)*strtoint(posledit.Text)));
with DM.AQ_pock DO
begin
/////加一句
DM.AQ_pock.close;
DM.AQ_pock.SQL.Clear;
DM.AQ_pock.SQL.Add('Insert Into Po_ck(PoNo,Ckrq,Wldm,Wlmc,Wlgg,Yl,Cksl,Bz)values(:no,:rq,:dm,:mc,:gg,:yl,:cksl,:bz)');
DM.AQ_pock.Parameters.ParamByName('no').Value:=poedit.Text;
DM.AQ_pock.Parameters.ParamByName('rq').Value:=ckrqedit.Text;
DM.AQ_pock.Parameters.ParamByName('dm').Value:=temdm;
DM.AQ_pock.Parameters.ParamByName('mc').Value:=temmc;
DM.AQ_pock.Parameters.ParamByName('gg').Value:=temgg;
DM.AQ_pock.Parameters.ParamByName('Yl').Value:=temsl;
DM.AQ_pock.Parameters.ParamByName('cksl').Value:=(strtoint(temsl)*strtoint(posledit.Text));
DM.AQ_pock.Parameters.ParamByname('bz').Value:=bzedit.Text;
DM.AQ_pock.ExecSQL;
end;
with DM.AQ_Kc DO
begin
//////加上
close;
sql.clear;
/////
SQL.Add('Update detail_all Set Sl=Sl-'+temkc+' where Wldm='''+temdm+'''');
DM.AQ_Kc.ExecSQL;
end;
temdm:='';
temmc:='';
temgg:='';
temsl:='';
DM.AQ_one.Next;
end;
With DM.AQ_pock do
begin
SQL.Clear;
SQL.Add('Select * from Po_ck where PoNo='''+tempo+''' and Ckrq='''+ckrqedit.Text+'''');
DM.AQ_pock.Open;
DM.DS_pock.DataSet:=DM.AQ_pock;
end;
END;
end;
也可以试试下面的方法,先在查询分析器运行下面的语句:
ALTER DATABASE 你的数据库名字
SET NUMERIC_ROUNDABORT OFF