Salve a tutti...ho un problema che non riesco a risolvere,in pratica questo è il mio codice con cui inserisco dati in una tabella collegata ad un altra in relazione uno a molti.
Il problema è l errata gestione dell ID,e spero qualcuno possa risolvere i miei dubbi
L id nella tabella editori è una var autoincrementante,mentre quella dei libri è testuale
In pratica il risultato dell id mi vale sempre 0 e non capisco dove sia l errore.Ho commentato il codice quindi dovrebbe essere molto chiaro ...grazie
codice:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim last_id As Object
Dim con_string As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\prova.mdb"
' Apro una connessione col database
Dim conn_contab As New OleDb.OleDbConnection(con_string)
conn_contab.Open()
' Operazione di INSERT di un nuovo editore
Dim cmd As New OleDbCommand( _
"INSERT INTO editori (nome) " & _
"VALUES (?)", _
conn_contab)
cmd.Parameters.Add(New OleDbParameter("nome", TextBox1.Text))
' Prelevo l ID dell editore inserito
Dim preleva_id As New OleDbCommand( _
"SELECT @@identity from editori", conn_contab)
preleva_id.CommandType = CommandType.Text
last_id = preleva_id.ExecuteScalar()
MsgBox(last_id)
' Operazione di INSERT di un nuovo libro con ID editore aggiornato
Dim cmd2 As New OleDbCommand( _
"INSERT INTO libri (isbn,titolo,id_editore) " & _
"VALUES (?,?,?)", _
conn_contab)
cmd2.Parameters.Add(New OleDbParameter("isbn", TextBox2.Text))
cmd2.Parameters.Add(New OleDbParameter("titolo", TextBox3.Text))
cmd2.Parameters.Add(New OleDbParameter("id_editore", last_id))
' Eccezioni
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
' Salva
Me.Validate()
Me.EditoriBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ProvaDataSet)
'Svuota le caselle di testo
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
' Chiudi la connessione
conn_contab.Close()
conn_contab.Dispose()
'Refresh dei DataGridView
Me.EditoriTableAdapter.Fill(Me.ProvaDataSet.editori)
Me.LibriTableAdapter.Fill(Me.ProvaDataSet.libri)
Me.JoinTableAdapter.Fill(Me.ProvaDataSet.join)
'Fa ripartire la combobox a valore nullo
ComboBox1.SelectedIndex = -1