Aggiungere un valore in casella combinata con avviso

Anonimo
2019-10-30T17:48:26+00:00

Buonasera,

in un db ho una maschera con sottomaschera e in quest'ultima una casella combinata con alcuni valori.

Vorrei poter aggiungere un nuovo valore e ricevere contestualmente un avviso di conferma.

La casella combinata è cosi predisposta:

  • Solo in elenco: Si;
  • Consenti modifiche a elenco: No;
  • Eredita elenco valori: No;

-Mostra solo valori origine riga: Si

Ringrazio e porgo cordiali saluti.

Abitante

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2019-11-02T08:11:09+00:00

ciao Abitante,

visto che hai due controlli uguali, o meglio quasi uguali, la cui unica differenza è la tabella di riferimento, non vedrei male una soluzione come quella che segue.

Imposta l'origina riga della combo CboCfAutori : SELECT TblAutori.IdAutore, TblAutori.CodiceFiscale FROM TblAutori;

due colonne la prima con larghezza 0 la seconda 5.

crea un modulo standard con questa funzione :

Option Compare Database

Option Explicit

Public Function enterNewData(ByVal NewData As String, ByVal strSql As String) As Long

Dim lngResponse As Long

lngResponse = 7 ' vbno

If VBA.MsgBox(prompt:=NewData & " non è in elenco, vuoi aggiungerlo ?", _

               buttons:=vbYesNo + vbCritical, _

               title:="Attenzione") = vbYes Then

    DBEngine(0)(0).Execute Query:=strSql & NewData & "');", _

                           options:=&H80

    lngResponse = 6 ' vbyes

End If

enterNewData = lngResponse

End Function

-

che invocherai dai due eventi non in list :

Option Compare Database

Option Explicit

Private Sub CboCfEditori_NotInList(NewData As String, Response As Integer)

Const strSql As String = "insert into TblEditori (codiceFiscale) values ('"

If enterNewData(NewData:=NewData, strSql:=strSql) = 6 Then

    Response = acDataErrAdded

Else

    Response = acDataErrContinue

    Me.CboCfEditori = Null

End If

End Sub

Option Compare Database

Option Explicit

Private Sub CboCfAutori_NotInList(NewData As String, Response As Integer)

Const strSql As String = "insert into TblAutori (codiceFiscale) values ('"

If enterNewData(NewData:=NewData, strSql:=strSql) = 6 Then

    Response = acDataErrAdded

Else

    Response = acDataErrContinue

    Me.CboCfAutori = Null

End If

End Sub

ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-10-31T19:03:48+00:00

    Ciao Sandro,

    ho apportato la modifica ma dà questo errore:

    Allego la Demo.

    Grazie.

    Abitante

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-10-31T16:31:32+00:00

    Ciao Abitante,

    la sottomaschera quando e' nidificata all'interno di una maschera (embedded) e' un controllo, al pari di una textBox, comboBox, e tutti gli altri, ma e' pure sempre una maschera a tutti gli effetti.

    Se si chiama SottomAutori,aprila con :

    Forms!SottomAutori!CboCfAutori = NewData

    Non mi piace tantissimo avere la stessa maschera aperta due volte, ma.....ok....Anche qui :

    If MsgBox("CboCfEditori non è in elenco, vuoi aggiungerlo?", vbYesNo) = vbYes Then

    valuta di mostrare nel messaggi non CboCfEditori, il nome del controllo, ma magari il newdata che stai tentando di aggiungere.Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-10-31T11:28:08+00:00

    Ciao Sandro,

    ho risolto con questo codice:

    Private Sub CboCfEditori_NotInList(NewData As String, Response As Integer)

    If MsgBox("CboCfEditori non è in elenco, vuoi aggiungerlo?", vbYesNo) = vbYes Then

      Response = acDataErrContinue

      DoCmd.OpenForm "FrmEditori", , , , acFormAdd

      Forms!FrmEditori!CboCfEditori = NewData

    Else 

      Response = acDataErrContinue

      Me!CboCfEditori.Undo

    End If

    End Sub

    Vorrei inserire una casella combinata per l'aggiunta del codice fiscale anche nella sottomaschera "SottomAutori".

    Ho provato così, ma dà errore nella seconda riga.

    DoCmd.OpenForm "FrmEditori", , , , acFormAdd

      Forms!FrmEditori!SottomAutori!CboCfAutori = NewData

    Grazie.

    Abitante

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-10-31T06:39:19+00:00

    La risposta è stata utile?

    0 commenti Nessun commento