NooS
2009-09-03 20:58:01 UTC
Io ho scritto due routine per leggere prima un database su Access,
manipolarlo e poi fare l'update su file.
Però mi viene restituito il seguente errore quando tento l'update:
Generazione SQL dinamica per UpdateCommand non è supportata per un
SelectCommand che non restituisce le informazioni di colonna chiave.
In altri progetti lo stesso codice gira.
E' questione di fortuna(se diciamo che la matematica è un'opinione) oppure
effettivamente c'è un errore da qualche parte?
Vi posto il codice dei due metodi che si trovano nella stessa classe del mio
progetto:
Sub ConnectDBFile(ByVal DBType As String, ByVal DBPath As String)
Try
m_FileData = New DBConnection
m_FileData.Connect(DBType, DBPath)
m_CurrentDBDoc.Clear()
DA1 = New OleDb.OleDbDataAdapter("SELECT * FROM Document",
Data.FileData.DBConn)
m_CurrentDBDoc = New DataTable
DA1.Fill(m_CurrentDBDoc)
Catch ex As Exception
MessageBox.Show("Errore" & vbCrLf & ex.Message, "", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
E questo va bene. Apre il DB, legge, ecc...
Poi l'update mi da l'errore:
Public Sub UpdateDBFile()
Try
mdbBuilder = New OleDbCommandBuilder(DA1)
DA1.Update(m_CurrentDBDoc)
Catch ex As Exception
MessageBox.Show("Errore aggiornamento" & vbCrLf & ex.Message, "", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Come mai che non riesco a capire dove?
manipolarlo e poi fare l'update su file.
Però mi viene restituito il seguente errore quando tento l'update:
Generazione SQL dinamica per UpdateCommand non è supportata per un
SelectCommand che non restituisce le informazioni di colonna chiave.
In altri progetti lo stesso codice gira.
E' questione di fortuna(se diciamo che la matematica è un'opinione) oppure
effettivamente c'è un errore da qualche parte?
Vi posto il codice dei due metodi che si trovano nella stessa classe del mio
progetto:
Sub ConnectDBFile(ByVal DBType As String, ByVal DBPath As String)
Try
m_FileData = New DBConnection
m_FileData.Connect(DBType, DBPath)
m_CurrentDBDoc.Clear()
DA1 = New OleDb.OleDbDataAdapter("SELECT * FROM Document",
Data.FileData.DBConn)
m_CurrentDBDoc = New DataTable
DA1.Fill(m_CurrentDBDoc)
Catch ex As Exception
MessageBox.Show("Errore" & vbCrLf & ex.Message, "", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
E questo va bene. Apre il DB, legge, ecc...
Poi l'update mi da l'errore:
Public Sub UpdateDBFile()
Try
mdbBuilder = New OleDbCommandBuilder(DA1)
DA1.Update(m_CurrentDBDoc)
Catch ex As Exception
MessageBox.Show("Errore aggiornamento" & vbCrLf & ex.Message, "", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Come mai che non riesco a capire dove?