Azzeramento caselle di testo

di il
28 risposte

Azzeramento caselle di testo

Ciao a tutti,
come posso rendere dei campi vuoti di una maschera ad ogni apertura della stesa come fosse un nuovo inserimento?
mi spiego, avendo una maschera di avvio dove con una casella combinata cerco il cliente che seleziono per poi inserire di conseguenza il dato che mi serve (note)? come faccio a renderlo vuoto ogni qualvolta io lo vada in cerca per inserirne una nuova?
Grazieeeee

28 Risposte

  • Re: Azzeramento caselle di testo

    Apri la maschera in modalità Inserimento dati...
  • Re: Azzeramento caselle di testo

    Già fatto ma mi rimane inserita l'ultima nota inserita per quel cliente e non capisco dove ho sbagliato.
    Nella pulsante di ricerca della maschera di avvio ho inserito un codice vba per portarmi ai dati cliente ma così facendo mi riporta anche all'ultima nota inserita, io invece vorrei che mi ripotasse sì al cliente però con un campo vuoto (Note)
  • Re: Azzeramento caselle di testo

    stef_83 ha scritto:


    così facendo mi riporta anche all'ultima nota inserita
    C'è dell'altro che non sappiamo che interviene a modificare il comportamento che ci aspetterebbe. Con che codice viene aperta la maschera? C'è codice nella maschera, in particolare negli eventi Open e Load?
  • Re: Azzeramento caselle di testo

    
    Private Sub Trova_Cliente_Click()
    If (IsNull(ID_Note)) Then
    MsgBox "Attenzione! Inserisci Cliente", vbInformation, "Informazione"
    Me.ID_Note.SetFocus
    Exit Sub
    End If
    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]
    Me!ID_Note = Null
    End Sub
    
    questo è il codice che ho inserito nel pulsante trova nella maschera di avvio che mi apre la maschera di aggiunta note del cliente scelto.ma che mi riporta all'ultima nota scritta.
  • Re: Azzeramento caselle di testo

    Aggiungo un'altra cosa, per far si che la maschera mi si aprisse in nuovo record pensavo di usare questo codice in "apertura maschera"
    
    DoCmd.GoToRecord acForm, Me.Name, acNewRec
    
    ma mi azzera tutto non solo i campi note, come faccio perché mi apra solo il campo note della note come fosse nuovo record e non i dati del cliente?
  • Re: Azzeramento caselle di testo

    Per ogni Cliente hai molte Note? Se sì hai una relazione Clienti uno-a-molti Note? Questo aspetto non è chiaro. Oppure sono io che non ho capito nulla?
  • Re: Azzeramento caselle di testo

    Per ogni cliente avrei molte note, ed ho messo una relazione uno a molti si esatto..
  • Re: Azzeramento caselle di testo

    Secondo me devi prima dare il Focus sulla maschera Note, poi fai il GoToRecord ---> acNewRec
  • Re: Azzeramento caselle di testo

    Si ma cosi facendo non do cmq nuovo record a tutti i campi visto che sono comunque presenti tutti?sia quelli dei dati clienti che delle note?
  • Re: Azzeramento caselle di testo

    Non devi mettere Me.Name, perchè così fai riferimento a Clienti. Non ho capito se hai maschera/sottomaschera Clienti/Note oppure se Note è una maschera "collegata".
  • Re: Azzeramento caselle di testo

    Maschera principale e poi tramite casella combinata ricerco cliente e con il pulsante "trova" mi apre maschera aggiunta note,
    ma io nel codice ho già messo il focus
    
    Private Sub Trova_Cliente_Click()
    If (IsNull(ID_Note)) Then
    MsgBox "Attenzione! Inserisci Cliente", vbInformation, "Informazione"
    Me.ID_Note.SetFocus
    Exit Sub
    End If
    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]
    Me!ID_Note = Null
    End Sub
    
    sbagliato?
  • Re: Azzeramento caselle di testo

    Questa cosa che hai scritto denota che non hai capito come funzionano le Relazioni tra le tabelle
    
    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]
    Se hai una Tabella NoteClenti in relazione 1-M con la Tabella Clienti, allora serve che la Maschera [Note_Clienti] venga aperta in modalità Aggiungi record, come già ti ho detto ma non hai ascoltato, solo che il Filtro non serve a nulla... in quanto devi Valorizzare come DefaultValue della ForeignKey(chiave esterna) il valore di IDCliente.
    Quindi io farei così:
    
    DoCmd.OpenForm "Note_Clienti", , , , , ,Me![IDCliente]
    Poi su Load della [Note_Clienti] andrai a leggere OpenArgs ed aforzare il DefaultValue del Controllo associato a IdCliente
    
    Private Sub Form_Load()
        If Len(Me.OpenArgs)>0 Then 
            Me.IDCliente.DefaultValue=chr(34) & Me.OpenArgs & chr(34)
            DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
        End If
    End sub
  • Re: Azzeramento caselle di testo

    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]

    questa siamo sicuri che è corretta?
    Me!ID_Note = Null

    il Me si usa solo per la maschera da cui è partito il codice. Se stai parlando di un'altra maschera, devi dichiarare il nome completo Forms!Note_Clienti!ID_Note

    P.S.: segui il suggerimento di @Alex, mi sembra più efficace.
  • Re: Azzeramento caselle di testo

    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]
    con questo mi si apre la seconda maschera
    con il codice di @Alex mi da errore.
    "impossibile trovare il campo a cui fa riferimento nell'espressione"
    io l'ho sostituita a quella mia
    DoCmd.OpenForm "Note_Clienti", , , "[ID_clienti] = " & Me![ID_Note]
Devi accedere o registrarti per scrivere nel forum
28 risposte