請幫忙看一下,爲什麽程序不能執行到這一步?Result:=false;function TfmAdd.QuerySubTypeToListBox:boolean;
var
   cur_trade,pre_trade: string;
   i:integer;
begin
cur_trade:='';
pre_trade:='';
while not adoqry_Sales.Eof do
begin
  cur_trade:=LeftBStr(GetSeparateString(adoqry_Sales.FieldByName('txmsg').AsString, '|', 40, 6), 4);
  if cur_trade<>'9972'  then
  begin
    if  (pre_trade='') then
    begin
      adoqry_SubType.Close;
      adoqry_SubType.SQL.Clear;
      adoqry_SubType.SQL.Add('SELECT DISTINCT BS_Buy, BS_Send FROM BS_TransTrade WHERE :P_Date BETWEEN BS_Start AND BS_End AND BS_Trade = :P_Trade AND BS_Type=:P_type AND :P_time BETWEEN BS_stime and  BS_etime');
      adoqry_SubType.Parameters.ParamByName('P_Date').DataType := ftDate;
      adoqry_SubType.Parameters.ParamByName('P_Date').Value := Date;
      adoqry_SubType.Parameters.ParamByName('P_Trade').Value :=cur_trade;
      adoqry_SubType.Parameters.ParamByName('P_time').DataType:=ftInteger;
      adoqry_SubType.Parameters.ParamByName('P_time').Value:=strtoint(adoqry_Sales.FieldValues['txtime']);      if g_bMultiTrade then
      begin
        adoqry_SubType.Parameters.ParamByName('P_Type').Value :=1 ;
      end else
      begin
        adoqry_SubType.Parameters.ParamByName('P_Type').Value := 0;
      end;      adoqry_SubType.Open;
      setlength(cur_bs,adoqry_subtype.RecordCount);
      i:=0;
      while not adoqry_SubType.Eof do
      begin
        BSAdd(adoqry_SubType.FieldByName('BS_Buy').AsInteger, adoqry_SubType.FieldByName('BS_Send').AsInteger ,strtoint(cur_trade),cur_bs[i]);
        adoqry_SubType.Next;
        i:=i+1;
      end;
      pre_trade:=cur_trade;
    end else
    begin
      if (pre_trade <> cur_trade) then
      begin
          Result:=false;  //爲什麽程序不能執行到這一步?      end;
    end;  end;
  adoqry_Sales.Next;
 end;
  ScaleSorting(Cur_BS);
  Result:=true;
end;