Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655

    [vb e access] Controllo form

    Sto creando delle maschere in access e vorrei fare un controllo su quello che l'utente immette nelle textbox, cioè se l'utente immette dei dati non validi non deve avvennire la scrittura del db, ma deve apparire un msg di errore.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    In pratica quello che vorri fare è questo, ma non funge
    Option Compare Database

    Private Sub Comando2_Click()

    On Error GoTo Err_Comando2_Click

    Dim stDocName As String
    nome.Value

    If nome.Text = "" Then

    MsgBox ("Attenzione")
    End If

    stDocName = "Query1"
    DoCmd.OpenQuery stDocName, acNormal, acEdit

    Exit_Comando2_Click:
    Exit Sub

    Err_Comando2_Click:
    MsgBox Err.Description
    Resume Exit_Comando2_Click

    End Sub

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Risolto:
    Me!nome.SetFocus
    If nome.Text = "" Then
    MsgBox ("Attenzione")
    Else
    ..
    ..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Pensavo di aver risolto, ma invece.. il controllo funziona sola se associato ad una texbox se lo applico a due non va,se attivo le due textbox mi dice che non può far riferimento ad un oggetto non attivo.
    Che faccio?
    Una buona guida online di vba?

  5. #5
    Utente di HTML.it L'avatar di daryl74
    Registrato dal
    Jun 2001
    Messaggi
    125
    Prova così: sull' ON_CLICK del pulsante metti:

    codice:
    if Me.CampoTesto_1 = "" or Me.CampoTesto_2 = "" then
       MsgBox ("Attenzione") 
    else
       DoCmd.OpenQuery "Query1", acNormal, acEdit 
    end if
    Ciao

    Non hai bisogno di settare il fuoco sui 2 campi per controllarne il valore.

    DaryL74

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Ma tu non definisci il focus perchè non fai Me.CampoTesto_1.text="", cmq cosi non funge. Una domanda che differenza c'è tra Me!.campo e Me.Campo?
    Grazie


  7. #7
    Utente di HTML.it L'avatar di daryl74
    Registrato dal
    Jun 2001
    Messaggi
    125
    Allora "Me!.CampoTesto_1" non si può scrivere. La sintassi è: "Me!CampoTesto_1" oppure Me.CampoTesto_1".
    La differenza non te la so spiegare.

    In ogni caso: Ho creato una maschera con due campi testo:
    "CampoTesto_1"
    "CampoTesto_2"

    ed un pulsante:
    "Comando2"

    sull'evento CLIC del pulsante ho scritto questa macro e funziona:
    codice:
    Private Sub Comando2_Click()
      On Error GoTo Err_Comando2_Click
    If Me.CampoTesto_1 = "" Or IsNull(Me.CampoTesto_1) Or Me.CampoTesto_2 = "" Or IsNull(Me.CampoTesto_2) Then
       MsgBox ("Attenzione")
    Else
       MsgBox ("Eseguito")
       DoCmd.OpenQuery "Query1", acNormal, acEdit
    End If
    
    Exit_Comando2_Click:
    Exit Sub
    
    Err_Comando2_Click:
    MsgBox Err.Description
    Resume Exit_Comando2_Click
    
    End Sub
    Prova a seguire questo esempio. Che nomi hanno i tuoi campi di testo ?
    Riguardo al settaggio del fuoco sul campo: intendevo che per stabilire qual'è il valore di un campo di testo questo non deve per forza essere selezionato. La sintassi che ti ho scritto rileva il valore presente nel campo indipendentemente dal controllo selezionato.

    Ciao

    DaryL74

  8. #8
    altrimenti puoi mettere il codice qui sotto nell'evento lostfocus:
    codice:
    Private Sub CampoTesto1_LostFocus()
        if CampoTesto1.Text ="" then 'o quello che vuoi
            MsgBox "Messaggio"
            CampoTesto1.SetFocus
        end if
    End Sub
    *** Rachele TI AMO DA MORIRE!!! ***

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Ho provato con questa funzione
    Function IsNothing(varToTest As Variant) As Integer
    IsNothing = True
    Select Case VarType(varToTest)
    Case vbEmpty
    Exit Function
    Case vbNull
    Exit Function
    Case vbBoolean
    If varToTest Then IsNothing = False
    Case vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency
    If varToTest <> 0 Then IsNothing = False
    Case vbDate
    IsNothing = False
    Case vbString
    If (Len(varToTest) <> 0 And varToTest <> " ") Then IsNothing = False
    End Select
    End Function
    Che viene richiamata da questa procedure

    Private Sub inserisci_Click()
    On Error GoTo Err_Comando2_Click

    Dim stDocName As String

    If IsNothing(Codice_G) Or IsNothing(Luogo) Then
    MsgBox ("ERRORE")
    Else
    stDocName = "query1"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
    End If

    End Sub
    Però non funziona, o meglio funziona solo se entrambi i campi sono di tipo text,se uno è di tipo text e uno numererico non va..
    Come mai?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.