1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida Ms Access

Discussão em 'Programação' iniciada por nphls, 26 de Janeiro de 2009. (Respostas: 10; Visualizações: 1197)

  1. Estou a fazer uma base de dados em Access e estou a ter alguns problemas em fazer a validação dos campos.

    Um dos campos que estou a ter dificuldade em validar é um campo que só deverá aceitar números e quando isso não acontece deveria apresentar uma mensagem de erro.

    O problema é que o campo está definido na base de dados como sendo do tipo número e, sendo assim, o access já faz a sua própria validação, isto é, aparece uma mensagem automática do access a dizer "the value you entered isn't valid for this field". Só que eu não queria que aparecesse esta mensagem do access, mas sim uma minha.

    Será que me conseguem dar uma ajuda?

    Desculpem lá esta pergunta tão básica, mas como podem ver não percebo muito de VBA...

    Cumps ;)
     
  2. pks

    pks Power Member

    no inicio da função colocas:
    On Error GoTo erro


    e no fim:

    erro:
    If Err.Number = x Then
    MsgBox ("messagem")
    End If



    se reparares quando o erro te aparece, ta la um numero.
    esse numero colocas onde esta o x.

    espero ter ajudado
     
  3. Armadillo

    Armadillo Folding Member

    falta aí o exit sub/function
    ou seja, ficaria...
    Código:
    Function XPTO () ' ou sub
    
    On Error GoTo erro
     
    '...
    '...
    [COLOR=DarkOrange] exit function 'ou "exit sub"
    [/COLOR] 
    erro:
    
    If Err.Number = x Then
        MsgBox ("messagem")
    End If
    
    end Function 'ou "end Sub"
    
     
  4. pks

    pks Power Member

    sim tens razão.
    quando desenvolvia em vba so me lembrava disso quando experimentava e me dava uma msgbox em branco ^^.
     
  5. hfca

    hfca Power Member

    Podes definir a mensagem que aparece após a validação feita pelo MS Access, na propriedade Validation Text.

    Desta forma nem precisas de usar VBA.
     
  6. Peddro

    Peddro [email protected] Member

    E assim fazes logo a validação campo a campo... ;)
     
  7. O err.number é o 0 (zero). Descobri fazendo debug.print (err.number). Depois tentei fazer o que dizsseste, mas continuou a dar o erro do access e nem chegou a aparecer a msgbox.

    Eu também já tinha reparado nessa possibilidade, mas não sei como utilizar. Podias dar uns exemplos, ou melhor ainda o exemplo concreto para esta minha situação?


    Cumps
     
  8. hfca

    hfca Power Member

    Como tu próprio disseste :
    O texto que incluíres na propriedade Validation Text irá aparecer no lugar do "the value you entered isn't valid for this field" quando o access fizer a sua própria validação e o valor inserido estiver incorrecto.

    Por exemplo:
    Com a propriedade Validation Text = "Este campo só aceita numeros"

    Se inserires a letra 'a' nesse campo definido na base de dados como sendo do tipo número, a validação automática do access mostra-te um popup com a mensagem "Este campo só aceita numeros".


    Como disse antes, isto não mete VBA nenhum por isso acho que não há muito mais a explicar.
    Espero que tenha ajudado.
     
    Última edição: 26 de Janeiro de 2009
  9. Antes de mais muito obrigado pela ajuda.

    Eu já tinha feito isso (e fiz agora outra vez para ter a certeza) de escrever "O valor não é válido" no Validation Text e continuo, mesmo assim, a receber a mensgem de erro do access com o texto em inglês em vez do meu.

    Tens a certeza que é mesmo assim?


    Cumps
     
  10. Também ja tentei o evento beforeupdate, mas também não estou a conseguir...
     
  11. hfca

    hfca Power Member

    Tenho a certeza. Até porque tenho isso a funcionar.

    A única diferença é que eu estou a usar também o Validation Rule (uma vez que a minha validação é mais complexa que a do access).

    No Validation Rule coloco IsMyFunction([Nome da Coluna a Validar])=True.

    Depois defino a função em VBA. Ex:
    Código:
    Function IsMyFunction(MyString As String) As Integer
    
    If Not IsNumeric(MyString) Then
        IsMyFunction = False
        Exit Function
    End If
    
    IsMyFunction = True
    
    End Function
    
    Coloco também no Validation Text o texto "Este campo só aceita números".


    Depois é só colocar um caracter no campo, que ele lança-me uma janela com "Este campo só aceita números".


    NOTA: O Validation Rule tem de ser "IsMyFunction([Nome da Coluna a Validar])=True" e não "=IsMyFunction([Nome da Coluna a Validar])=True"

    Tenta procurar no google, o que não falta aí são explicações deste género.
     

Partilhar esta Página