因为字段太多,并没有按您的提示来。我通过sql语句的循环拼接来完成的
qryds.CommandText := 'select * from FACILITY_DETAIL WHERE bill_type = 0 AND bill_id='+id;
qryds.open;
qryds.First;
qryin.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
while not qryds.Eof do
begin
value:= IntToStr(parm.GetNewPK('FACILITY_DETAIL'));
isql:='insert into FACILITY_DETAIL (id,bill_id';
vsql:='values ('+value+','+nid;
for i:=2 to 37 do
begin
if qryds.Fields.AsString <> '' then
begin
if (i=5)or(i=7)or(i=8)or(i=9)or(i=10)or(i=19)or(i=20)or(i=22)or(i=23)or(i=29) then
begin
isql:=isql+','+qryds.Fields.FieldName+'';
vsql:=vsql+','''+qryds.Fields.AsString+'''';
end
else begin
if(i=3)or(i=11)or(i=12)or(i=26)or(i=31)or(i=32)or(i=33)or(i=34)or(i=35)or(i=36) then
begin
isql:=isql+','+qryds.Fields.FieldName+'';
vsql:=vsql+',0-'+qryds.Fields.AsString+'';
end
else
begin
isql:=isql+','+qryds.Fields.FieldName+'';
vsql:=vsql+','+qryds.Fields.AsString+'';
end;
end;
end;
end;
qryin.CommandText:= isql+') '+vsql+')';
qryin.Execute;
qryds.Next;
end;
因为并不清楚数据集可以通过索引来定位字段名和字段值,所以一直走弯路,多谢贾经理提醒。 |