Discussione:
Errore in Update
(troppo vecchio per rispondere)
NooS
2009-09-03 20:58:01 UTC
Permalink
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?
Corrado Cavalli [MVP]
2009-09-04 04:27:36 UTC
Permalink
Post by NooS
Io ho scritto due routine per leggere prima un database su Access,
manipolarlo e poi fare l'update su file.
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
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...
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?
Probabilmente la tabella che vuoi aggiornare non ha una chiave primaria
oppure la query che utilizzi per la select non include la chiave...
--
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - http://www.ugidotnet.org
Weblog: http://blogs.ugidotnet.org/corrado/
Loading...