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