copyquery:=TADOQuery.Create(nil);
with copyquery do
begin
Connection:=DmBase.ADOCnXXF;
sql.Add('select max(f_sendno) as sendno from sendmain');
open;
maxsendno:=trim(fieldbyname('sendno').AsString);
close;
sql.Clear;
sql.Add('select top 0 * from sendmain');
open;
end;
detquery:=TADOQuery.Create(nil);
with detquery do
begin
Connection:=DmBase.AdoCnMaster;
end;
detcopyquery:=TADOQuery.Create(nil);
with detcopyquery do
begin
Connection:=DmBase.ADOCnXXF;
sql.Add('select top 0 * from senddet');
open;
end;
squery:=TADOQuery.Create(nil);
with squery do
begin
Connection:=DmBase.AdoCnMaster;
sql.Add('select * from sendmain where f_sendno>='''+edit1.Text+''' and f_sendno<='''+edit2.Text+'''');
open;
for i:=1 to RecordCount do
begin
scdh(maxsendno,1);
maxsendno:=scdh(maxsendno,1);
copyquery.Append;
for j:=0 to FieldCount-1 do
if (Fields[j].FieldName<>'F_SENDNO') and (Fields[j].FieldName<>'F_DATE') then
copyquery.FieldByName(Fields[j].FieldName).Value:=Fields[j].Value
else if Fields[j].FieldName='F_SENDNO' then
copyquery.FieldByName(Fields[j].FieldName).Value:=maxsendno
else
copyquery.FieldByName(Fields[j].FieldName).Value:=FormatDateTime('yyyy/mm/dd',date);
copyquery.Post;
sendno:=fieldbyname('f_sendno').AsString;
detquery.Close;
detquery.SQL.Clear;
detquery.SQL.Add('select * from senddet where f_sendno='''+sendno+'''');
detquery.Open;
for k:=0 to detquery.RecordCount-1 do
begin
detcopyquery.Append;
for l:=0 to detquery.FieldCount-1 do
if detquery.Fields[l].FieldName<>'F_SENDNO' Then
detcopyquery.FieldByName(detquery.Fields[l].FieldName).Value:=detquery.Fields[l].Value
else
detcopyquery.FieldByName('F_SENDNO').AsString:=maxsendno;
detcopyquery.Post;
detquery.Next;
end;
Next;
end;
end;
程序主要是從一個庫中複製一個主從表的記錄到另外一個庫中,在複製從表時有時會在detcopyquery.Post;這句出現Row cannot be located for updating. Some values may have been changed since it was last read.這個錯誤。水平有限不知道爲何在這裡會出現這個錯誤,希望大家幫忙下,謝了!請高手分析下原因,以及如何解決。
with copyquery do
begin
Connection:=DmBase.ADOCnXXF;
sql.Add('select max(f_sendno) as sendno from sendmain');
open;
maxsendno:=trim(fieldbyname('sendno').AsString);
close;
sql.Clear;
sql.Add('select top 0 * from sendmain');
open;
end;
detquery:=TADOQuery.Create(nil);
with detquery do
begin
Connection:=DmBase.AdoCnMaster;
end;
detcopyquery:=TADOQuery.Create(nil);
with detcopyquery do
begin
Connection:=DmBase.ADOCnXXF;
sql.Add('select top 0 * from senddet');
open;
end;
squery:=TADOQuery.Create(nil);
with squery do
begin
Connection:=DmBase.AdoCnMaster;
sql.Add('select * from sendmain where f_sendno>='''+edit1.Text+''' and f_sendno<='''+edit2.Text+'''');
open;
for i:=1 to RecordCount do
begin
scdh(maxsendno,1);
maxsendno:=scdh(maxsendno,1);
copyquery.Append;
for j:=0 to FieldCount-1 do
if (Fields[j].FieldName<>'F_SENDNO') and (Fields[j].FieldName<>'F_DATE') then
copyquery.FieldByName(Fields[j].FieldName).Value:=Fields[j].Value
else if Fields[j].FieldName='F_SENDNO' then
copyquery.FieldByName(Fields[j].FieldName).Value:=maxsendno
else
copyquery.FieldByName(Fields[j].FieldName).Value:=FormatDateTime('yyyy/mm/dd',date);
copyquery.Post;
sendno:=fieldbyname('f_sendno').AsString;
detquery.Close;
detquery.SQL.Clear;
detquery.SQL.Add('select * from senddet where f_sendno='''+sendno+'''');
detquery.Open;
for k:=0 to detquery.RecordCount-1 do
begin
detcopyquery.Append;
for l:=0 to detquery.FieldCount-1 do
if detquery.Fields[l].FieldName<>'F_SENDNO' Then
detcopyquery.FieldByName(detquery.Fields[l].FieldName).Value:=detquery.Fields[l].Value
else
detcopyquery.FieldByName('F_SENDNO').AsString:=maxsendno;
detcopyquery.Post;
detquery.Next;
end;
Next;
end;
end;
程序主要是從一個庫中複製一個主從表的記錄到另外一個庫中,在複製從表時有時會在detcopyquery.Post;這句出現Row cannot be located for updating. Some values may have been changed since it was last read.這個錯誤。水平有限不知道爲何在這裡會出現這個錯誤,希望大家幫忙下,謝了!請高手分析下原因,以及如何解決。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货