Fórum Relacionar dados entre tabelas #397433
17/03/2011
0
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
Curtir tópico
+ 0Posts
17/03/2011
Wilson Junior
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.
Gostei + 0
17/03/2011
Marcos Barbosa
'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;
Gostei + 0
17/03/2011
Wilson Junior
' INNER
Espero ter colaborado.
Gostei + 0
18/03/2011
Marcos Barbosa
Agora seguinte, no qreport, como faço para pegar o nome ?
Gostei + 0
21/03/2011
Marcos Barbosa
Gostei + 0
21/03/2011
Wilson Junior
Abraços.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)