Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Evento NotInList
giovedì 14 novembre 2013 - 22.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
thetmd
Profilo
| Newbie
12
messaggi | Data Invio:
gio 14 nov 2013 - 22:47
Ciao,
scusate ma non riesco a capire il funzionamento dell'evento notinlist che ho associato ad una combobox
1) ho una tabella che contiene i nomi di giochi
2) un'altra tabella che tra i campi ha il nome del gioco (preso dalla tabella percedente)
Private Sub Nome_NotInList(NewData As String, Response As Integer)
Dim RS As Recordset
Dim IDtblNomi As Integer
Dim Controllo As Control
Dim strSQL
Set Controllo = Me!Nome
Controllo.Undo
If MsgBox("Valore non in elenco. Aggiungerlo?", vbOKCancel) = vbOK Then
'DoCmd.RunCommand acCmdUndo
'***** PARTE DI CODICE CHE HO RECUPERATO OGGI, IN SOSTITUZIONE DELL'USO DEL RECORDSET
strSQL = "INSERT INTO tblNomi([Nome]) " & _
"VALUES ('" & NewData & "');"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Response = acDataErrAdded
'***** CODICE ORIGINALE PER L'AGGIUNTA DEL NUOVO RECORD
' Set RS = CurrentDb.OpenRecordset("tblNomi")
' With RS
' .AddNew
' !Nome = NewData
' IDtblNomi = !IDtblNomi
' .Update
' End With
' If Asc(Left(NewData, 1)) < 65 Then
' CartellaAppartenenzaGioco = "#"
' Else
' CartellaAppartenenzaGioco = UCase(Left(NewData, 1))
' End If
' Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
Quello sopra riportato è il codice che ho scritto utilizzando parti prese da internet....funziona tutto alla meravigli....quando inserisco una voce che non è in elenco questa viene aggiunta alla tabella di origine dati della combobox (tabella dei nomi).
Nella seconda tabella compare il nuovo record che ha il nome appena inserito, oltre agli altri dati.
Quello che non capisco è: come mai se cancello un record dalla seconda tabella (che di fatto riceve i dati), mi sparisce anche il record dalla tabella nomi (che di fatto fornisce i dati)?
Proprio non capisco
Se poteste darmi qualche spiegazione vi ringrazio
Pierpaolo
CorriCorrado
Profilo
| Junior Member
86
messaggi | Data Invio:
lun 18 nov 2013 - 14:24
Ciao,
direi che hai un problema con l'integrità referenziale.
>1) ho una tabella che contiene i nomi di giochi
>2) un'altra tabella che tra i campi ha il nome del gioco (preso
>dalla tabella percedente)
La tabella 1 è l'origine del campo per la tabella 2, ossia la tabella 2 ha una chiave esterna NomeGioco al campo ID della tabella1
>Quello che non capisco è: come mai se cancello un record dalla
>seconda tabella (che di fatto riceve i dati), mi sparisce anche
>il record dalla tabella nomi (che di fatto fornisce i dati)?
La relazione che esiste tra le due tabelle consente di evitare ridondanza nei dati, alleggerendo anche il DB, facilitando il data entry. Se cancelli un record utlizzato come chiave esterna di una combobox, è naturale che questa informazione sparisca?
La risposta è no, almeno che tu non voglia consentire l'aggiornamento a cascata. Dovresti strutturare il DB in modo tale che un'operazione di cancellazione di un record di tabella 1 non sia consentito se vi sono chiave esterne ad esso associato.
Ciao
Corrado
thetmd
Profilo
| Newbie
12
messaggi | Data Invio:
lun 18 nov 2013 - 19:38
Grazie Corrado,
la tua risposta è identica a quanto ho avuto modo di leggere in altro forum
Non avendo avuto risposta alla domanda ho continuato a cercare e chiedere e temo, senza cattiveria, di aver contravvenuto alla regola di non fare la stessa domanda su forum differenti per non far sprecare tempo.
Ti ringrazio per il tempo che mi hai dedicato, e per la risposta comunque corretta
Pierpaolo
Torna su
Stanze Forum
Elenco Threads
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 !