F
Frank001
Unregistered / Unconfirmed
GUEST, unregistred user!
我用loadfromfile读入savetofile是生成的文件,到ADODataSet1,
然后构造SQL语言添加到access数据库中,每次添加到第十三条时就出错,
提示的意思大致是说要添加的记录的主键和表中已有的数据的主键重复,
但明明是没有重复啊。
我写了一句代码显示不能添加时,那条要添加的记录的主键的值,发
现刚刚好是上一条添加的记录的值,但这条记录的主键的值明明不是这个
值啊。
更怪的是,在调试模式下,然后在过程中设置断点,进行运行,却可
以完全添加完成,到第十三条时也没有问题。真是怪了
以下是程序代码:
procedure TFormF.ToolButton5Click(Sender: TObject);
var
sqlstr,eid:string;
i:integer;
begin
if ADODataSet1.CommandType = cmdFile //如果还在file数据库状态,就更新
then
begin
ADODataSet1.First; //到第一条数据
while not ADODataSet1.Recordset.EOF do
begin
sqlstr:='insert into';
sqlstr:=sqlstr+' T_c(c_1,c_2,c_3,c_4,c_5,c_6,c_7,c_8,c_9,c_10,c_11,c_12,c_13)';
sqlstr:=sqlstr+' valuesc1,:c2,:c3,:c4,:c5,:c6,:c7,:c8,:c9,:c10,:c11,:c12,:c13)';
ADOComadd.CommandText:=sqlstr;
ADOComadd.Parameters.ParamByName('c1').Value:=ADODataSet1.Recordset.Fields.Item['c_1'].Value;
ADOComadd.Parameters.ParamByName('c2').Value:=ADODataSet1.Recordset.Fields.Item['c_2'].Value;
ADOComadd.Parameters.ParamByName('c3').Value:=ADODataSet1.Recordset.Fields.Item['c_3'].Value;
ADOComadd.Parameters.ParamByName('c4').Value:=ADODataSet1.Recordset.Fields.Item['c_4'].Value;;
ADOComadd.Parameters.ParamByName('c5').Value:=ADODataSet1.Recordset.Fields.Item['c_5'].Value;
ADOComadd.Parameters.ParamByName('c6').Value:=ADODataSet1.Recordset.Fields.Item['c_6'].Value;
ADOComadd.Parameters.ParamByName('c7').Value:=ADODataSet1.Recordset.Fields.Item['c_7'].Value;
ADOComadd.Parameters.ParamByName('c8').Value:=ADODataSet1.Recordset.Fields.Item['c_8'].Value;
ADOComadd.Parameters.ParamByName('c9').Value:=ADODataSet1.Recordset.Fields.Item['c_9'].Value;
ADOComadd.Parameters.ParamByName('c10').Value:=ADODataSet1.Recordset.Fields.Item['c_10'].Value;
ADOComadd.Parameters.ParamByName('c11').Value:=ADODataSet1.Recordset.Fields.Item['c_11'].Value;
ADOComadd.Parameters.ParamByName('c12').Value:=ADODataSet1.Recordset.Fields.Item['c_12'].Value;
ADOComadd.Parameters.ParamByName('c13').Value:=ADODataSet1.Recordset.Fields.Item['c_13'].Value;
try
ADOComadd.Execute; //执行添加记录语句
except
eid:=ADODataSet1.Recordset.Fields.Item['c_1'].Value;
showmessage('添加到第'+inttostr(i+1)+'信息时出错!id='+eid);
exit; //退出批量添加过程
end;
i:=i+1;
ADODataSet1.next;
end; //while end
showmessage('共有'+inttostr(i)+'条纪录被添加。');
end; // then end
end;
这到底是什么原因啊,可以解决吗?
然后构造SQL语言添加到access数据库中,每次添加到第十三条时就出错,
提示的意思大致是说要添加的记录的主键和表中已有的数据的主键重复,
但明明是没有重复啊。
我写了一句代码显示不能添加时,那条要添加的记录的主键的值,发
现刚刚好是上一条添加的记录的值,但这条记录的主键的值明明不是这个
值啊。
更怪的是,在调试模式下,然后在过程中设置断点,进行运行,却可
以完全添加完成,到第十三条时也没有问题。真是怪了
以下是程序代码:
procedure TFormF.ToolButton5Click(Sender: TObject);
var
sqlstr,eid:string;
i:integer;
begin
if ADODataSet1.CommandType = cmdFile //如果还在file数据库状态,就更新
then
begin
ADODataSet1.First; //到第一条数据
while not ADODataSet1.Recordset.EOF do
begin
sqlstr:='insert into';
sqlstr:=sqlstr+' T_c(c_1,c_2,c_3,c_4,c_5,c_6,c_7,c_8,c_9,c_10,c_11,c_12,c_13)';
sqlstr:=sqlstr+' valuesc1,:c2,:c3,:c4,:c5,:c6,:c7,:c8,:c9,:c10,:c11,:c12,:c13)';
ADOComadd.CommandText:=sqlstr;
ADOComadd.Parameters.ParamByName('c1').Value:=ADODataSet1.Recordset.Fields.Item['c_1'].Value;
ADOComadd.Parameters.ParamByName('c2').Value:=ADODataSet1.Recordset.Fields.Item['c_2'].Value;
ADOComadd.Parameters.ParamByName('c3').Value:=ADODataSet1.Recordset.Fields.Item['c_3'].Value;
ADOComadd.Parameters.ParamByName('c4').Value:=ADODataSet1.Recordset.Fields.Item['c_4'].Value;;
ADOComadd.Parameters.ParamByName('c5').Value:=ADODataSet1.Recordset.Fields.Item['c_5'].Value;
ADOComadd.Parameters.ParamByName('c6').Value:=ADODataSet1.Recordset.Fields.Item['c_6'].Value;
ADOComadd.Parameters.ParamByName('c7').Value:=ADODataSet1.Recordset.Fields.Item['c_7'].Value;
ADOComadd.Parameters.ParamByName('c8').Value:=ADODataSet1.Recordset.Fields.Item['c_8'].Value;
ADOComadd.Parameters.ParamByName('c9').Value:=ADODataSet1.Recordset.Fields.Item['c_9'].Value;
ADOComadd.Parameters.ParamByName('c10').Value:=ADODataSet1.Recordset.Fields.Item['c_10'].Value;
ADOComadd.Parameters.ParamByName('c11').Value:=ADODataSet1.Recordset.Fields.Item['c_11'].Value;
ADOComadd.Parameters.ParamByName('c12').Value:=ADODataSet1.Recordset.Fields.Item['c_12'].Value;
ADOComadd.Parameters.ParamByName('c13').Value:=ADODataSet1.Recordset.Fields.Item['c_13'].Value;
try
ADOComadd.Execute; //执行添加记录语句
except
eid:=ADODataSet1.Recordset.Fields.Item['c_1'].Value;
showmessage('添加到第'+inttostr(i+1)+'信息时出错!id='+eid);
exit; //退出批量添加过程
end;
i:=i+1;
ADODataSet1.next;
end; //while end
showmessage('共有'+inttostr(i)+'条纪录被添加。');
end; // then end
end;
这到底是什么原因啊,可以解决吗?