多表查询后数据更新问题!简单且特别奇怪(100分)

  • 主题发起人 主题发起人 zhch1100
  • 开始时间 开始时间
Z

zhch1100

Unregistered / Unconfirmed
GUEST, unregistred user!
系统winxp professional +delphi7+ado+access2000

adoquery1.close;//打开两个表
adoquery1.sql.Clear;
adoquery1.sql.Add('select 四小证.*,个人信息表.部门 from 四小证 left join 个人信息表 on 四小证.姓名=个人信息表.姓名');
adoquery1.open;


edit4.text:=adoquery1.FieldValues['姓名']; //给某一条记录赋值给控件
edit5.text:=adoquery1.FieldValues['四小证号码'];
edit6.text:=adoquery1.FieldValues['身份证号'];
maskedit3.EditMask:='!9999/99/99;1;_';
maskedit3.Text:=datetostr(adoquery1.FieldValues['四小证到期日期']);


adoquery1.Edit;//更改后进行保存
if edit4.Text<>'' then adoquery1.FieldValues['姓名']:=edit4.text
else adoquery1.FieldValues['姓名']:=null;
if edit5.Text<>'' then adoquery1.FieldValues['四小证号码']:=edit5.text
else adoquery1.FieldValues['四小证号码']:=null;
if edit6.Text<>'' then adoquery1.FieldValues['身份证号']:=edit6.text
else adoquery1.FieldValues['身份证号']:=null;
maskedit3.EditMask:='!9999/99/99;0;_';
if maskedit3.Text<>'' then
begin
maskedit3.EditMask:='!9999/99/99;1;_';
adoquery1.FieldValues['四小证到期日期']:=strtodate(maskedit3.Text);
end
else
begin
maskedit3.EditMask:='!9999/99/99;1;_';
adoquery1.FieldValues['四小证到期日期']:=null;
end;
adoquery1.post;
运行后程序不出错,在DBGRID中显示数据也已经修改成功,但是退出后检查数据,发现
数据并未修改,不知道错在哪里?
 
多表查询不会更新的!这是ADO的缺陷
 
ADOQuery1.UpdateBatch(arall);
 
使用ADOQuery1.UpdateBatch(arall);还是不行!
 
多表查询不会更新的!这不是ADO的问题。是ACCSEE本身的问题。
你可以直接在ACCESS的查询里设定多表查询更新,同样不能更新的。这里就没有用到ADO了。
 
ADO的刷新是
adoquery1.close;
adoquery1.open;
关闭再打开就刷新了!
 
还是用SQL语句好
 
在ACCSEE中多表查询,对结果进行修改是不可以的,用两条SQL语句,
对它们进行循环,盎然进行修改!效率可能低,但可以实现你的要求!
 
好像沒有指明是改那一個...
 
一个数据集操作两个表,肯定是不能这么操作的.分成两个表,单独POST.
如果用SQL提交,也要用两个SQL语句提交.
 

Similar threads

后退
顶部