La tabella non ha una chiave primaria!

di il
1 risposte

La tabella non ha una chiave primaria!

Ho il seguente codice :


    Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\archivio\pratiche.mdb;"
        Dim conn As New OleDbConnection(ConnectionString)

        conn.Open()
        Dim adapter As New OleDbDataAdapter("SELECT ID,RAGSOC1,INDIRIZZO,COMUNE from medici;", conn)
        Dim builder As New OleDbCommandBuilder(adapter)
        Dim ds As New DataSet("dataSet")
        adapter.Fill(ds, "medici")

        Dim MediciTable As DataTable = ds.Tables("medici")
        MediciTable.PrimaryKey = {MediciTable.Columns("ID")}
        DGV.DataSource = MediciTable

    End Sub

    Private Sub cerca_Click(sender As Object, e As EventArgs) Handles cerca.Click
        Dim cercaRiga As DataRow = MediciTable.Rows.Find(mioID)
        If Not (cercaRiga Is Nothing) Then
            Dim RESULT As DialogResult = MessageBox.Show(Me, "Cancelli il record?", "remove", MessageBoxButtons.YesNo)
            If RESULT = DialogResult.Yes Then
                MediciTable.Rows.Remove(cercaRiga)
                MediciTable.AcceptChanges()
                adapter.Update(ds, "medici")
                MessageBox.Show("Record cancellato")
            End If
        End If
    End Sub

    Private Sub DGV_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellClick
        mioID = DGV.Rows(DGV.CurrentRow.Index).Cells(0).Value
    End Sub
Seleziono dalla datagrid un riga e clicco su cerca_click per modificare/cancellare i dati, ma ricevo il seguente messaggio di errore:
'La tabella non ha una chiave primaria.'
Se inserisco tutto il codice nella sub cerca...tutto funziona.
Mi aiutate a capire, per favore?

1 Risposte

  • Re: La tabella non ha una chiave primaria!

    Ho risolto modificando la riga [CODE]Dim MediciTable As DataTable = ds.Tables("medici")
    in
    Medici=ds.tables("medici")
    ,
    giacchè nelle intestazioni avevo già dichiarato :
    
    Public Class Form4
        Dim MediciTable As New DataTable
        Dim adapter As New OleDbDataAdapter
        Dim ds As New DataSet
        Dim mioID As Integer
        Dim cercaRiga As DataRow
    
    Grazie lo stesso.
    E' sempre piacevole sapere che c'è qualcuno che può aiutarti a risolvere.
Devi accedere o registrarti per scrivere nel forum
1 risposte