Salve a tutti
,
Sto cercando di creare un db di componenti elettronici in access 2007 per l'ufficio in cui lavoro.
Ho creato una query di accodamento che, tramite il click di un pulsante, dovrebbe inserire il record da alcune textbox e combobox nella tabella "tb_componenti".
Quando clicclo sul pulsante mi restituisce il seguente errore :master:
Impossibile accodare tutti i record nella query di accomodamento
Numero di campi impostati a Null per un errore di conversione tra tipi:0; numero di record non aggiunti alla tabella a causa di violazioni di chiave:1; a causa di violazione di condivisione;0; a causa di violazioni della regola di convalida:0
Continuare comunque l'esecuzione della query di comado?
Fare click su si per ignorare l'errore o gli errori ed eseguire la query.
per una descrizione delle cause delle violazioni consultare la guida in linea
Posto il codice che ho scritto in vba:
codice:
Private Sub cmd_inserisci_Click()
Dim recComponenti As New ADODB.Recordset
Dim trovato As Boolean
Dim query1 As String
recComponenti.Open "tb_componenti", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
query1 = "INSERT INTO tb_componenti ([Nome Componente], [ID Tipologia], [ID Produttore], Descrizione, Giacenza, [ID Posizione], [ID Fornitore], [Codice Fornitore]) values ('" & txt_nomecomponente & "','" & txt_tipologia & "','" & txt_produttore & "','" & txt_descrizione & "','" & txt_giacenza & "','" & txt_posizione & "','" & txt_fornitore & "','" & txt_codicefornitore & "')"
trovato = False
If IsNull(txt_nomecomponente) Or IsNull(txt_tipologia) Or IsNull(txt_produttore) Or IsNull(txt_descrizione) Or IsNull(txt_giacenza) Or IsNull(txt_posizione) Or IsNull(txt_fornitore) Or IsNull(txt_codicefornitore) Then
trovato = True
MsgBox ("Alcuni campi sono vuoti!")
Else
Do Until recComponenti.EOF
If StrComp(txt_fornitore, recComponenti![ID Fornitore]) = 0 And StrComp(txt_codicefornitore, recComponenti![Codice Fornitore]) = 0 Then
trovato = True
MsgBox ("Elemento già presente!")
End If
recComponenti.MoveNext
Loop
End If
If trovato = False Then
DoCmd.RunSQL query1
MsgBox ("Componente inserito nel Database")
End If
End Sub
Qualcuno mi sa spiegare come posso andare avanti?
Grazie