假设ADOQUERY1、ADOQUERY2、ADOQUERY3各有n1、n2、n3个字段,那么首先在ClientDataSet中创建n1+n2+n3个字段(可都为字符串类型)。然后:ADOQUERY1.First; ADOQUERY2.First; ADOQUERY3.First; while not ADOQUERYn.Eof do //自己想办法判断哪个ADOQUERY记录最多 begin ClientDataSet.Append; if not ADOQUER1.Eof then for I := 0 to n1-1 do ClientDataSet.Fields[I].AsString := ADOQUER1.Fields[I].AsString; if not ADOQUER2.Eof then for I := 0 to n2-1 do ClientDataSet.Fields[n1+I].AsString := ADOQUER2.Fields[I].AsString; if not ADOQUER3.Eof then for I := 0 to n3-1 do ClientDataSet.Fields[n1+n2+I].AsString := ADOQUER3.Fields[I].AsString; ClientDataSet.Post; ADOQUER1.Next; ADOQUER2.Next; ADOQUER3.Next; end; 最后用ClientDataSet作报表。————————————————————————————————— 宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。 —————————————————————————————————
2、用FastReport可以实现。
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
ADOQUERY2.First;
ADOQUERY3.First;
while not ADOQUERYn.Eof do //自己想办法判断哪个ADOQUERY记录最多
begin
ClientDataSet.Append;
if not ADOQUER1.Eof then for I := 0 to n1-1 do
ClientDataSet.Fields[I].AsString := ADOQUER1.Fields[I].AsString;
if not ADOQUER2.Eof then for I := 0 to n2-1 do
ClientDataSet.Fields[n1+I].AsString := ADOQUER2.Fields[I].AsString;
if not ADOQUER3.Eof then for I := 0 to n3-1 do
ClientDataSet.Fields[n1+n2+I].AsString := ADOQUER3.Fields[I].AsString;
ClientDataSet.Post;
ADOQUER1.Next;
ADOQUER2.Next;
ADOQUER3.Next;
end;
最后用ClientDataSet作报表。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————