Fórum inner join #279221

27/04/2005

0

ESTOU USANDO O CÓDIGO ABAIXO PARA SELECIONAR REGISTROS EM UMA TBL
MESTRE-DETALHE POREM, ELE SÓ RETORNA RESULTADOS QUANDO HÁ, NA TBL
DETALHE ALGUM REGISTRO...
COMO POSSO FAZER PARA QUE ELE MOSTRE TODOS OS REGISTROS INDEPENDENTE
DE QUE HAJA OU NÃO REGISTROS NA TBL DETALHE?
DEVO USAR INNER JOIN? COMO USÁ-LO? POR FAVOR ME DIGAM OMO APLICAR
ISSO NO MEU CASO!!
DESDE JÁ MEU MUITO OBRIGADO!



Case rgpOpcoes.ItemIndex Of
0:
Begin
If (EdtPesquisa.Text <> ´´) Then

Begin
DMProcINSS.QryPesquisa.Close;
DMProcINSS.QryPesquisa.SQL.Clear;
DMProcINSS.QryPesquisa.SQL.Add(´SELECT * FROM TblCadProcesso, TblProcAdv, TblMovimentacao ´);
DMProcINSS.QryPesquisa.SQL.Add(´WHERE TblCadProcesso.AUTOR LIKE ´´+EdtPesquisa.Text+´¬´ ´);
DMProcINSS.QryPesquisa.SQL.Add(´AND TblCadProcesso.NUMPROCESSO = TblMovimentacao.NUMPROCESSO ´);
DMProcINSS.QryPesquisa.SQL.Add(´AND TblCadProcesso.COD_PROC_ADV = TblProcAdv.CODPROCADV ´);
DMProcINSS.QryPesquisa.SQL.Add(´AND DATACADASTRO BETWEEN :Data1´);
DMProcINSS.QryPesquisa.SQL.Add(´AND :Data2´);
DMProcINSS.QryPesquisa.parambyname(´Data1´).Value := StrToDate(Data1.Text);
DMProcINSS.QryPesquisa.parambyname(´Data2´).Value := StrToDate(Data2.Text);
DMProcINSS.QryPesquisa.SQL.Add(´ORDER BY DATACADASTRO´);
DMProcINSS.QryPesquisa.Open;
DMProcINSS.QryPesquisa.Refresh;
ContarPesquisa.Caption := IntToStr(DMProcINSS.QryPesquisa.RecordCount);
If DMProcINSS.QryPesquisa.IsEmpty Then
ShowMessage(´Nada foi Encontrado de Acordo com a sua Pesquisa´);
EdtPesquisa.SetFocus;
End
Else
ShowMessage(´Estão faltando parâmetros para a Pesquisa´);
End;


Alexandretavares

Alexandretavares

Responder

Posts

27/04/2005

Raserafim

alexandre, você deverá usar o LEFT JOIN, assim vc estará dizendo que quer todos os registros do lado esquerdo do relacionamento e apenas os que tenham correspondência do lado direito. tente o seguinte:
...
DMProcINSS.QryPesquisa.SQL.Add(´SELECT * FROM TblCadProcesso LEFT JOIN TblMovimentacao ON TblCadProcesso.NUMPROCESSO = TblMovimentacao.NUMPROCESSO LEFT JOIN TblProcAdv ON TblCadProcesso.COD_PROC_ADV = TblProcAdv.CODPROCADV ´); 
DMProcINSS.QryPesquisa.SQL.Add(´WHERE TblCadProcesso.AUTOR LIKE "´+EdtPesquisa.Text+´¬" ´); 
DMProcINSS.QryPesquisa.SQL.Add(´AND DATACADASTRO BETWEEN :Data1´); 
DMProcINSS.QryPesquisa.SQL.Add(´AND :Data2´);
...


pelo que entendi o mestre é o TblCadProcesso, fiz o exemplo assumindo assim, caso não seja tem que trocar as posições.


Responder

Gostei + 0

28/04/2005

Alexandretavares

Muito Obrigado pela dica ´raserafim´ !


Responder

Gostei + 0

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

Aceitar