MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Função DLookup explicação

    Compartilhe

    vieirasoft
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7124
    Registrado : 11/05/2010

    Função DLookup explicação

    Mensagem  vieirasoft em Sab 22 Jan 2011, 10:53

    Allen Brown

    Obtendo um valor de uma tabela: DLookup ()

    Cedo ou tarde você vai precisar para recuperar um valor armazenado em uma tabela. Se você faz regularmente escrever facturas às empresas, você terá uma tabela Empresa que contém todos os detalhes da companhia, incluindo um campo CompanyID, bem como um quadro do contrato que armazena apenas CompanyID a olhar para os detalhes. Às vezes você pode basear seu formulário ou relatório em uma consulta que contém todas as tabelas adicionais. Outras vezes, DLookup () vai ser um salva-vidas.

    DLookup () espera que você dê a ele três coisas dentro dos colchetes. Pense neles como:

    Procure o campo _____, _____ da tabela, onde o registro é _____Each destes deve ir entre aspas, separados por vírgulas.

    Você também deve usar colchetes em volta da mesa ou nomes de campo se os nomes contenham caracteres estranhos (espaços, #, etc) ou começar com um número.

    Este é provavelmente o mais fácil de seguir com alguns exemplos:

    1.Você tem um CompanyID como 874, e deseja imprimir o nome da empresa em um relatório;
    2.Você tem como Categoria "C", ea necessidade de mostrar o que significa esta categoria.
    3.Você tem StudentID como "JoneFr", ea necessidade do aluno? Nome completo de um formulário.
    Exemplo 1:
    Procure o campo CompanyName da tabela Empresa, onde CompanyID = 874. Isto traduz-se:

    = DLookup ("CompanyName", "Company", "CompanyID = 874") Você não quer Company 874 impressos para cada registro! Use um e comercial (&) para concatenar o valor atual no campo CompanyID de seu relatório para a empresa "=" critérios:

    = DLookup ("CompanyName", "Company", "CompanyID =" & [CompanyID]) Se o CompanyID é nula (como poderia ser em um novo registro), o terceiro agumenent será incompleta, por isso todo o rendimento expressão # Error . Para evitar que o uso Nz () para fornecer um valor para quando o campo é nulo:

    DLookup = (CompanyName "," Companhia "," CompanyID = "& Nz ([CompanyID], 0)) Exemplo 2:
    O exemplo acima é correto se CompanyID é um número. Mas se o campo é texto, o Access espera aspas em torno dele. Em nosso segundo exemplo, vemos o campo NomeDaCategoria na tabela Cat, onde Categoria = 'C'. Isso significa que o DLookup torna-se:

    = DLookup ("CategoryName", "Gato", "Categoria = 'C'") aspas simples dentro das aspas é uma maneira de fazer citações entre aspas. Mas, novamente, nós não queremos Categoy C 'para todos os registros: temos o valor atual do nosso campo Categoria remendado na citação. Para fazer isso, fechamos a citação após a primeira citação, adicione o conteúdo da categoria, e depois adicionar a citação à direita única. Isto torna-se:

    DLookup = (CategoryName "," Gato "," Categoria = '"&] [Categoria &"' ") Exemplo 3:
    Em nosso terceiro exemplo, temos o nome completo de uma tabela de Student. Mas a tabela aluno tem o nome de divisão em campos Nome e sobrenome, por isso teremos de nos referir a ambos e adicionar um espaço entre elas. Para mostrar esta informação na sua forma, adicionar uma caixa de texto com ControlSource:

    = DLookup ("[nome] &" "& [Sobrenome]", "Estudante", "StudentID = '" & [StudentID] & "'") citações entre aspas
    Agora você sabe como a fornecer as 3 partes para DLookup (), você está usando aspas aspas. O caractere apóstrofo não se o texto contém um apóstrofo, então é melhor usar o caractere de aspas duplas. Mas você deve dobrar-se o carácter de aspas duplas quando se cita dentro.

    Veja as marcas de cotação entre aspas para obter mais detalhes.

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Função DLookup explicação

    Mensagem  JPaulo em Ter 05 Fev 2013, 16:50

    Complementando aqui para não se perder a noção da utilização da função DLookup;


    Para valores numericos: (sem aspas)

    DLookup("Campo" , "Tabela" , "CampoFiltro = 123")

    Para Texto: (aspas simples)

    DLookup("Campo" , "Tabela" , "CampoFiltro= 'abcd'")

    Para datas: (cardinal)

    DLookup("Campo" , "Tabela" , "CampoFiltro= #01-08-2012#")



    Referencia a um Controle:

    Para valores numericos: (sem aspas)

    DLookup("Campo", "Tabela", "CampoFiltro = " & forms!NomeDoFormulario!NomeDoCampo)

    Para Texto: (aspas simples)

    DLookup("Campo", "Tabela", "CampoFiltro = '" & forms!NomeDoFormulario!NomeDoCampo & "'")

    Para datas:

    DLookup("Campo", "Tabela", "CampoFiltro = #" & forms!NomeDoFormulario!NomeDoCampo & "#")



    .................................................................................
    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.]

    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 629
    Registrado : 07/05/2010

    Re: Função DLookup explicação

    Mensagem  Jungli em Ter 05 Fev 2013, 17:31


    Com o Dlookup pode-se extrair valores de varias formas.

    Exemplos:

    * concatenar campos

    Dlookup("[campo1] & [campo2],"nomeDatabela")

    * valores já calculados

    Dlookup("[campo1] + [campo2],"nomeDatabela")

    Dlookup("(([campo1] + [campo2])/100),"nomeDatabela")

    Em relação ao desempenho, concatenando vários campos num único Dlookup, veja como fica um código alternativo (do mestre Avelino)

    Dim seq As String, k
    seq = "[campo1] & '|' & [campo2] & '|' & [campo3] & '|' & [campo4] & '|' & [campo5]"
    seq = Dlookup(seq, "NomeDaTabela", Filtro)
    k = Split(seq, "|")
    Me!campoA = k(0)
    Me!campoB = k(1)
    Me!CampoC = k(2)
    Me!CampoD = k(3)
    Me!CampoE = k(4)

    Conclusão:

    Com isso reduzimos de 5 para apenas 1 viagem a tabela. (DESEMPENHO).

    Fonte:
    Enciclopédia Avelino Sampaio

    vantunes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4
    Registrado : 16/12/2015

    Re: Função DLookup explicação

    Mensagem  vantunes em Qua 26 Out 2016, 17:06

    ando as voltas com uma função dlookup

    nao entendo o que esta mal no codigo seguinte

    Código:
    COD_EDIF = DLookup("[COD_EDIF1]", "AUX", "[COD_FREG1]= '" & Me.COD_FREG & "'" And "[N_ORDEM1] = '" & Me.N_ORDEM & "'")

    a tabela AUX tem os registos de texto COD_EDIF1, COD_FREG1, N_ORDEM1. Para cada par N_ORDEM1 e COD_FREG1 ha um Valor COD_EDIF1 correspondente

    quero ao clicar num botao coloque o campo COD_EDIF do formulário com o valor correspondente do par N_ORDEM e COD_FREG do Formulário.

    alguma dica?

    Dorival J
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 02/05/2016

    Re: Função DLookup explicação

    Mensagem  Dorival J em Dom 30 Out 2016, 12:13


    A função Dlookup só funciona com base nas tabelas?

    Não funciona com base em formulários, consultas ou relatórios?

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2632
    Registrado : 29/06/2012

    Re: Função DLookup explicação

    Mensagem  Noobezinho em Dom 30 Out 2016, 14:45

    Dorival

    DLookup()
    DSoma()

    Funções que começam com "D" que por sua vez quer dizer Dynaset (tabela), sim, retornam resultados da tabela.

    [ ]'s


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1118
    Registrado : 21/01/2012

    Re: Função DLookup explicação

    Mensagem  Cláudio Más em Qui 03 Nov 2016, 21:10

    vantunes, tente assim:

    Código:
    COD_EDIF = DLookup("[COD_EDIF1]", "AUX", "[COD_FREG1]= '" & Me!COD_FREG & "' And [N_ORDEM1] = '" & Me!N_ORDEM & "'")

    maluco_sergio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 23
    Registrado : 09/11/2016

    Re: Função DLookup explicação

    Mensagem  maluco_sergio em Sab 10 Dez 2016, 11:17


    Bom dia.

    Será que posso usar o Dlookup para fazer o seguinte?

    - procurar o último registo na tabela "Correspondencia_Historico" em que o campo "ID" do "frmCorrespondenciaEntradaEditar" e igual a "ID_Correspondencia" da tabela.
    Então copiar o valor do campo "Destinatario_Correspondencia" da tabela "Correspondencia_Historico" e colar no campo "Responsável_Entrada" do "frmCorrespondenciaEntradaEditar".

    Será possível?

    Obrigado.


    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Função DLookup explicação

    Mensagem  JPaulo em Sex 16 Dez 2016, 14:06

    Se quer o ultimo registo, não é o Dlookup, será o DLast com a mesma estrutura do Dlookup.


    .................................................................................
    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.]

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 921
    Registrado : 05/02/2010

    Função Dlookup explicação

    Mensagem  good guy em Ter 20 Dez 2016, 15:20

    Olá feras,

    Minha contribuição:

    Você pode usar a função DLookup (na IDE do Access ficará assim mesmo) para especificar critérios na linha critérios de uma consulta(na consulta ficará como DPesquisa, separando com ";" no lugar da "," , o campo da tabela e do critério de pesquisa), dentro de uma expressão de campo calculado em uma consulta ou na linha Atualizar para um atualizar consulta.

    Possível:
    =DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID) '

    Melhor:
    Dim sID As Long
    sID = Forms![Order Details]!ProductID

    txtCampoX =DLookup("[ProductName]", "Products", "[ProductID] =" & sID)

    3 Elimine a possibilidade de surgirem uma mensagem de erro na depuração de seu código e tornar seu código vulnerável a modificações indesejadas com:

    On Error Resume Next (No início do código) <===  
    Dim sID As Long
    sID = Forms![Order Details]!ProductID

    txtCampoX =DLookup("[ProductName]", "Products", "[ProductID] =" & sID)

    E a função Nz para possibilitar trabalhar o código mesmo com campos nulos e evitar a abertura do código para modificações indesejadas.

    txtCampoX =Nz(DLookup("[ProductName]", "Products", "[ProductID] =" & sID))

      Data/hora atual: Qui 19 Jan 2017, 23:30