table1.Open;
table1.First;
table3.Open;
table3.First;
repeatif table1.Locate('emp_unit;address;name;family_code',vararrayof([form1.table3.fieldbyname('emp_unit').asstring,form1.table3.fieldbyname('address').asstring,form1.table3.fieldbyname('name').asstring,form1.table3.fieldbyname('family_code').asstring]),[lopartialkey])
then begin
     table1.Edit;
     form1.table1.fieldbyname('family_code').asstring:=form1.table3.fieldbyname('new_code').asstring;
     end;
table3.Next;
until table3.Eof;
table1.post;
showmessage('成功');大家帮我看一下这段代码,在定位语句locate中,我用了4个关键词来搜索数据库表:emp_unit;address;name;family_code 这4个关键词的中文含义为:单位,地址,姓名,户编码
现在我想这样操作,在locate找到我所需的记录之后,把family_code改成新的户编码new_code,这个新户编码在table3里有。这样试着运行一下程序,提示出错,错误代码的中文意思是说数据集没有处于插入状态,不可以编辑数据库。
从代码来看并没有语法错误,能正常编译的,在我最后找来找去之后发现问题很可能就在这里:
family_code这个关键字在locate当中已经使用过了,而下来又对这个以family_code为字段名的字段进行修改,可能是违反了什么原则,然后数据才不给操作的吧。就是这个语句:form1.table1.fieldbyname('family_code').asstring:=form1.table3.fieldbyname那么我应该以什么样的方式来把family_code字段中的内容换成新的new_code呢?先说明一下,table1.Locate('emp_unit;address;name;family_code',vararrayof([form1.table3.fieldbyname('emp_unit').asstring,form1.table3.fieldbyname('address').asstring,form1.table3.fieldbyname('name').asstring,form1.table3.fieldbyname('family_code').asstring]),[lopartialkey])这个语句的4个关键词是不能缺少family_code户编码的,少了它就没办法找到准确的记录了,大家知道的话请提个意见啊,非常感谢啊!!!