MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Compartilhe

    MSoccol
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  MSoccol em Seg 16 Maio 2011, 5:21 pm

    Bom tarde, meu problema é o seguinte: Criei uma variável do tipo String, e quero atribuir a ela um valor do último registro de uma tabela. como faço isso? to tentando o código abaixo mas ela não tá entendendo direito.

    Private Sub XML_Click()
    Dim nom As String
    nom = DLast("NOME", "CLIENTES")
    DoCmd.OpenForm "CLIENTES", acNormal, , [NOME] = nom, acFormEdit
    End Sub

    Quando crio uma função assim:

    Function NOME() As String
    Nome = DLast("NOME", "CLIENTES")
    End Function

    Me retorna o valor que necessito, só que na hora de rodar o sub, tá entendende de outra forma e abrindo o formulário clientes em outro registro.

    Desde já, Grato
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11235
    Registrado : 30/12/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  criquio em Seg 16 Maio 2011, 5:55 pm

    Tente assim:

    Nome = DLookup("NOME", "CLIENTES", "Código=" & Dmax("Código", "Clientes"))


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    Clique [Você precisa estar registrado e conectado para ver este link.] e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  JPaulo em Ter 17 Maio 2011, 11:00 am

    teste por favor;

    Private Sub XML_Click()
    Dim nom As String
    nom = DLast("NOME", "CLIENTES")
    DoCmd.OpenForm "CLIENTES", acNormal, , "[NOME] ='" & nom & "'", acFormEdit
    End Sub


    Um pitaco:

    Nunca utilize palavras reservadas do Ms Access, como por exemplo "NOME".

    Nunca utilize o mesmo nome da tabela nos seus forms, como por exemplo "CLIENTES", opte por frmCLIENTES, assim o VBA não entra em parafuso.





    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    MSoccol
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  MSoccol em Ter 17 Maio 2011, 5:49 pm

    Boa tarde senhores.

    Primeiramente obrigado, meu problema foi resolvido. Vendo as duas dicas vi que o problema não era a função pra retornar o nome Dlast . O problema era, sim a forma de escrever a função openform, tal qual o J Paulo escreveu.

    Vcs poderiam me dizer qual é essa regra de usar " & [varialve]& "? É sempre assim se minha variável for um string? qual a regra para utilizar essa escrita?

    Quanto aos pitacos, esse banco que o trabalhando foi feito por mim a uns anos atrás e não sabia esse pouco a mais hoje.

    Quanto a fórmula do criquio, não consegui encaixá-la no meu sistema, acredito que devido ao fato que não tenho um código sequencial nessa na tabela em questão. Esse código sequencial é sempre uma boa, ou ele pode ser omitido em minhas tabelas? Qual a opinião dos programadores mais experientes?

    Já muito grato pela ajuda.

    Grato
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11235
    Registrado : 30/12/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  criquio em Ter 17 Maio 2011, 6:47 pm

    " & [varialve]& "

    Quando inserimos um nome ou número para pesquisa, colocamos por exemplo "Código=1". Nesse caso, já estamos passando o valor que queremos pesquisar. Quando usamos um campo ou uma variável, mudamos essa sintaxe para dizer ao Access que não estamos fornecendo o valor exato a ser procurado, mas sim fornecendo o nome do campo ou da variável aonde esse valor está. Lembrando que quando for um dado numérico, usamos como acima, mas quando for uma string, ou seja, campo tipo texto, adicionamos aspas simples e duplas: '" & [varialve]& "'"

    Sempre que possível, é bom fazer uso de numeração sequencial. Elas ajudam em muitos casos de pesquisa.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    Clique [Você precisa estar registrado e conectado para ver este link.] e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


    MSoccol
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  MSoccol em Sab 21 Maio 2011, 2:18 pm

    Certo Criquio, vou rever meus projetos para entender melhor essas aspas, elas parecem trabalhar de forma diferente a cada caso, tipo o criteria de um Dsum, ou Dcount e uma wherede um openform.
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11235
    Registrado : 30/12/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  criquio em Sab 21 Maio 2011, 3:28 pm

    As aspas, tanto em vba quanto diretamente na origem dos campos, são usadas mais ou menos assim:

    DLookup("NomeCompleto", "tblClientes", "Código=25")

    No nosso DLookup, que significa pesquisa, separamos os elementos por vírgula, e cada elemento vem dentro de aspas. No exemplo acima, temos três elementos envolvidos na pesquisa. Temos o campo "NomeCompleto", que se encontra na tabela "tblClientes", e será filtrado pelo Código de número 25. Pois bem, nesse exemplo, estamos passando o código diretamente no critério, no caso, o 25. Isso, no entanto, engessa a pesquisa, ou seja, toda vez que precisarmos mudar o código, teremos que alterar diretamente no vba. Para evitar isso, podemos usar um campo no formulário. Nesse caso, termos que informar, no vba, o nome do campo. Vamos supor que o campo se chama txtCódigo. Não podemos simplesmente colocar o nome do campo no lugar do 25, pois o nosso código iria interpretar tudo como sendo o valor a ser pesquisado, e não o campo:

    Errado: DLookup("NomeCompleto", "tblClientes", "Código=Me!txtCódigo")
    Certo: DLookup("NomeCompleto", "tblClientes", "Código=" & Me!txtCódigo)

    É por isso que fazemos esse jogo de aspas, para que o código possa diferenciar entre o valor exato a ser pesquisado ou buscar esse valor em um campo do formulário. Outra questão é a diferença entre valores numéricos e valores de texto. Nesse último caso, acrescentamos as aspas simples, e por conseguinte, precisamos completar o código com aspas simples e duplas ao final:

    DLookup("NomeCompleto", "tblClientes", "Código='" & Me!txtCódigo & "'")

    Temos ainda a diferença de pesquisa por data e hora:

    DLookup("NomeCompleto", "tblClientes", "Data=#" & Me!txtData & "#")

    Como a data e a hora, em critérios de pesquisa, precisam estar entre o símbolo #, e como essa data ou hora se encontra em um campo do formulário, precisamos colocar dessa maneira acima descrita.

    Quando formos usar isso diretamente na origem do campo, mudamos as vírgulas por ponto e vírgula:

    DLookup("NomeCompleto";"tblClientes";"Data=#" & Me!txtData & "#")

    Note que essa sintaxe é similar tanto com DLookup quanto com seus similares DCount, DSum, etc e o jogo de aspas só se verifica no critério ao final do código. O que vem antes, permanece inalterado:

    DLookup("NomeCompleto", "tblClientes", "Código='" & Me!txtCódigo & "'")

    Só o que está em vermelho é que se altera dependendo da condição. O que vem antes pode se alterar dependendo do tipo de pesquisa, e não da condição da pesquisa. Por exemplo:

    1 - DCount("*", "tblClientes")

    2 - DCount("*", "tblClientes", "Data=#" & Me!txtData & "#")

    3 - DCount("NomeCliente", "tblClientes", "Data=#" & Me!txtData & "#")

    No exemplo 1, o "*" indica uma contagem de todos os registros da tabela.
    No exemplo 2, temos um critério. Nesse caso, irá filtrar todos os clientes de uma determinada data.
    No exemplo 3, queremos a quantidade de registros de um determinado cliente em uma mesma data. Isso seria para o caso, por exemplo, de querermos saber quantas vezes o cliente fez compras em um mesmo dia.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    Clique [Você precisa estar registrado e conectado para ver este link.] e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


    MSoccol
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  MSoccol em Sab 21 Maio 2011, 4:45 pm

    Muito esclarecedor Criquio, mas vejo que muita coisa é convenção mesmo, não segue uma idéia lógica. Vou guardar essa sua postagem, para ajudar daqui por diante

    Onde tudo isso está especificado, existe um documento que trate de todos os pormenores de sintaxe?


    Dougtha91
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 19/05/2017

    Ajuda JPaulo

    Mensagem  Dougtha91 em Sex 14 Jul 2017, 1:42 pm

    JPaulo, me ajuda urgente, estou criando uma VBA no ACCESS para ir no Excel, abrir, atualizar o vinculo, depois converte-lo em intervalo e Salvar o arquivo como nome variavel no caso célular A2, porém não estou conseguindo, pode verificar oq esta de errado na String por favor?

    Option Compare Database

    Function OpenExcelFromAccess()
    Dim MyXL As Object


    Set MyXL = CreateObject("Excel.Application")
    With MyXL
    .Application.Visible = True
    .workbooks.Open "H:\Planejamento e Qualidade\PROPOSTAS VENDEDORES (ALDO)02.xlsx"
    MyXL.ActiveWorkbook.refreshall
    MyXL.ActiveWorkbook.unlist
    A = MyXL.ActiveWorkbook.range("a2").Text
    MyXL.ActiveWorkbook.saveAs FileName:="H:\Planejamento e Qualidade\" & A & ".xlsx"
    MyXL.ActiveWorkbook.Close
    Set MyXL = Nothing

    End With
    End Function
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  JPaulo em Sex 14 Jul 2017, 2:07 pm

    Ola, seja bem vindo ao forum;

    Código:
    Function OpenExcelFromAccess()
    Dim MyXL As Object
    Dim a$

    Set MyXL = CreateObject("Excel.Application")
    With MyXL
    .Application.Visible = True
    .workbooks.Open "D:\Planejamento e Qualidade\PROPOSTAS VENDEDORES (ALDO)02.xlsx"
    MyXL.ActiveWorkbook.refreshall
    a = MyXL.Worksheets("Sheet1").Range("A2").Value
    MyXL.ActiveWorkbook.saveAs FileName:="D:\Planejamento e Qualidade\" & a & ".xlsx"
    MyXL.ActiveWorkbook.Close
    Set MyXL = Nothing
    End With
    End Function


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dougtha91
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 19/05/2017

    Obrigado

    Mensagem  Dougtha91 em Sex 14 Jul 2017, 2:48 pm

    JPaulo, muito obrigado funcionou, só mais uma dúvida qual o código para converter o vinculo da tabela em intervalo?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  JPaulo em Sex 14 Jul 2017, 3:37 pm

    Essa parte de converter o vinculo da tabela em intervalo, não entendi.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dougtha91
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 19/05/2017

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  Dougtha91 em Sex 14 Jul 2017, 3:47 pm

    O procedimento da vba esta abrindo um excel e salvando ele, só que esse excel que ele esta abrindo é uma tabela com vinculo de outro excel, quando ele for salvar eu queria que ele quebrasse esse vinculo, transformando o conteúdo em intervalo de célula.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: [RESOLVIDO] Valor de uma variável VBA igual ao valor de uma tabela.

    Mensagem  JPaulo em Sex 14 Jul 2017, 3:54 pm

    Entendi agora, mas acredite que nunca fiz isso.

    Lamento não poder ajudar nesse trecho.

    Aqui dominamos o Ms Access.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dougtha91
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 19/05/2017

    Ajuda JPaulo

    Mensagem  Dougtha91 em Sex 14 Jul 2017, 4:25 pm

    A blz, é que iria incluir esse código na continuação da minha string do access.


    Function OpenExcelFromAccess()
    Dim MyXL As Object
    Dim a$

    'On Error GoTo Mensagem
    Set MyXL = CreateObject("Excel.Application")
    With MyXL
    .Application.Visible = True
    .workbooks.Open "H:\Planejamento e Qualidade\PROPOSTAS VENDEDORES (ALDO)02.xlsx"
    MyXL.ActiveWorkbook.refreshall
    MyXL.ActiveWorkbook.UNLIST (ESSA OPÇÃO QUE QUERIA INCLUIR MAIS NAO FUNCIONA)
    a = MyXL.Worksheets("TABELA").Range("A2").Value
    MyXL.ActiveWorkbook.saveAs FileName:="H:\Planejamento e Qualidade\" & a & ".xlsx"
    MyXL.ActiveWorkbook.Close
    Set MyXL = Nothing

    'Mensagem:
    'MsgBox "Opa tente novamente"
    End With
    End Function


    Dougtha91
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 19/05/2017

    Ajuda JPaulo

    Mensagem  Dougtha91 em Seg 17 Jul 2017, 2:51 pm

    JPaulo,
    Tira mais uma dúvida por favor, criei um formulário de tela inicial, queria que ao abrir o formulário ele identifica o nome do computador do usuário e aparece-se em uma caixa de texto do formulário o resultado da VBA.

    A VBA esta ok, pronta, porém não consigo aplicar ela á caixa de texto, como faço isso?

    Option Compare Database

    'Function que retorna o nome do usuário de rede logado

    Public Function UsuarioRede() As String
    Dim GetUserN
    Dim ObjNetwork
    Set ObjNetwork = CreateObject("WScript.Network")
    GetUserN = ObjNetwork.UserName
    UsuarioRede = GetUserN
    End Function

      Data/hora atual: Sab 18 Nov 2017, 7:27 pm