我要做这个功能是:当在入库表修改一条记录,自动更新账目表里的对应记录,于是我在更新按钮的Click事件中添加以下代码:
S1,S2,S3,S4:String;
//用户将要修改入库表,设置变量存取修改的信息
s1:=DBEDit2.Text;//商品编号
s2:=DBEDit3.Text;//商品名称
s3:=trim(DBEDit6.Text);//入库日期
s4:=DBEDit7.Text;//合计利润DMForm.InputTable.Edit//判断对应账目表的哪条记录
zstr:=DMForm.InputTable.fieldbyname('入库日期').AsDateTime;//获得当前入库表本条记录的字段内容
zstr1:=DMForm.InputTable.fieldbyname('商品编号').AsString;
zstr2:=DMForm.InputTable.fieldbyname('商品名称').AsString;
用AND三个字段来判断
//---------------------------------------------------------------
with DMForm.ZhangMuQuery do //打开账目表连接组件开始更新账目表对应的记录
begin
DMForm.ZhangMuQuery.Close;
DMForm.ZhangMuQuery.SQL.Clear;
DMForm.ZhangMuQuery.SQL.Add('Update dbZhangMu set 帐日期=''+s3+'',商品编号=''+s1+'',商品名称=''+s2+'',出帐数=''+s4+'' where 帐日期 =:zstr01 AND 商品编号 =:zstr11 AND 商品名称 =:zsrr21 AND 出帐数 =:zstr31');
DMForm.ZhangMuQuery.ParamByName('zstr01').AsString:=DateTimetostr(zstr);// 帐日期
DMForm.ZhangMuQuery.ParamByName('zstr11').AsString:=zstr1;//商品编号
DMForm.ZhangMuQuery.ParamByName('zsrr21').AsString:=zstr2;//商品名称
DMForm.ZhangMuQuery.ParamByName('zstr31').AsString:=Floattostr(zstr0);//出帐数
DMForm.ZhangMuQuery.Prepare;
DMForm.ZhangMuQuery.ExecSQL;
end;
showmessage('修改成功!');
end;这条语句毫无错误可言,逻辑也正确,但修改了入库表之后,就是不更新账目表的内容;我尝试在ACCESS里查询的SQL视图里输入以上SQL语句也正确。TMD不知错在哪里?
S1,S2,S3,S4:String;
//用户将要修改入库表,设置变量存取修改的信息
s1:=DBEDit2.Text;//商品编号
s2:=DBEDit3.Text;//商品名称
s3:=trim(DBEDit6.Text);//入库日期
s4:=DBEDit7.Text;//合计利润DMForm.InputTable.Edit//判断对应账目表的哪条记录
zstr:=DMForm.InputTable.fieldbyname('入库日期').AsDateTime;//获得当前入库表本条记录的字段内容
zstr1:=DMForm.InputTable.fieldbyname('商品编号').AsString;
zstr2:=DMForm.InputTable.fieldbyname('商品名称').AsString;
用AND三个字段来判断
//---------------------------------------------------------------
with DMForm.ZhangMuQuery do //打开账目表连接组件开始更新账目表对应的记录
begin
DMForm.ZhangMuQuery.Close;
DMForm.ZhangMuQuery.SQL.Clear;
DMForm.ZhangMuQuery.SQL.Add('Update dbZhangMu set 帐日期=''+s3+'',商品编号=''+s1+'',商品名称=''+s2+'',出帐数=''+s4+'' where 帐日期 =:zstr01 AND 商品编号 =:zstr11 AND 商品名称 =:zsrr21 AND 出帐数 =:zstr31');
DMForm.ZhangMuQuery.ParamByName('zstr01').AsString:=DateTimetostr(zstr);// 帐日期
DMForm.ZhangMuQuery.ParamByName('zstr11').AsString:=zstr1;//商品编号
DMForm.ZhangMuQuery.ParamByName('zsrr21').AsString:=zstr2;//商品名称
DMForm.ZhangMuQuery.ParamByName('zstr31').AsString:=Floattostr(zstr0);//出帐数
DMForm.ZhangMuQuery.Prepare;
DMForm.ZhangMuQuery.ExecSQL;
end;
showmessage('修改成功!');
end;这条语句毫无错误可言,逻辑也正确,但修改了入库表之后,就是不更新账目表的内容;我尝试在ACCESS里查询的SQL视图里输入以上SQL语句也正确。TMD不知错在哪里?
解决方案 »
- FastReport每页最多显示10条记录怎么设置
- 利用Table控件进行查询,结果有多条记录怎么处理?
- !!急急: 一个三层的程序,db:oralce, 客户端clientdataset在进行filter汉字时,总是报错EDBClient with message"type mismatch in e
- 我装TurboPower Async Professional时遇到错误,请装过的指教,在线等。马上给分。
- 存储执行的问题,急等解决!!!先行谢过啦!!!
- 我想在delphi中调用系统启动时的声音,怎么调啊?请帮忙!
- 请问Delphi7正式版在哪买?
- 在程序中自动创建DBCheckbox
- 如何合并EXCEL单元格,如何使单元格中的内容居中?
- 可远程访问的运行ServerSocket的微机,线路有何要求?
- 散点分,为寒冷的-30°,占楼不要超过3个
- 寻求组件开发高手帮忙
改为
帐日期='''+s3+''',商品编号='''+s1+''',商品名称='''+s2+''',出帐数='''+s4+'''
改为
帐日期 ='''+zstr01+''' AND 商品编号 ='''+zstr11+''' AND 商品名称 ='''+zsrr21+''' AND 出帐数 ='''+zstr31+'''')
帐日期 ='''+zstr01+''' AND 商品编号 ='''+zstr11+''' AND 商品名称 ='''+zsrr21+''' AND 出帐数 ='''+zstr31+'''')
这条语句这样写,根本过不了编译这关。
AdoConnection1.BeginTrans;
try
with AdoQuery2 do
begin
Close;
SQL.Text := 更新的语句;
ExecSql;
end;
AdoConnection1.CommitTrans;
except
AdoConnection1.RollbackTrans;
end;