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