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

    DLookup com retorno de MSG de não localizado

    Compartilhe

    thalleslferreira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 17/10/2013

    DLookup com retorno de MSG de não localizado

    Mensagem  thalleslferreira em Ter 15 Ago 2017, 00:52

    Pessoal, estou com uma dúvida

    estou usando DLookup para preencher alguns dados na tabela, mais quando nao encontra o valor gostaria que me desse uma mensagem tipo "Dados não encontrado", podem me ajudar

    Obrigado!


    Me.txt_COLETA = DLookup("Coleta", "basebhz", "MD ='" & DOC & "'")
    Me.txt_NFS = DLookup("NFS", "basebhz", "MD ='" & DOC & "'")
    Me.txt_AWB = DLookup("AWB", "basebhz", "MD ='" & DOC & "'")
    Me.txt_CIATRANSF = DLookup("CIATRANSF", "basebhz", "MD ='" & DOC & "'")
    Me.txt_RESPENTREGA = DLookup("RESPENTREGA", "basebhz", "MD ='" & DOC & "'")
    Me.txt_REMETENTE = DLookup("REMETENTE", "basebhz", "MD ='" & DOC & "'")
    Me.TXT_DESTINATARIO = DLookup("DESTINATARIO", "basebhz", "MD ='" & DOC & "'")
    avatar
    Uilson Brasil
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1021
    Registrado : 23/04/2013

    Re: DLookup com retorno de MSG de não localizado

    Mensagem  Uilson Brasil em Ter 15 Ago 2017, 14:55

    Teste assim.

    Código:
    Dim xDados As Variant, x

    'Buscamos os dados em uma só viajem
    xDados = "[Coleta] & '|' & [NFS] & '|' & [AWB] & '|' & [CIATRANSF] & '|' & [RESPENTREGA] &  '|' & [REMETENTE] & '|' & [DESTINATARIO]"
    xDados = DLookup(xDados, "basebhz", "MD ='" & DOC & "'")
    x = Split(xDados, "|")

    'Testamos os dados
    If IsNull(xDados) Or xDados = "" Then
        MsgBox "Não encontrado na base de dados.", vbInformation, "Sistema": Exit Sub
    End If

    'Cada que buscamos através da variável xDados representa uma coluna iniciando da coluna ZERO
    Me.txt_COLETA = x(0)
    Me.txt_NFS = x(1)
    Me.txt_AWB = x(2)
    Me.txt_CIATRANSF = x(3)
    Me.txt_RESPENTREGA = x(4)
    Me.txt_REMETENTE = x(5)
    Me.TXT_DESTINATARIO = x(6)


    .................................................................................
    ::: Uilson Brasil
    ::: Design in Microsoft Access

    thalleslferreira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 17/10/2013

    Re: DLookup com retorno de MSG de não localizado

    Mensagem  thalleslferreira em Ter 15 Ago 2017, 20:29

    Boa tarde, usei desta forma, pois estava apresentando um erro na x = Split(xDados, "|")


    Porem qualquer saida do campo DOC da msg de não localizado.

    Usei da forma correta?



    Private Sub DOC_LostFocus()

    Dim xDados As Variant, x

    'Buscamos os dados em uma só viajem
    xDados = "[Coleta] & '|' & [NFS] & '|' & [AWB] & '|' & [CIATRANSF] & '|' & [RESPENTREGA] & '|' & [REMETENTE] & '|' & [DESTINATARIO]"
    xDados = DLookup(xDados, "basebhz", "MD ='" & DOC & "'")

    'Testamos os dados
    If IsNull(xDados) Or xDados = "" Then
    MsgBox "Não encontrado na base de dados.", vbInformation, "Sistema": Exit Sub

    Else
    x = Split(xDados, "|")

    'Cada que buscamos através da variável xDados representa uma coluna iniciando da coluna ZERO
    Me.txt_COLETA = x(0)
    Me.txt_NFS = x(1)
    Me.txt_AWB = x(2)
    Me.txt_CIATRANSF = x(3)
    Me.txt_RESPENTREGA = x(4)
    Me.txt_REMETENTE = x(5)
    Me.TXT_DESTINATARIO = x(6)

    End If

    End Sub
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

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

    DLookup com retorno de MSG de não localizado

    Mensagem  good guy em Ter 15 Ago 2017, 21:24

    Olá Thalles,

    Tente assim com uma função Array:

    Código:
    Public Function LocalizarDados()
    Dim strLoc As String
    Dim varLoc(7) As Variant
    Dim intI As Integer

    varLoc(0) = DLookup("Coleta", "basebhz", "MD ='" & DOC & "'")
    varLoc(1) = DLookup("NFS", "basebhz", "MD ='" & DOC & "'")
    varLoc(2) = DLookup("AWB", "basebhz", "MD ='" & DOC & "'")
    varLoc(3) = DLookup("CIATRANSF", "basebhz", "MD ='" & DOC & "'")
    varLoc(4) = DLookup("RESPENTREGA", "basebhz", "MD ='" & DOC & "'")
    varLoc(5) = DLookup("REMETENTE", "basebhz", "MD ='" & DOC & "'")
    varLoc(6) = DLookup("DESTINATARIO", "basebhz", "MD ='" & DOC & "'")


    strLoc = Array(varLoc(0), varLoc(2), varLoc(3), varLoc(4), varLoc(5), varLoc(6))

    For intI = LBound(strLoc) To UBound(strLoc)
        If strLoc(intI) > 0 Then
        MsgBox ok
        Else
        MsgBox "Não encontrado na base de dados.", vbInformation, "Sistema"
        End If
    Next intI

    End Function

    'CHAME A FUNÇÃO ACIMA COM A INSTRUÇÃO CALL ATRAVÉS DE UM BOTÃO

    Private Sub cmdEncontrar_Click()
    Call LocalizarDados
    End Sub

    thalleslferreira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 17/10/2013

    Re: DLookup com retorno de MSG de não localizado

    Mensagem  thalleslferreira em Ter 15 Ago 2017, 22:50

    Fiz de outra forma

    Após Atualizar

    Private Sub DOC_AfterUpdate()
    If NomeOriginal = Me!DOC Then Exit Sub
    If DCount("Id", "Tbl_doc", "DOC ='" & Me!DOC & "'") > 0 Then
    MsgBox "O documento " & Me!DOC & " JÁ lançado..."
    Me.Undo
    Cancel = True
    Me.DOC.SetFocus
    End If

    Dim xDados As Variant, x

    'Buscamos os dados em uma só viajem
    xDados = "[Coleta] & '|' & [NFS] & '|' & [AWB] & '|' & [CIATRANSF] & '|' & [RESPENTREGA] & '|' & [REMETENTE] & '|' & [DESTINATARIO]"
    xDados = DLookup(xDados, "basebhz", "MD ='" & DOC & "'")

    'Testamos os dados
    If IsNull(xDados) Or xDados = "" Then
    MsgBox "Não encontrado na base de dados.", vbInformation, "Sistema":
    Me.Undo
    Cancel = True

    Exit Sub
    Me.DOC.SetFocus
    End If
    Me.DOC.SetFocus
    x = Split(xDados, "|")

    'Cada que buscamos através da variável xDados representa uma coluna iniciando da coluna ZERO
    Me.txt_COLETA = x(0)
    Me.txt_NFS = x(1)
    Me.txt_AWB = x(2)
    Me.txt_CIATRANSF = x(3)
    Me.txt_RESPENTREGA = x(4)
    Me.txt_REMETENTE = x(5)
    Me.TXT_DESTINATARIO = x(6)



    End Sub
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1697
    Registrado : 11/11/2009

    Re: DLookup com retorno de MSG de não localizado

    Mensagem  Dilson em Qui 17 Ago 2017, 15:10

    Movido para sala de dúvidas Modulos e VBA.

    thalleslferreira leia as regras do fórum. Salas de repositórios de exemplos e documentações não devem ser usadas para publicação de dúvidas.

    Segue o tópico normalmente.

      Data/hora atual: Sab 18 Nov 2017, 19:30