Errore 2118

domenica 27 ottobre 2013 - 18.10
Tag Elenco Tags  Access (.mdb)

thetmd Profilo | Newbie

Ciao a tutti
Sto cercando di mettere su un piccolo database, con tante idee ma pochissima esperienza in fatto di access, giusto qualche rudimento e qualche nozione di vba.
Considerato che ho già avuto dei buoni riscontri da questo forum faccio quest'altra domanda (ho cercato nel forum ma non ho trovato altre questioni simili)

Ho una combobox in un form. L'origine dati della combo è una query di selezione che pesca da 1 sola tabella (per intenderci la query mi serve solo per ordinare i dati della tabella...non ho trovato altro modo per averli ordinati dentro la listbox)
Considerato che mi interessa poter aggiungere direttamente nella combo eventuali nuovi valori ho scritto queste righe di codice che dovrebbero aggiungere il nuovo record alla tabella tblSWHouses, aggiornarla, e poi associare al testo della combobox il nuovo valore NewData

Private Sub SWHouse_NotInList(NewData As String, Response As Integer) 'SWHouse è il nome della combobox
Dim RS As Recordset
Dim NumeroId As Integer

DoEvents 'credo non serva ad una beneamata mazza
Response = acDataErrContinue 'questa riga l'ho presa in altro forum e non visualizza il messaggio standard di errore
DoCmd.RunCommand acCmdUndo 'presa in altro forum, prima di inserirla il codice non funzionava nemmeno una volta

Set RS = CurrentDb.OpenRecordset("tblSWHouses")
With RS
.AddNew
!SWHouse = NewData
NumeroId = !IDtblSWHouses
.Update
End With

SWHouse.Requery
SWHouse.Text = NewData

End Sub

Il problema è il seguente: qualche volta funziona e qualche altra (la maggior parte) non funziona e mi da l'errore 2118 circa il fatto che il campo deve essere salvato prima della richiesta di requery
Credo che il problemia sia una questione di tempi ma non saprei come verificare la cosa, né come allungare i tempi: quando la procedura mi da errore, ho provato ad andare nel debug e manualmente fargli eseguire l'undo e poi il requery ed allora funziona (anche qui non sempre)

ADDENDUM: ho inserito il codice su un altro combobox dello stesso form e li funzinoa tutto che è una meraviglia....digito il nuovo valore e premo tabulazione (o invio) e access mi presenta l'elenco delle voci disponibili tra le quali scegliere inserendovi anche il nuovo valore..
Le due combobox sono identiche per quel che riguarda le proprietà (ho verificato) ed anche quest'ultima prene i dati da una query (per lo stesso motivo di averli in ordine alfabetico)


=============================================================================================================
Leggendo qua e la ho risolto in questa maniera...ma non capisco ancora perchè la soluzione precedente funzionava per una combobox e non per l'altra

Private Sub SWHouse_NotInList(NewData As String, Response As Integer)
Dim RS As Recordset
Dim NumeroId As Integer

Response = acDataErrAdded
DoCmd.RunCommand acCmdUndo

Set RS = CurrentDb.OpenRecordset("tblSWHouses")
With RS
.AddNew
!SWHouse = NewData
NumeroId = !IDtblSWHouses
.Update
End With

'SWHouse.Requery
'SWHouse.Text = NewData

End Sub




dove sto sbagliando?
Grazie
Pierpaolo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5