Fórum Relacionar dados entre tabelas #397433

17/03/2011

0

Seguinte, tenho um relatório no Quickrep, que deverá ficar assim:

Paciente                Data / Hora
Joao                     01/01/2011 08:00
Maria                    05/03/2011 09:00
Jose                     06/05/2011 10:00
Pedro                   03/02/2010 11:00

Tenho 2 tabelas assim:
exames
id
idpaciente
data
hora
unidade

pacientes
id
nome
idade

Para gerar o relatório eu tenho condições para escolher a unidade e período de datas, faço o filtro que já está funcionando, mas pego os dados da tabela exames.
Na tabela exames eu não guardo o nome do paciente e sim o id dele, como faço para sair o nome e não o id do paciente.

Abaixo segue o código de como estou fazendo:
begin  // 0
    idorigem := DBLC_EscolhaUnidade.KeyValue; // PEGO O VALOR DE ORIGEMEXP

    // SELECIONO REGISTROS NA TABELA EXAMES QUE SEJAM DA UNIDADE SELECIONADA

    DM.CDS_REL_UND_SSA.Active := False;

    DM.QR_REL_UND_SSA.Close;
    DM.QR_REL_UND_SSA.SQL.Clear;
    DM.QR_REL_UND_SSA.SQL.Add('SELECT * FROM EXAMES WHERE ORIGEMEXP =:UNIDADE');
    DM.QR_REL_UND_SSA.SQL.Add('AND DATA BETWEEN :DATA_INI AND :DATA_FIM');
    DM.QR_REL_UND_SSA.SQL.Add('ORDER BY DATA, HORA');

    // PASSO OS PARAMENTROS
    DM.QR_REL_UND_SSA.Params.ParamByName('UNIDADE').Value := idorigem;
    DM.QR_REL_UND_SSA.Params.ParamByName('DATA_INI').Value := FormatDateTime('MM/DD/YYYY', DTP_data_ini.Date);
    DM.QR_REL_UND_SSA.Params.ParamByName('DATA_FIM').Value := FormatDateTime('MM/DD/YYYY', DTP_data_fim.Date);

    DM.QR_REL_UND_SSA.Open;
    DM.CDS_REL_UND_SSA.Active := True;

    QR_unidade_SSA.Preview;

end;   // 0





Marcos Barbosa

Marcos Barbosa

Responder

Posts

17/03/2011

Wilson Junior

Teste isto:
DM.QR_REL_UND_SSA.Close;
DM.QR_REL_UND_SSA.SQL.Text := 
  ' SELECT' +
  '   pac.Nome AS NomePaciente,' +
  '   exa.Data,' +
  '   exa.Hora' +
  ' FROM' +
  '   EXAMES exa' +
  { Caso a sua FK seja NOT NULL, então utilize INNER, caso contrário utilize LEFT OUTER }
//  '     INNER JOIN PACIENTES pac ON (exa.IDPaciente = pac.ID)' +
//  '     LEFT OUTER JOIN PACIENTES pac ON (exa.IDPaciente = pac.ID)' +
  ' WHERE' +
  '   exa.OrigemExp = :UNIDADE' +
  '   AND exa.Data BETWEEN :DATA_INI AND :DATA_FIM' +
  ' ORDER BY' +
  '   exa.Data,' +
  '   exa.Hora';


PS: veja o comentário no meio do código e descomente uma das linhas, conforme a estrutura do seu BD.

Espero ter colaborado.
Responder

Gostei + 0

17/03/2011

Marcos Barbosa

fiz como vc indicou, mas dá o erro:
'token unknown-line 1, column 63 exaINNER'.

    DM.QR_REL_UND_SSA.Close;
    DM.QR_REL_UND_SSA.SQL.Text := 'SELECT pac.NOME As NomePaciente,'+
      'exa.DATA, exa.HORA FROM'+
      'EXAMES exa'+
      'INNER JOIN pacientes pac ON (exa.IDPACIENTE = pac.ID)'+
      'WHERE'+
      ' exa.ORIGEMEXP =:unidade'+
      ' AND exa.DATA BETWEEN :DATA_INI AND DATA_FIM'+
      ' ORDER BY'+
      ' exa.DATA, '+
      ' exa.HORA';

    DM.QR_REL_UND_SSA.Open;

Responder

Gostei + 0

17/03/2011

Wilson Junior

Você não fez como eu indiquei, vc retirou os espaços entre a aspa e o INNER, sendo assim você está concatenando os caracteres, coloque um espaço entre a aspa e o INNER
  ' INNER


Espero ter colaborado.
Responder

Gostei + 0

18/03/2011

Marcos Barbosa

rsrs, verdade, desculpa, pq eu ñ copiei e colei, eu li, entendi o código e digitei, pq acho q assim fica melhor para aprender.
Agora seguinte, no qreport, como faço para pegar o nome ?
Responder

Gostei + 0

21/03/2011

Marcos Barbosa

Wilson, cara muito obrigado pela sua ajuda, já consegui resolver. 
Responder

Gostei + 0

21/03/2011

Wilson Junior

Nem precisa agradecer, estamos aqui sempre para colaborar com os colegas.

Abraços.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar