Inserimento record in database con VB.NET

di il
5 risposte

Inserimento record in database con VB.NET

Ciao a tutti...

Ho un database con due tabelle. Una tabella "clienti" e una tabella "etichette". Eseguo una select su "clienti" da cui estraggo i seguenti campi:

nominativo,indirizzo,cap, località,provincia.

I risultati tramite databinding vengono visualizzati in textbox.

Ecco...se voglio inserire questi dati nella tabella "etichette" mi restituisce l'eccezione

"Eccezione non gestita di tipo "System.Data.OleDb.OleDbException" in system.data.dll"

quando eseguo cmd.ExecuteNonQuery

Qualcuno sa spiegarmi sta cosa?
Spero di essermi spiegato...Grazie1000

5 Risposte

  • Re: Inserimento record in database con VB.NET

    Ciao cosi ad occhio è il tipico errore di classe cioè segnala che la classe non può essere ereditata.
    Se il tipo di errore non diventa gestibile di solito Vb.net chiude l'oggetto OleDbConnection e quindi la connessione. Ma in genere su un nuovo evento potresti riaprire la connessione e continuare. Magari se posti meglio il problema vedo se riesco a darti una mano.
    Ciao Sergio

    sergio
  • Re: Inserimento record in database con VB.NET

    La tabella clienti ha questi campi:
    Codice_Cli, Nominativo_Cli, Indirizzo_Cli, Località_Cli, Provincia_Cli, Cap_Cli, PartitaIVA_Cli, CodiceFiscale_Cli

    La tabella etichette ha questi campi:
    Nominativo, Indirizzo, Cap, Località, Provincia

    Dalla tabella "clienti" faccio una ricerca per codice ed estraggo solamente Nominatvo_Cli, Indirizzo_Cli, Cap_Cli, Località_Cli, Provincia_Cli e i dati estratti vengono visualizzati nelle relative textbox

    'Per ricercare il record che mi interessa faccio così

    Private Sub ButtonOk_Click(ByVal sender As System.Object, ByVAl e As System.EventArgs) Handles ButtonOk.Click
    OleDbDataAdapter1.SelectCommand.Parameters("Codice_Cli").Value=TextboxCodice.text
    DataSetClienti.Clear
    OleDbDataAdapter1.Fill(DatasetClienti)
    End Sub

    'Cerco di inserire i dati dalle textbox a "Etichette" in questo modo:

    Private Sub ButtonInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonInserisci.Click

    Dim nom, ind, cap, loc, prov as String

    nom = TextboxNominativo.Text : ind = TextboxIndirizzo.Text
    cap = TextboxCap.Text: loc = TextboxLocalità.Text
    prov = TextboxProvCli.Text

    Dim connstring As String = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" _
    " c:\ Anagrafiche.mdb"

    Dim commandString As String= "INSERT INTO [etichette] (nominativo,indirizzo,cap,località,provincia) Values ('" + nom + "','" + ind + "', '" + cap + "','" + loc + "','" + prov "')"

    Dim con as New OleDbConnection(connstring)
    Dim cmd As new OleDbCommand(commandString, con)

    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
    End Sub

    Questo è il codice, spero di essere stato un po' più chiaro stavolta...

    Ho notato anche che se non effettuo la ricerca, ma digito io i dati nelle textbox non c'è nessun problemi e questi vengono registrati normalmente

    Grazie ancora

    Stefano
  • Re: Inserimento record in database con VB.NET

    So d nn essere molto utile, però magari è un inizio. Perkè nn provi a gestire l'eccezione? Tu fai un try catch, nel catch fai stampare a video (con una messagebox) la exception.message e dovrebbe darti un piccolo testo in cui è spiegata l'eccezione. Poco utile, ma forse può darti qlke kiarimento su cosa provoca l'eccezione.
  • Re: Inserimento record in database con VB.NET

    Ciao stekimir,
    non ho fatto delle prove ma mi sembra che l'errore sia nelle stringa di connessione quando ti connetti alla tabella etichette quindi OleDbException è causato dalla mancanza di un'origine dati
    prova a sostituire la tua stringa di connessione :

    Dim connstring As String = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" _
    " c:\ Anagrafiche.mdb"

    con questa

    Dim connstring As New System.Data.OleDb.OleDbConnection()
    connstring.ConnectionString = & _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
    "C:\Anagrafiche.mdb"

    Ciao


    sergio
  • Re: Inserimento record in database con VB.NET

    Ciao...scusate ma non potevo rispondere prima.

    La mia stringa di connessione è giusta, l'ho scritta solo in modo diverso dal tuo, ma alla fine è la stessa cosa...

    Effettivamente ho fatto come mi ha suggerito E_ma e devo dire che ho ristretto il raggio d'azione...

    In pratica mi è restituita l'eccezione solo se effettuo la ricerca su un determinato record. per tutti gli altri funziona perfettamente.
    In definitiva non riesco a inserire nella seconda tabella tutti i campi, per cui viene generata l'eccezione.

    Quindi il problema potrebbe essere nel database.

    Comunque grazie 1000 a entrambi per la risposta
Devi accedere o registrarti per scrivere nel forum
5 risposte