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


4 participantes

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    avatar
    Willer
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 06/10/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Willer 7/10/2012, 05:21

    Pessoal,

    Estou iniciando com o VBA e preciso da ajuda de vocês. Preciso executar um SQL que retorna apenas um registro com um somatório e atribuir este valor a um campo no meu formulário.

    A Consulta segue abaixo:

    Select para Cálculo do Peso para Medição do Spool
    SELECT Sum([VL Quantidade]*[NR Peso]*[NR Coeficiente]) AS [VL Peso Spool Medição]
    FROM [T Coeficientes] INNER JOIN ([T Conforja] INNER JOIN [T Materiais] ON [T Conforja].[ID Conforja] = [T Materiais].[ID Conforja]) ON [T Coeficientes].[ID Coeficiente] = [T Conforja].[ID Coeficiente]
    GROUP BY [T Materiais].[ID Spool]
    HAVING ((([T Materiais].[ID Spool])=[Formulários]![F Spools]![ID Spool]));

    O nome do campo ao quel desejo atribuir o resultad da query é Peso_01

    Agradeço se puderem me ajudar!

    willer
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 7/10/2012, 09:24

    Bom dia, Willer, e bem-vindo ao fórum
    Nomeie os controlos e campos de forma normalizada. Procure no fórum conhecimento e encontrará formas normalizadas de nomeação de controlos e campos
    Crie um acontecimento, no formulário, onde pretende a execução
    Dim Rst as dao.recordset
    set rst=currentdb.openrecordset("SELECT Sum([VL Quantidade]*[NR Peso]*[NR Coeficiente]) AS [VL Peso Spool Medição] FROM [T Coeficientes] INNER JOIN ([T Conforja] INNER JOIN [T Materiais] ON [T Conforja].[ID Conforja] = [T Materiais].[ID Conforja]) ON [T Coeficientes].[ID Coeficiente]=[T Conforja].[ID Coeficiente] GROUP BY [T Materiais].[ID Spool] HAVING [T Materiais].[ID Spool]=[Formulários]![F Spools]![ID Spool];")
    Peso_01=rst(0)
    set rst=nothing


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 7/10/2012, 21:11

    boa tarde eu criei o seguinte codigo que faz exactamente isso, so que so estou a conseguir para um registo da tabela documentos, no entanto com a ajuda do Alexandre chagamos la com certeza.
    Este codigo esta associado a um botão no formulario, mas pode ser associado ao evento ao carregar do formulario.
    O codigo consulta 4 dats na tabela documentos e o nome do fornecedor na tabela fornecedores, se alguma das datas for inferior a hoje+5 dias
    coloca os documentos que não preencham este criteros como validos no form e os restantes coloca a data que caducaram.

    Alexandre pode ajudar para que consigamos correr todos os registos da tabela, assim ajuda duas pessoas de uma so vez.
    private Sub Comando0_Click()
    Dim mensagem As String
    Dim rst1 As Recordset
    Dim rst As Recordset
    Dim rst2 As Recordset
    Dim rst3 As Recordset
    Dim rst4 As Recordset

    Set rst4 = Application.CurrentDb.OpenRecordset("SELECT tblfornecedores.for_nome FROM tblfornecedores;")
    Set rst = Application.CurrentDb.OpenRecordset("SELECT tbldocumentos.[ValidadeAlvará]FROM tblFrutas;")
    Set rst1 = Application.CurrentDb.OpenRecordset("SELECT tbldocumentos.ValidadeSS FROM tbldocumentos;")
    Set rst2 = Application.CurrentDb.OpenRecordset("SELECT tbldocumentos.ValidadeAT FROM tbldocumentos;")
    Set rst3 = Application.CurrentDb.OpenRecordset("SELECT tbldocumentos.ValidadeRC FROM tbldocumentos;")

    emp = rst4(0)
    j = 0

    If rst(0) < Now() + 5 Then j = j + 1
    If rst1(0) < Now() + 5 Then j = j + 2
    If rst2(0) < Now() + 5 Then j = j + 4
    If rst3(0) < Now() + 5 Then j = j + 8

    Select Case j
    Case 1
    dataalvara = rst(0)
    datass = "Válido"
    dataat = "Válido"
    datarc = "Válido"
    Case 2
    dataalvara = "Válido"
    datass = rst1(0)
    dataat = "Válido"
    datarc = "Válido"
    Case 3
    dataalvara = rst(0)
    datass = rst1(0)
    dataat = "Válido"
    datarc = "Válido"
    Case 4
    dataalvara = "Válido"
    datass = "Válido"
    dataat = rst2(0)
    datarc = "Válido"
    Case 5
    dataalvara = rst(0)
    datass = "Válido"
    dataat = rst2(0)
    datarc = "Válido"
    Case 6
    dataalvara = "Válido"
    datass = rst1(0)
    dataat = rst2(0)
    datarc = "Válido"
    Case 7
    dataalvara = rst(0)
    datass = rst1(0)
    dataat = rst2(0)
    datarc = "Válido"
    Case 8
    dataalvara = "Válido"
    datass = "Válido"
    dataat = "Válido"
    datarc = rst3(0)
    Case 9
    dataalvara = rst(0)
    datass = "Válido"
    dataat = "Válido"
    datarc = rst3(0)
    Case 10
    dataalvara = "Válido"
    datass = rst1(0)
    dataat = "Válido"
    datarc = rst3(0)
    Case 11
    dataalvara = rst(0)
    datass = rst1(0)
    dataat = "Válido"
    datarc = rst3(0)
    Case 12
    dataalvara = "Válido"
    datass = "Válido"
    dataat = rst2(0)
    datarc = rst3(0)
    Case 13
    dataalvara = rst(0)
    datass = "Válido"
    dataat = rst2(0)
    datarc = rst3(0)
    Case 14
    dataalvara = "Válido"
    datass = rst1(0)
    dataat = rst2(0)
    datarc = rst3(0)
    Case 15
    dataalvara = rst(0)
    datass = rst1(0)
    dataat = rst2(0)
    datarc = rst3(0)

    End Select
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 7/10/2012, 22:42

    Boa noite, jrm
    Quase não entendi o que expôs:
    - "se alguma das datas for inferior a hoje+5 dias". As datas não são inferiores ou superiores; Podem ser anteriores ou posteriores
    - Pretende executar código que liste os documentos e, os que estão caducados, mostre a data de cancelamento?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 7/10/2012, 23:09

    boa noite Alexandre
    O que pretendo é o seguinte:
    tenho uma tabela de documentos para cada registo dessa tabela existem 8 campos, dos quais 4 são as datas de validade dos documentos,os outros 4 são os Nº de documento, o que eu pretendia era ter um relatorio/formulario
    por cada registo da tabela com os documentos validos em que a frente do nome do documento devera aparecer valido e com os documenos caducados em que neste caso a frente devera aparecer a data em que caducou, sendo que para mim esta caducado quand faltam 5 dias para a data de validade. O que esta a acontecer é que eu tentei fazer este codigo, mas so vai buscar os dados para o primeiro registo da tabela de documentos.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 7/10/2012, 23:25

    Nomeie os controlos e campos de forma normalizada
    Coloque Caixa de listagem com 5 colunas (NomeDocumento, Alvara, SS, AT e RC)
    Crie função
    Código:

    Function Validade(DtDoc as date)as string
    if DtDoc<DateAdd("d", 6, Date) then Validade=DtDoc else Validade="Válido"
    end function
    Utilize
    Código:

    LstDocumentos.rowsource="SELECT for_nome, Validade(ValidadeAlvará), Validade(ValidadeSS), Validade(ValidadeAT), Validade(ValidadeRC) FROM tblfornecedores;"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 00:02

    Boa Noite mais uma vez Alexandre

    não estou a conseguir, tambem não percebi muito bem onde deveria colocar o codigo, poderá ser no evento ao carregar do form
    lstdocumentos.RowSource = "SELECT Validade(ValidadeAlvará), Validade(ValidadeSS), Validade(ValidadeAT), Validade(ValidadeRC) FROM tblfornecedores;"

    A ideia é construir um relatorio com essa informação para depois enviar por email para cada um dos fornecedores, para que eles enviem a documentação que esta em falta ou caducada. Acrescentei na função validade mais essa opção pode verificar se esta correcto assim.

    Function Validade(DtDoc As Date) As String

    If DtDoc < DateAdd("d", 6, Date) Then Validade = DtDoc
    Elseif
    DtDoc > DateAdd("d", 6, Date) then Validade = "Válido"
    else
    validade="Em Falta"
    End Function
    Obrigado por me ajudar
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 8/10/2012, 00:06

    Tem de ver o que pretende
    Se for formulário, faça como indiquei: Ao carregar do formulário coloque o código disponibilizado
    Se for relatório, tem de trabalhar melhor o conceito. Não deve listar os vários fornecedores no mesmo relatório e enviar, senão, cada um dos fornecedores tem acesso a dados dos outros


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 00:24

    na sua opinião o que acha que seria melhor? sabendo que depois vou tentar implementar o envio de emails via outlook, estou a pensar adaptar um dos exemplos aqui do forum.
    se optar por um form que me parece mais simples, fiz como disse coloquei no evento ao carregar do form, mas esta a dar um erro. run time error 424, pode ajudar SFF
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 8/10/2012, 00:26

    Onde está a dar erro?
    Utiliza a função que indiquei. A alteração que fez, não está bem escrita e não percebi a finalidade


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 00:31

    depois de colocar o codigo que voce escreveu no evento ao abrir do form, quando abro o form de novo da erro nesse codigo run time 424, a ideia da alteração que eu fz na função é quando o algum dos compos validade estiver em branco devera colocar "em falta" par dizer que o fornecedor ainda não enviou esse(s) documento
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 8/10/2012, 00:35

    Utilize
    Function Validade(DtDoc)as string
    if isnull(DtDoc) then Validade="Em falta" Elseif DtDocend function
    Sobre o erro, execute o código passo-a-passo (cursor sobre a linha > F9 > executar o código , F8 para ir para próxima instrução)


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 00:42

    pode ver ai no print que anexo.
    Anexos
    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário AttachmentDoc1.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (132 Kb) Baixado 20 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 8/10/2012, 07:45

    Bom dia,
    Criou a caixa de listagem e nomeou-a LstDocumentos?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 21:13

    boa noite Alexandre

    Peço desculpa por não ter dito nada mais cedo, mas foi impossivel.
    sim criei a caixa de listagem e tem o nome de lstdocumentos, mas contonua com o erro do print que enviei, não percebo. se tiver alguma solução, ou algum exemplo agradeço.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Alexandre Neves 8/10/2012, 21:14

    Boa noite,
    Disponibilize a bd


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    jrm
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 136
    Registrado : 10/08/2012

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  jrm 8/10/2012, 22:01

    boa noite Alexandre segue parte da BD em anexo, com a informação necessaria ao pretendido, a pass de abertura é a1234, agradeço a sua ajuda.
    Styluss
    Styluss
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 21/05/2014

    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty JRM

    Mensagem  Styluss 15/6/2014, 00:03

    Boa noite JRM,

    Estive acompanhando o tópico, conseguiu resolver o problema?

    Até aqui, não entendi claramente o problema ou se há um caminho diferente para resolver o seu problema.



    Conteúdo patrocinado


    Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário Empty Re: Criar uma consulta utilizando VBA e stribuir seu resultado a um campo no meu formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 21:36