Usuário com melhor resposta
Consulta Simples?

Pergunta
-
Pessoal tenho as seguintes tabelas
Pai
pai_id pai_nome
1 Fujika Maria Nakombi
2 Fujika Maria Namoto
Filho
fil_id fil_nome pai_id
1 Pedro K Beludo 1
2 Chico do Morro 2
3 Leonardo da Quinze 1
O que eu gostaria é retornar a seguinte consulta:
pai filhos
Fujika Maria Nakombi Pedro K Beludo / Leonardo da Quinze
Fujika Maria Namoto Chico do Morro
Obrigado.
terça-feira, 3 de junho de 2008 12:58
Respostas
-
terça-feira, 3 de junho de 2008 13:32
Todas as Respostas
-
Carlos,
Adicione um módulo no access e adicione o seguinte código:
Code SnippetOption Compare Database
Option ExplicitPublic Function ListaFilhos(lngPAI_ID As Long) As String
Dim cnnDB As ADODB.Connection
Dim rstDados As ADODB.Recordset
Dim strFilhos As String' Get connection to current database.
Set cnnDB = CurrentProject.Connection
Set rstDados = New ADODB.Recordset
rstDados.Open "SELECT * FROM FILHO WHERE PAI_ID = " & lngPAI_ID, cnnDB
strFilhos = ""
Do While Not rstDados.EOF()
strFilhos = strFilhos & " / " & rstDados("fil_nome")
rstDados.MoveNext
Loop'liberar objetos
rstDados.Close
Set rstDados = Nothing
cnnDB.Close
Set cnnDB = Nothing
ListaFilhos = strFilhos
End FunctionDepois, Adicione a seguinte consulta:
Code SnippetSELECT Pai.pai_id, Pai.pai_nome, ListaFilhos([pai_id]) AS NomeFilhos
FROM Pai;Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.terça-feira, 3 de junho de 2008 13:17 -
Era exatamente o que eu estava precisando muito obrigado.
terça-feira, 3 de junho de 2008 13:31 -
terça-feira, 3 de junho de 2008 13:32
-
Obrigado pela ajuda, no entanto, tenho outro problema a função que está contida no módulo só funciona dentro do Access, ou seja, meu sistema desenvolvido em C# que acessa o mesmo não tem condições de executar a consulta, a mesma gera um erro dizendo que não encontrou a função, pelo que pesquisei na internet não é possível mesmo executar uma função fora do Access o que torna essa solução ineficiente.
Gostaria de saber o que você me sugere fazer, obrigado.
quinta-feira, 5 de junho de 2008 14:00