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


2 participantes

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    avatar
    lpdias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 177
    Registrado : 11/01/2016

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  lpdias 26/9/2023, 17:20

    Boa tarde pessoal!

    Estou com dificuldades e empaquei em uma situação que mal sei explicar usando os termos corretos. rsrsr
    O código abaixo foi desenvolvido após uma breve aula que aderi em uma plataforma de cursos, qual o Prof. Marcelo David foi o mentor, mas ainda sim me falta conhecimento.


    A questão qual preciso de ajuda é onde no código aparece Me.lstItens.AddItem rs10!codprod & ";" & "" & ";" & ""....
    Essas aspas duplas eram pra trazer o nome do produto e a unidade de medida referente a venda já lançada, e por não saber fazer deixei as aspas.
    Como esses registros são de outra tabela, não sei nem por onde começar a incluir no código para chegar ao resultado esperado.

    Agradeço se algum amigo puder me ajudar com isso.



    Código:

    Private Sub SubCrgDetlistaVendas()


    Dim strSQL10 As String
    Dim rs10 As DAO.Recordset


    strSQL10 = "SELECT CODVENDA,CODPROD, QTDEPROD,VALORPROD,VALORDESC,VALORTOTAL FROM " _
                                & "tabdetvendas WHERE CODVENDA= '" & Me.lbx.Column(0) & "'"

    Set rs10 = CurrentDb.OpenRecordset(strSQL10, , 4)


    Do Until rs10.EOF
        Me.lstItens.AddItem rs10!codprod & ";" & "" & ";" & "" & ";" & Format(rs10!VALORPROD, "0.00") & ";" & rs10!QTDEPROD & ";" & Format(rs10!VALORDESC, "0.00") & ";" & Format(rs10!VALORTOTAL, "###,###,###,##0.#0")
        rs10.MoveNext
    Loop

    rs10.Close
    Set rs10 = Nothing



    End Sub


    Anexos
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela AttachmentComprasVendas9.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (571 Kb) Baixado 8 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3947
    Registrado : 21/04/2011

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  Marcelo David 26/9/2023, 20:58

    Olá Leandro, tudo bem? Será um prazer tentar lhe ajudar por aqui! Very Happy

    Vamos lá...

    Não entendi a parte de que os dados são de outra tabela.

    Poderia detalhar melhor e incluir o propósito final?


    .................................................................................
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Domine Access e VBA Criando Um Incrível Sistema Financeiro - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Access e VBA - Formulário Desacoplado - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Yt_16x10 Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Marcel11
    avatar
    lpdias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 177
    Registrado : 11/01/2016

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  lpdias 27/9/2023, 08:11

    Bom dia Marcelo!

    Grande honra ser ajudado por você.
    Vamos lá.....

    Quando digo tabela diferente, quero dizer que o nome do produto e o nome da unidade de medida vem de uma tabela a parte.
    Na tabVendas ficam somente o código do produto e o código da unidade de medidas.
    É essa referencia que não consigo imaginar como fazer no código que tenho.

    Aproveito sua atenção e pergunto se estudar SQL ajudaria nesses projetos quais os formulários são desacoplados.


    Agradeço desde já

    Marcelo David gosta desta mensagem

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3947
    Registrado : 21/04/2011

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  Marcelo David 27/9/2023, 11:27

    Entendi.
    Isso tem haver com relacionamentos de tabelas, joins.

    Tem a tabela TabDetVendas e TabProdutos. Elas deveriam estar relacionadas, já um que um registro na TabDetVendas, deve ter uma relação com um registro na TabProdutos.

    Então devemos comecar por relacionar essas tabelas.
    Quando é feito uma venda, o que é gravado na tabela TabDetVendas da TabProdutos? Esse campo é o que deve ser relacionado e não está.
    Veja na imagem das relações do seu banco de dados.

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Relaca10

    Note que entre a TabProdutos e TabDetVendas você não definiu relação, mesmo tendo campos relacionados. Não é obrigatório, mas uma boa prática e pode facilitar muitas coisas.
    Além disso a falta desse relacionamento, pode abrir chances para vender produtos não cadastrados (códigos de produtos inexistentes).
    E por falar boas práticas, vi que que há códigos do tipo texto. Pode usar, porém atente-se para real necessidade disso e sempre que possível use
    numérico, mas não é obrigatório também, tudo vai de contexto.

    lpdias escreveu:Aproveito sua atenção e pergunto se estudar SQL ajudaria nesses projetos quais os formulários são desacoplados.
    Isso é essencial não apenas para formulário desacoplado. Por exemplo, se o seu formulário de vendas fosse acoplado, você iria precisar da
    mesmo forma criar a sql que alimenta lista e seria essa mesma sql, já que essa lista não tem como ser acoplada.

    Mas o nosso querido Access tem a QBE, que é o construtor de consultas, nela você pode ir adicionando tabelas e campos e vendo a SQL
    que está sendo montada. Assim poderá no próprio Access estudar como funciona as consultas e sintaxe sql.

    No entanto, seu código deve ficar assim:

    Código:
    Private Sub SubCrgDetlistaVendas()
        '========================================CARREGA A LSTITENS COM OS DADOS RECUPERADOS

        Dim strSQL10 As String
        Dim rs10 As DAO.Recordset

        strSQL10 = "SELECT v.CodProd, p.Produto, u.DescUnidMed, v.ValorProd, v.QtdeProd, v.ValorDesc, v.ValorTotal " _
                                & "FROM TabUnidMedida AS u INNER JOIN (TabDetVendas AS v INNER JOIN " _
                                & "TabProdutos AS p ON v.CodProd = p.CodProd) ON u.UnidMed = p.UnidMed " _
                                & "WHERE CODVENDA= '" & Me.lbx.Column(0) & "'"

        Set rs10 = CurrentDb.OpenRecordset(strSQL10, , 4)


        Do Until rs10.EOF
            Me.lstItens.AddItem rs10!codprod & ";" & rs10!Produto & ";" & rs10!DescUnidMed & ";" & Format(rs10!VALORPROD, "0.00") & ";" & rs10!QTDEPROD & ";" & Format(rs10!VALORDESC, "0.00") & ";" & Format(rs10!VALORTOTAL, "###,###,###,##0.#0")
            rs10.MoveNext
        Loop

        rs10.Close
        Set rs10 = Nothing
    End Sub


    .................................................................................
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Domine Access e VBA Criando Um Incrível Sistema Financeiro - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Access e VBA - Formulário Desacoplado - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Yt_16x10 Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Marcel11
    avatar
    lpdias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 177
    Registrado : 11/01/2016

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  lpdias 27/9/2023, 11:38

    Obrigado pela dica, inclusive já me matriculei hehe.
    Quanto ao código, vou aproveitar a hora do almoço para ajustar.
    Logo voltarei com o resultado.

    Agradeço mais uma vez

    Marcelo David gosta desta mensagem

    avatar
    lpdias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 177
    Registrado : 11/01/2016

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  lpdias 27/9/2023, 13:26

    Marcelo, Boa tarde!

    Relacionei o produto a tabDetVendas.
    Na hora de escrever o código, reparei algumas letras como V P e U.
    Gostaria de entender o que representam, pois não deu certo e acho que tem haver com estas referencias.

    O erro diz que eram esperados 3 parâmetros.
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3947
    Registrado : 21/04/2011

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  Marcelo David 27/9/2023, 14:07

    Essas letras são apenas aliases para representar o nome da tabela e não ter que escrever todo o nome das tabelas.
    V é a tabela TabDetVendas
    P é a TabProdutos
    U é a TabUnidMedida.

    Veja na sql que atribuo o alias dessa forma: TabUnidMedida AS u

    E teste aqui e funcionou normalmente.
    Esse código que postei, está pronto, basta substituir pelo seu.


    .................................................................................
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Domine Access e VBA Criando Um Incrível Sistema Financeiro - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Access e VBA - Formulário Desacoplado - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Yt_16x10 Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Marcel11

    lpdias gosta desta mensagem

    avatar
    lpdias
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 177
    Registrado : 11/01/2016

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  lpdias 27/9/2023, 14:14

    Marcelo, funcionou sim.

    Após copiar o código e colar funcionou perfeitamente.
    Acho que eu havia digitado algo errado... vou verificar.

    Obrigado por mais essa ajuda.

    Abraço

    Marcelo David gosta desta mensagem

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3947
    Registrado : 21/04/2011

    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  Marcelo David 27/9/2023, 14:23

    Maravilha! Grato pelo retorno e grato por prestigiar meu trabalho! cheers


    .................................................................................
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Domine Access e VBA Criando Um Incrível Sistema Financeiro - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Favicon-16x16   Access e VBA - Formulário Desacoplado - [Passo a passo]
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Yt_16x10 Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Marcel11

    lpdias gosta desta mensagem


    Conteúdo patrocinado


    [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela Empty Re: [Resolvido]Carregar registro em caixa de listagem com informações de mais de uma tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 14:44