我的ADOQuery是ltBatchOptimistic的,为什么我在保存的时候提示不是在insert或edit模式下无法无法保存我的代码如下
if (ADOQuery1.RecordCount>0)
begin
ADOQuery2->First();
while (!ADOQuery2->Eof)
begin
//dm是主键,所以必须赋上值
ADOQuery2.FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;
ADOQuery2.Next();
end
end
//就是执行上面ADOQuery2.FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;这一句会出错,假如是但是主键,我不赋值不行呀,郁闷呀。
ADOConnection1->BeginTrans();//
.
.
.
ADOConnection1->CommitTrans();
if (ADOQuery1.RecordCount>0)
begin
ADOQuery2->First();
while (!ADOQuery2->Eof)
begin
//dm是主键,所以必须赋上值
ADOQuery2.FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;
ADOQuery2.Next();
end
end
//就是执行上面ADOQuery2.FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;这一句会出错,假如是但是主键,我不赋值不行呀,郁闷呀。
ADOConnection1->BeginTrans();//
.
.
.
ADOConnection1->CommitTrans();
if (ADOQuery1.RecordCount>0)
begin
ADOQuery2->First();
while (!ADOQuery2->Eof)
begin
//dm是主键,所以必须赋上值
ADOQuery2.FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;
ADOQuery2.Next();
end
end;
如果你要想通过ADOQuery2向数据库添加记录的话应该是这样的:
if (ADOQuery1.RecordCount>0)
begin
ADOQuery1->First();
//如果你的ADOQuery2没有打开的话,请先在这里打开
//示例:
//ADOQuery2->Sql.Clear();//楼主是用CB写的吧
//ADOQuery2->Close();
//ADOQuery2->Sql.Add('select * from 要插入数据的表名字');//如果你该表数据多的话,随便写一个where条件过滤数据
//ADOQuery2->Open();
while (!ADOQuery1->Eof)
begin
//dm是主键,所以必须赋上值
ADOQuery2->Insert();
ADOQuery2->FieldByName("dm").AsString=ADOQuery1.FieldByName("dm").AsString;
ADOQuery2->Post();
ADOQuery1->Next();
end;
end;
虽然你没有把我的问题解决,但是还是谢谢你,后面我看也没有人关注,所以我就结账了。