OsvaldoLaviosa ha scritto:
ProgrammD ha scritto:
Riesco ad inserire il testo non compreso nell'elenco della combo-box, ma non esce nessun avviso
Hai impostato "Solo in elenco: Sì"?
ProgrammD ha scritto:
DoCmd.OpenForm "B", acForm (a questo punto il mio database mi da solo acFormDS, non c'è nell'elenco acForm) forse la mia versione di access è più vecchia o più nuova rispetto alle istruzioni ?
È un errore di mia battitura. Grazie per avermelo rilevato.
Puoi lasciare vuoto quell'argomento che di default significa acNormal.
ProgrammD ha scritto:
Per quanto riguarda il secondo VBA, si tratta del primo record della tabella B ? e va scritto B1 ? (ovviamente mettendo il nome della maschera al posto di B).
Non ti seguo...perfettamente.
Nel mio documento [nome tabella] = [nome maschera], quindi B è sia la tabella, sia la maschera corrispondente.
B1 è il secondo campo di B. In molti casi, quando si crea una casella combinata, si tende a mettere come primo campo il CampoID (IDB), ma nascosto (0 cm in Larghezza colonne). Di conseguenza si tende a mostrare il primo campo "utile" (di solito di tipo Testo breve) e su di esso giocarsi tutto il discorso di NotInList...ecc...
ProgrammD ha scritto:
si tratta del primo record della tabella B ?
No perchè ho scritto acFormAdd che significa "predisponi la maschera solo per inserire". La maschera si posiziona automaticamente su Record Nuovo, senza neanche mostrare tutti i record precedenti.
In corrispondenza della combo-box IDProdotti (che corrisponde a IDB del documento che hai allegato) che si trova nella maschera "Ordine Acquisto" (che corrisponde alla maschera C del tuo documento allegato), ho queste proprietà:
1. Solo in elenco: Si
2. Consenti modifiche a elenco: Si
3. Eredita elenco valori: Si
4. Mostra solo valori origine riga: No
Poi nella maschera "Ordine Acquisto", in corrispondenza delle proprietà del campo IDProdotti, in Evento, Su Non in elenco, ho inserito il seguente codice VBA:
Private Sub IDProdotti_NotInList(NewData As String, Response As Integer)
Dim intReturn As Integer
intReturn = MsgBox(NewData & " non esiste nella lista NomeProdotto. Vuoi inserirlo ?", vbYesNo)
If intReturn = vbYes Then DoCmd.OpenForm "PRODOTTI",,,,, acFormAdd, acDialog, NewData
Response = acDataErrContinue
End Sub
.....................................
esce il seguente errore, in corrispondenza di DoCmd.OpenForm: Errore di compilazione: Numero errato di argomenti o assegnazione di proprietà non valida
Nella tabella PRODOTTI, in Dati, su Caricamento, ho inserito il seguente codice VBA:
Private Sub Form_Load()
If IsNull(Me.OpenArgs) = False Then Me!NomeProdotto = Me.OpenArgs
End Sub
C'è qualche errore da qualche parte ?
P.S.: nel mio database, le maschere "ORDINE ACQ", "PRODOTTI" e "Ordine Acquisto" non hanno sottomaschere.