var
HeadData :Variant;
An,a :Integer;
begin
inherited;
HeadData :=null;
HeadData :=VarArrayCreate([0,qyCust.FieldCount -1],varVariant);
for an :=0 to qyCust.FieldCount -1 do
HeadData[An] :=qyCust.Fields[an].Value;
ClientDataSet1.Data :=qyCustMx.Data;
ClientDataSet2.Data :=qyCustN.Data;
if (qyCust.ChangeCount >0) or (qyCustN.ChangeCount>0) or (qyCustMx.ChangeCount>0) then
begin
an :=Application.MessageBox('',' ', mb_YesNocancel+mb_IconQuestion+mb_DefButton2);
if an=idyes then
begin
PostData;
end; IF An=IdNo Then
Begin
qyCust.CancelUpdates;
qyCustMx.CancelUpdates;
End;
IF An=IdCancel Then exit;
end; qyCust.Insert;
for an :=0 to qyCust.FieldCount -1 do if (qyCust.Fields[An].IsNull) and (qyCust.Fields[an].FullName<>'docid') then
//qyCust.Edit;
qyCust.Fields[an].Value :=HeadData[an];
qyCust.FieldByName('DocId').asstring :='';
HeadData :=null;
qyCustMx.Active:=False;
changeSql('select * from '+DetailTable+' Where DocId='+#39+qyCust.FieldByname('DocId').AsString+#39+' '+DetailSortStr,qyCustMx);
qyCustMx.Active:=True;
qyCustMx.Last; ClientDataSet1.First;
While Not ClientDataSet1.Eof Do
Begin
qyCustMx.append;
For A:=0 to ClientDataSet1.FieldCount-1 do
qyCustMx.fieldByname(ClientDataSet1.fields[a].fieldName).text:=ClientDataSet1.fields[a].text;
qyCustMx.post;
ClientDataSet1.next;
End; qyCustN.Active :=False;
changeSql('select * from EvaN Where DocId='+#39+qyCust.FieldByname('DocId').AsString+#39+' '+DetailSortStr,qyCustN);
qyCustN.Active:=True;
qyCustN.Last;
// getmaxDetailLine1;
ClientDataSet2.First;
while not ClientDataSet2.eof do
begin
qyCustN.Append;
for a :=0 to ClientDataSet2.FieldCount -1 do
qyCustN.FieldByName(ClientDataSet2.Fields[a].FieldName).text :=ClientDataSet2.Fields[a].text;
qyCustN.Post;
ClientDataSet2.Next;
end; 问题很奇怪,有的可以复制,有的就不可以。查不出错误在哪里?
HeadData :Variant;
An,a :Integer;
begin
inherited;
HeadData :=null;
HeadData :=VarArrayCreate([0,qyCust.FieldCount -1],varVariant);
for an :=0 to qyCust.FieldCount -1 do
HeadData[An] :=qyCust.Fields[an].Value;
ClientDataSet1.Data :=qyCustMx.Data;
ClientDataSet2.Data :=qyCustN.Data;
if (qyCust.ChangeCount >0) or (qyCustN.ChangeCount>0) or (qyCustMx.ChangeCount>0) then
begin
an :=Application.MessageBox('',' ', mb_YesNocancel+mb_IconQuestion+mb_DefButton2);
if an=idyes then
begin
PostData;
end; IF An=IdNo Then
Begin
qyCust.CancelUpdates;
qyCustMx.CancelUpdates;
End;
IF An=IdCancel Then exit;
end; qyCust.Insert;
for an :=0 to qyCust.FieldCount -1 do if (qyCust.Fields[An].IsNull) and (qyCust.Fields[an].FullName<>'docid') then
//qyCust.Edit;
qyCust.Fields[an].Value :=HeadData[an];
qyCust.FieldByName('DocId').asstring :='';
HeadData :=null;
qyCustMx.Active:=False;
changeSql('select * from '+DetailTable+' Where DocId='+#39+qyCust.FieldByname('DocId').AsString+#39+' '+DetailSortStr,qyCustMx);
qyCustMx.Active:=True;
qyCustMx.Last; ClientDataSet1.First;
While Not ClientDataSet1.Eof Do
Begin
qyCustMx.append;
For A:=0 to ClientDataSet1.FieldCount-1 do
qyCustMx.fieldByname(ClientDataSet1.fields[a].fieldName).text:=ClientDataSet1.fields[a].text;
qyCustMx.post;
ClientDataSet1.next;
End; qyCustN.Active :=False;
changeSql('select * from EvaN Where DocId='+#39+qyCust.FieldByname('DocId').AsString+#39+' '+DetailSortStr,qyCustN);
qyCustN.Active:=True;
qyCustN.Last;
// getmaxDetailLine1;
ClientDataSet2.First;
while not ClientDataSet2.eof do
begin
qyCustN.Append;
for a :=0 to ClientDataSet2.FieldCount -1 do
qyCustN.FieldByName(ClientDataSet2.Fields[a].FieldName).text :=ClientDataSet2.Fields[a].text;
qyCustN.Post;
ClientDataSet2.Next;
end; 问题很奇怪,有的可以复制,有的就不可以。查不出错误在哪里?
添加:先主表后从表就可以了