先查询一次,有EN_DEAL_BALANCE_20090113、EN_DEAL_BALANCE_20090114、EN_DEAL_BALANCE_20090115等字段,点击dbgrid的EN_DEAL_BALANCE_20090113列标题排序后再查询报错(注:每次查询会根据查询结果生成不同的字段,第二次查询改变了查询条件,查询结果应该是没有EN_DEAL_BALANCE_20090113这个字段的,如果点20090114排序则报20090114 not found,如果第二次的查询结果有这个字段则不报错):
---------------------------
错误
---------------------------
系统发生异常错误
执行查询操作异常:qryHGCircs: Field 'EN_DEAL_BALANCE_20090113' not foundSQL: Select l_fund_id, vc_fund_name, en_total_balance from (select x.l_fund_id,min(y.vc_fund_name) vc_fund_name,0 en_total_balance from (select a.l_fund_id, a.l_redeem_liquidate, sum(decode(a.c_entrust_direction,'5',-1,'6',1)*a.en_deal_balance) en_deal_balance from thgregister a where a.c_redeal_flag = '0' and a.l_fund_id in (4) group by a.l_fund_id, a.l_redeem_liquidate) x, tfundinfo y where x.l_fund_id = y.l_fund_id group by x.l_fund_id) where 1 = 1 and l_fund_id IN (4)
---------------------------
确定
---------------------------
或
用for to do 循环来查找哪一列是被单击列排序的,然后清除排序:
for i:=0 to TDBGrdEh.Columns.Count-1 do
if TDBGrdEh.Columns[i].Title.SortMarker<>smNoneEh then //smNideEh为不排序
TDBGrdEh.Columns[0].Title.SortMarker:=smNoneEh;