MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Lidando com Sql com tabelas vinculadas

    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 8/6/2011, 22:03

    Tenho um form que utiliza dados de duas tabelas vinculadas.. Um-para-Muitos
    Tenho este sql de uma das tabelas..

    strSQLVisitantes = "SELECT * FROM Visitantes WHERE IDVisitante = " & Me!IDVisitante & ";"

    Como adicionar a outra tabela, para que eu mostre os dados nos campos condizentes com os vículos?

    Outra Tabela: Detentos
    Primary Key: ID

    ID da tblDetentos relacionado com campo Detento na TblVisitantes
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 9/6/2011, 16:51

    A tabela é Visitantes ou tblVisitantes?
    A tabela é Detentos ou tblDetentos?
    strSQLVisitantes = "SELECT * FROM Visitantes LEFT JOIN Detentos ON Visitantes.IDVisitante=Detentos.ID WHERE IDVisitante = " & Me!IDVisitante & ";"
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 9/6/2011, 20:22

    Tabela : Detentos e Visitantes...
    1 Detento para Vários Visitantes...
    O que preciso... quando cadastro um Visitante ele fica vinculado ao Detentos

    Exemplo:
    Detento
    ID: 32
    Nome: Jose da Silva
    Ala: A
    Cela: 1

    quando cadastro o Visitante XXXXXXXX
    A tabela Visitantes fica assim
    ID Visitante: 01
    Detento: 32 'Campo Numerico na relação um para muitos do Vínculo
    Visitante: XXXXXXXXXXXX
    Demais dados......

    Então estando vinculados.. tenho o form que cadastro o Visitante.. e nele Mostro a qual Detento (Nome, Cela e Ala) este visitante esta relacionado..
    Assim Se consulto os dados do Visitante XXXXXXX
    no form aparece o Nome,Ala e Cela do detento relacionado...

    * Isto eu tenho pronto utilizando consultas do Access.. mas estou modificando todo o meu sistema para trabalhar com consultas em SQL, visando a migracao para um ambiente em red, com fors desvinculados e tal...

    Resumindo Caro alexandre.. se me puder passar uma SQL genérica para que eu tenha ideia de como fazer isso...
    Voce criaria uma SQL com nomes ficticios.. Tipo.. SuaTabela.... Seu Campo... SuaIDna TabelaX etc...

    E se não for demais.... Preciso filtrar sempre os Detendos por Unidade de origem e Regime... Para que mostre apenas os Visitantes vinculados a Detentos em um referido regime, pois quando ele e posto em liberdade, o Visitante nao apareceria mais na consulta..

    Entendeu Amigão??

    Espero ter sido claro..

    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 9/6/2011, 21:18

    Novamente, Hary

    Então a SQL será: strSQLVisitantes = "SELECT * FROM Detentos LEFT JOIN Visitantes ON Detentos.ID=Visitantes.Detento WHERE IDVisitante = " & Me!IDVisitante & ";"

    Genericamente deve ser:
    SELECT
    DISTINCT - utilizada para não repetir os campos da consulta
    DISTINCTROW - utilizada para não repetir os campos da(s) tabela(s)
    CampoA, ...
    Sum(CampoX) - utilizando funções de agregação, ter-se-á que agrupar os campos que não envolvam estas funções
    Count(CampoY) - idem
    FROM
    Tabela1
    LEFT ou RIGHT ou INNER - Tipo de relacionamento entre as tabelas
    Tabela2
    WHERE
    CondiçãoFiltro
    GROUP BY
    CampoAgrupado
    HAVING
    CondiçãoFiltroApósAgrupamento

    Isto foi de memória. Quando preciso algo mais elaborado, consulto ajuda do SQL e experimento para verificar o resultado.
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 9/6/2011, 21:57

    Caro Alexandre, em tendo um tempo, veja este código e me fale se atende a meu proposito..
    https://www.dropbox.com/s/z9zqdle7sivmkj5/contactenar.zip
    Grato.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 9/6/2011, 22:47

    Estude aqui
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 10:27

    Bom dia Alexandre... link não abre

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 10/6/2011, 11:38

    Bom dia, Haryr
    www.blueclaw-db.com/accessquerysql
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 11:53

    Caro Alexandre..Vou ler o artigo. Não sei se consegue, mas posso lhe enviar um sql de uma consulta Access, para que me transforme em VB..?

    Como te disse todo o meu sistema é baseado em consultas nativas do Access.. se me transformasse uma delas... seria ótimo para que eu tivesse uma base para as demais.. isso me facilitaria a compreensão..

    Se puder me avise que posto o Sql da consulta Access..

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 10/6/2011, 14:59

    Hary,

    Pode ver a consulta em modo SQL.
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 15:01

    Mas ao pegar este Sql contido na consulta Acces.. serve para aplicar em VB? é isso que quero...
    Saudações
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 10/6/2011, 15:09

    O que pretende fazer?
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 15:13

    Eu tenho uma consulta... CnsVisitante.. Baseada em duas tabelas vinculadas (um para muitos)..
    Tabela Pai: Detentos
    Tabela Filho: Visitantes:
    Esta consulta me lista todos os visitante com os detentos relacionado aos visitantes, com filtros em Detentos nos campos Regime e Unidade De origem..

    ou seja.. a consulta me mostra:
    Todos os visitantes para um detento Na Unidade X no Regime X

    Pergunto,, esse sql da consulta Acces,,, que ja tenho pronto, da pra usar em VB?

    Usarei isso para o Form Visitantes, onde mostrarei o Visitante e o Detento a ele relacionado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 10/6/2011, 16:02

    Sendo para ter como origem do formulário, pode utilizar NomeFormulario.Recordsource=InstrucaoSQL
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 17:15

    O form e desvinculado... Estou conseguindo isso usando dois recordset's.... Queria usar apenas 1
    Assim consigo o resltado.. mas creio que não é o certo:
    Na combo uso a consulta Vinculada (Detentos e Visitante) Apos Atualizar jogo os valores: ID (Detentos) e IDVisitantes (Visitantes) em caixa texto no Fomr

    strSQLVisitantes = "SELECT * FROM Visitantes WHERE IDVisitante = " & Me!IDVisitante & ";"
    strSQLDetentos = "SELECT * FROM Detentos WHERE ID = " & Me!txtIDDetento & ";"
    Set rs = db.OpenRecordset(strSQLVisitantes)
    Set rs1 = db.OpenRecordset(strSQLDetentos)

    Me.txtVisitante = rs![Visitante]
    Me.txtEndereco = rs![Endereço]
    Me.txtBairro = rs![Bairro]
    Me.txtEstado = rs![Estado]
    Me.txtCidade = rs![Cidade]
    Me.txtDocumentos = rs![RG/CPF]
    Me.TxtTelResidencial = rs![Telefone Residencial]
    Me.TxtDetento = rs1![Nome] & Space(1) & rs1![Sobrenome]
    Me.txtAla = rs1![Nível]
    Me.txtCela = rs1![Cela]
    Me.txtAnot = rs![Anotações]
    Me.txtRelacao = rs![Relação de Tutor]
    Me.txtSelecao = rs![BloquearVisitante]
    Me.CaminhoFotoRosto = rs![CaminhoFoto]
    Me.CaminhoDigital = rs![CaminhoDigital]


    Minha lógica foi meio.. digamos nada convencional...
    Usei dois recodsets conseguindo com a comparacao dos campos preenchidos pela atualização da Cbo...

    Mas como as tabelas são viculadas creio que se pode fazer isso usando apenas um recordset... utilizando o Left Join,,,

    Estou Certo???
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 10/6/2011, 17:31

    Então, já experimentou
    "SELECT * FROM Detentos LEFT JOIN Visitantes ON Detentos.ID=Visitantes.Detento WHERE IDVisitante = " & Me!IDVisitante & ";" ?
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 10/6/2011, 23:34

    Sub ou Função não definida


    strSQLVisitantes "SELECT * FROM Detentos LEFT JOIN Visitantes ON Detentos.ID=Visitantes.Detento WHERE IDVisitante = " & Me!IDVisitante & ";"
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 11/6/2011, 00:04

    Apliquei a contrária, que havia postado anteriormente a esta.. so que atualiza apenas alguns campos.. os em vermelho nao recebe os valores


    Dim db As DAO.Database
    Dim ws As DAO.Workspace
    Dim rs, As DAO.Recordset
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(CurrentProject.Path & "\Syspen_Be.accdb", False, False, "MS Access;PWD=senha")

    strSQLVisitantes = "SELECT * FROM Visitantes LEFT JOIN Detentos ON Visitantes.IDVisitante=Detentos.ID WHERE IDVisitante = " & Me!IDVisitante & ";"

    Set rs = db.OpenRecordset(strSQLVisitantes)

    Me.txtVisitante = rs![Visitante]
    Me.txtEndereco = rs![Endereço]

    Me.txtBairro = rs![Bairro]
    Me.txtEstado = rs![Estado]
    Me.txtCidade = rs![Cidade]
    Me.txtDocumentos = rs![RG / CPF]
    Me.TxtTelResidencial = rs![Telefone Residencial]
    Me.TxtDetento = rs![Nome] & Space(1) & rs1![Sobrenome] 'Esse e valor da tabela detentos
    Me.txtAla = rs![Nível]'Esse e valor da tabela detentos
    Me.txtCela = rs![Cela]'Esse e valor da tabela detentos
    Me.txtAnot = rs![Anotações]
    Me.txtRelacao = rs![Relação de Tutor]
    Me.txtSelecao = rs![BloquearVisitante]
    Me.CaminhoFotoRosto = rs![CaminhoFoto]
    Me.CaminhoDigital = rs![CaminhoDigital]
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 11/6/2011, 00:27

    Testei algo aqui e percebi que os campos em vermelho nao aparecem porque nas duas tabelas tem campos com o mesmo nome

    Endereço para Visitante
    Endereço para Detntos
    Assim nao exibe.. so exibe se eu modificar um dos nomes na tabela
    Endereço1 e endereço

    Esperarei voce ler isto.. leia os últimos 3 post's para entender
    Obs.. Ja consegui relacionar o Detento com o visitante... Mudei o campo em vermelho:

    strSQLVisitantes = "SELECT * FROM Visitantes LEFT JOIN Detentos ON Visitantes.Detento=Detentos.ID WHERE IDVisitante = " & Me!IDVisitante & ";"
    A que fez estava assim:
    strSQLVisitantes = "SELECT * FROM Visitantes LEFT JOIN Detentos ON Visitantes.IDVisitante=Detentos.ID WHERE IDVisitante = " & Me!IDVisitante & ";"



    O problema agora é apenas ler os valores quando campos das duas tabelas são de nomes iguais...

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 11/6/2011, 09:52

    Pois é, anda com retalhos e mais retahos de código e depois quem fica retalhado somos nós.

    Eu não vi o formulário. Fui levado a pensar que terá um controlo chamado IDVisitante. Se não tiver dá erro.

    Nas consultas, quando existir campos com nomes iguais, têm de ser precedidos pelo nome da tabela a que pertencem.
    Neste caso, tente
    Me.txtEstado = rs![NomeTabela.Estado]
    etc.
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 11/6/2011, 11:36

    Amigão.. tenho o controle ID VIsitante sim..

    Neste form. Apesar de a tabela principal ser a DETENTOS... neste form eu estou pesquisando o Visitante...

    da tabela Detentos.. uso apenas 4 campos, são ele: Nome &Sobrenome, Ala e Cela..

    Agora.. com a alteração que fiz.. creio que esta certo .. porque?

    Porque os campos relacionados nas tabelas são justamente estes:
    ON Visitantes.IDVisitante=Detentos'Pelo que entendi ele fala aqui que a Vai puxar o Detento que Tiver Relacionado no Campo Detento, na linha onde estiver a linha IDVisitante.. Assim:
    Campo ID Visitante (tabela Visitante) = 10
    Campo ID (Tabela Detento) = 15
    Campo relacionado Detento (Este campo é a ID do Dentento na Tabela Visitante) =15 - ON Visitantes.IDVisitante=Detentos ou seja Em Visitante quando 10 = 15 'Significando que vai puxar o Detento 15 relacionado com o visitante 10.... Creio que esta certo, pois na pesquisa funcionou perfeitamente.

    Quando coloquei este código:

    strSQLVisitantes = "SELECT * FROM Visitantes LEFT JOIN Detentos ON Visitantes.
    Detento
    =Detentos.ID WHERE IDVisitante = " & Me!IDVisitante & ";"

    Ele puxou um Detento que tem A mesma ID do VIsitante...

    Por isso o que modifiquei deu certo



    So a questao dos campos com mesmo nome não deu certo...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Alexandre Neves 11/6/2011, 14:02

    1º Agora diz que tem o controlo ID Visitante. Recordo-lhe que, antes, se referia ao controlo IDVisitante (sem espaço)!

    2º Quanto aos campos com mesmo nome, é melhor enumerá-los todos e redefinindo o nome
    Para tal, mencione
    SELECT Tabela1.CampoX as CampoX1, Tabela2.CampoX as CampoX2 ...
    Desta forma, o CampoX da tabela1 é designado, na consulta, de campox1 e o campox da tabela2 é designado, na consulta, de campox2
    avatar
    Convidado
    Convidado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Convidado 11/6/2011, 15:25

    Entendi Amigão...
    Verei qual a melhor solucao...
    Como estou mexendo em todo o Bd creio que vou mudar na propria tabela...
    EnderecoDet (para campo na tabela detento)
    EnderecoVisit (para campo na tabela visitante)

    Grato pela Ajuda Amigo

    Tenha um ótimo final de semana
    Saudações

    Conteúdo patrocinado


    [Resolvido]Lidando com Sql com tabelas vinculadas Empty Re: [Resolvido]Lidando com Sql com tabelas vinculadas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 17:56