Forms |
3.39 Si può aggiungere un record alla tabella che è origine riga di una casella combinata senza usare una maschera? |
Roberto |
E’ possibile aprendo un recordset sulla tabella a fronte dell’evento “Su non in elenco” della casella combinata. Il database di esempio allegato a questa FAQ è stato creato in Access 97 facendo riferimento alle librerie DAO. La tabella che è codice riga della casella combinata si chiama Prodotti e contiene due campi: IDProdotto (di tipo Contatore e chiave primaria) e Prodotto (di tipo Testo). La casella combinata si chiama MiaCombo: ha due colonne, di cui visibile solo la seconda. La proprietà “Solo in elenco” della casella combinata va impostata a Si. Quello che segue è il codice VBA che va generato a fronte dell’evento “Su non in elenco” della casella combinata: Private Sub MiaCombo_NotInList(NewData As String, Response As Integer) Dim IntNuovo As Integer, strTitolo As String Dim IntFinestraMsg As Integer, strMsg As String strTitolo = "Prodotto digitato non in elenco" strMsg = "Vuoi aggiungere" & Chr(13) & Chr(10) & NewData & Chr(13) & Chr(10) & "in elenco?" IntFinestraMsg = vbYesNo + vbQuestion IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo) If IntNuovo = vbYes Then Dim miorst As DAO.Recordset Set miorst = CurrentDb.OpenRecordset("Prodotti") miorst.AddNew miorst!Prodotto = NewData Me![MiaCombo] = miorst![IdProdotto] miorst.Update miorst.Close strTitolo = "Inserimento nuovo Prodotto in elenco" strMsg = "Inserimento in elenco di" & Chr(13) & Chr(10) & NewData & Chr(13) & Chr(10) & "con successo" IntFinestraMsg = vbOKOnly + vbExclamation IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo) Response = acDataErrAdded Me![MiaCombo].Requery Else strTitolo = "Nome del prodotto errato" strMsg = NewData & " non č in elenco." & Chr(13) & Chr(10) & "Seleziona un prodotto dall'elenco" IntFinestraMsg = vbOKOnly + vbExclamation IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo) Response = acDataErrContinue Me![MiaCombo].Undo End If End Sub Nota Il codice VBA di cui sopra fa riferimento alla libreria Microsoft DAO quindi, se si usa una versione di Access successiva ad Access 97, è necessario aggiungere al database i riferimenti a Microsoft DAO 3.6 Object Librery. Download: |