Erro QRYADO

Delphi

12/05/2011

Alguem se puder me ajudar...

Fiz este select no delphi mas ele só me traz a primeira linha, não retorna a segunda linha.

procedure TfrmRelatParcial.BuscaDados; begin vCont := 1; BuscaQuantidadeLinha;       with dtm.DataModule1.Qry_Dados_Linhas do       begin         Close;         SQL.Clear;   while vCont <= vQtdeLinha do    begin         SQL.Add('Select ');         SQL.Add('PSG.PSG_ID,');         SQL.Add('TT.TT_LONGDESC CARTÃO,');         SQL.Add('CSE.CS_LABEL LABEL,');         SQL.Add('PSG.PSG_FIRSTNAME NOME_PSG,');         SQL.Add('LM.LNM_ID ID_LINHA,');         SQL.Add('LM.LNM_DESCSHORT  LINHA,');         SQL.Add('CT.CSTT_VLDSTADATE CRIADO,');         SQL.Add('CT.CSTT_VLDENDDATE VALIDADE');         SQL.Add('FROM');         SQL.Add('PASSENGERS PSG,');         SQL.Add('CARDSTOCKXTICKETTYPES CT,');         SQL.Add('LINEMT LM,');         SQL.Add('TICKETTYPES TT,');         SQL.Add('CARDSTOCKEXTRA CSE,');         SQL.Add('CARDSTOCKXPASSENGERS CP,');         SQL.Add('PSGTCKTTYPESXLINEMT PTL,');         SQL.Add('PASSENGERSXTICKETTYPES PT');         SQL.Add('WHERE');         SQL.Add('PSG.PSG_ID = CP.PSG_ID');         SQL.Add('AND     CSE.CS_SNR = CP.CS_SNR');         SQL.Add('AND     CSE.CS_SNR = CT.CS_SNR');         SQL.Add('AND     CP.CSP_STATUS = ''A''');         SQL.Add('AND     PSG.PSG_ID = PT.PSG_ID');         SQL.Add('AND     TT.TT_CODE = PT.TT_CODE');         SQL.Add('AND     PT.PSG_ID = PTL.PSG_ID');         SQL.Add('AND     PT.PTT_SEQNBR = PTL.PTT_SEQNBR');         SQL.Add('AND     PT.TT_CODE = PTL.TT_CODE');         SQL.Add('AND     PTL.LNM_ID = LM.LNM_ID');         SQL.Add('AND     CSE.CS_LABEL =' + edtNumCartao.Text +'');         OPEN;           vCodLinha := FieldByName('ID_LINHA').AsInteger;         vCont := vCont + 1;         NEXT;       end;    end; end;

POR FAVOR, NÃO SE PREOCUPEM COM AS VARIAVEIS, POIS ELAS ESTÃO FUNCIONANDO;
ATT

Flavio Silva

Flavio Silva

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

12/05/2011

Me explica o que vc quer fazer, pois não consegui entender porque vc abre Query e depois da um Next e depois retorna ao loop e abre novamente e manda pegar o próximo...não entendi o que vc quer fazer.
Eu deduzo que vc quira fazer isto:
begin
  vCont := 1;
  BuscaQuantidadeLinha;
  with dtm.DataModule1.Qry_Dados_Linhas do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select ');
    SQL.Add('PSG.PSG_ID,');
    { ... }

    Open;
    First;

    while (vCont <= vQtdeLinha) or (not Eof) do
    begin
      vCodLinha := FieldByName('ID_LINHA').AsInteger;
      vCont := vCont + 1;

      Next;
    end;
  end;
end;


Espero ter colaborado.
GOSTEI 0
POSTAR