|
将QUERY查出的数据放入到一个自定义数据集中;再将自定义数据通过datagrid展现。但是总是有两个空行出现,请帮忙看看代码是哪里出的问题?空行现象如图
query代码:
Query.Close;
Query.CommandText:='';
sql:=
'select distinct H.Day,H.PZ_ID, V.sumjje,Z.ZY,f.finished from'
+' (select Day,PZ_ID from voucher_head'
+' where pz_id in'
+' (select pz_id from voucher where kmdm in'
+' (select subject_id from subject_list '
+' where payment=''1'''+GetSubject_ID(DataSetSubject)
+ IsDateLegitimacy(GetStatDate(DataSetDateSelect),GetEndDate(DataSetDateSelect))
+' ) H '
+' left join '
+' (select PZ_ID,isnull(Sum(JJE),0) as sumjje '
+' from voucher group by pz_id) V '
+' on V.PZ_ID=H.PZ_ID '
+' left join'
+' (select ZY ,PZ_ID from voucher where flh=''01'') Z'
+' on V.PZ_ID=Z.PZ_ID';
×××××××××××××××××××××××××如果注释掉以下代码就没空行了,但是在SQLServer查询分析器中执行全部sql也没有空行出现
if CheckBoxShowUnDecompose.Checked then
sql := sql + ' right join (select distinct PZ_ID ,0 as finished'
+' from voucher where ( finished=0 or finished is null )'
+' and pz_id not in (select distinct PZ_ID from voucher where finished=''1'' '
+' and kmdm in (select subject_id from subject_list where Payment=''1'') )'
+' and kmdm in (select subject_id from subject_list where Payment=''1'')) F'
+' ON H.PZ_ID=F.PZ_ID'
else
sql := sql + ' right join (select distinct PZ_ID ,1 as finished'
+' from voucher where finished=''1'''
+' and kmdm in (select subject_id from subject_list where Payment=''1'')'
+' union select distinct PZ_ID ,0 as finished from voucher where ( finished=0 or finished is null )'
+' and pz_id not in (select distinct PZ_ID from voucher where finished=''1'' '
+' and kmdm in (select subject_id from subject_list where Payment=''1'') )'
+' and kmdm in (select subject_id from subject_list where Payment=''1'')) F'
+' ON H.PZ_ID=F.PZ_ID';
//将QUERY中的数据导入到自定义数据集中的代码如下:
procedure TMAINFORM.SetDataSetValue(DataSet:TDataSet;Query:TQuery);
var lFieldName:String;
I:Integer;
begin
//将query的数据倒入到数据集里
DataSet.Open;
DataSet.EmptyDataSet;
Query.Open;
Query.First;
while not Query.Eof do
begin
DataSet.Append;
for I:= 0 to Query.FieldCount-1 do
begin
lFieldName := Query.Fields[I].FieldName;
DataSet.FieldByName(lFieldName).assign(Query.FieldByName(lFieldName)) ;
//DataSet.FieldByName(lFieldName).assign:=
//Query.FieldByName(lFieldName).assign ;
end;
DataSet.Post;
Query.Next;
end;
DataSet.ApplyUpdates;
end;
|
|