Oppure

Loading
10/12/08 19:36
francovacchiano
Per salvare i dati nella DataGridView uso questo
codice:
        If (dtsDati.HasChanges) Then
            ans = MsgBox("Changes have occurred!" & vbCrLf & "Do you wish to update?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "Updates")
            If ans = vbYes Then
                objDatiAdapterGriglia.InsertCommand = cmdBuild.GetInsertCommand 
                objDatiAdapterGriglia.DeleteCommand = cmdBuild.GetDeleteCommand
                objDatiAdapterGriglia.UpdateCommand = cmdBuild.GetUpdateCommand
                Try
                    objDatiAdapterGriglia.Update(dtsDati.Tables("TabDettaglioFatture"))
                    dtsDati.AcceptChanges()
                Catch exManual As Exception
                    MsgBox(exManual.Message)
                    'Throw exManual
                Finally
                    MsgBox("hi")
                End Try
                MsgBox("Table updated!", MsgBoxStyle.Critical, "TabDettaglioFatture")
            End If
        End If
Quando modifico le colonne richiamate o aggiungo alla fine una nuova riga tutto ok.
Se provo ad aggiungere una nuova riga al centro di quelle già presenti nella DataGridView, con questo codice:

        Dim myNewRow As DataRow = dttDati2.NewRow()
        dttDati2.Rows.InsertAt(myNewRow, 2)
        dttDati2.AcceptChanges()


in fase di salvataggio mi da il famoso errore sul campo Identity:
Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti.

Avete suggerimenti ? Grazie
Ultima modifica effettuata da Il Totem 14/12/08 15:44
aaa
13/12/08 6:04
Gianluca87
Ciao,
forse ho capito qual'è il tuo problema
ma non riesco a capire cos'è l'oggetto che hai nominato dtsDati potresti fornire un progetto o un listato più completo?
aaa
14/12/08 14:54
francovacchiano
Questo è il codice che uso:

' dichiarazioni
    Private dttDati As DataTable
    Private dttDati2 As DataTable
    Private objDatiAdapterGriglia As OleDb.OleDbDataAdapter 'Odbc.OdbcDataAdapter
    Private sServerSql = ".\SQLEXPRESS"
    Private sDataBase = "DataBaseFatture"
    Private conDati As OleDbConnection = New OleDbConnection("Provider=SQLNCLI;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" & sDataBase & ";Data Source=" & sServerSql & ";Connect Timeout=5")
    Private objBindingSource As New BindingSource


'------alimenta DataGridView1
    Private Sub CaricaGriglia(ByVal nNumero As Integer, ByVal dData As Date)
    Private dttDati As DataTable
    Private dttDati2 As DataTable
    Private objDatiAdapterGriglia As OleDb.OleDbDataAdapter 'Odbc.OdbcDataAdapter
 
       objDatiAdapterGriglia = New OleDb.OleDbDataAdapter("SELECT NumeroFattura, DataFattura,  Tipo, NumeroCampione, AnnoSolareCampione, Descrizione, Importo, Qt, Sconto, ImportoNetto, CodiceIva, Iva, RigaDettaglio, ID FROM TabDettaglioFatture WHERE Tipo=1 AND NumeroFattura = " & nNumero, conDati)

        Dim builder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(objDatiAdapterGriglia)
        builder.QuotePrefix = "["
        builder.QuoteSuffix = "]"

        dtsDati = New DataSet()
        objDatiAdapterGriglia.Fill(dtsDati, "TabDettaglioFatture")     'Carico il dataset
        dttDati2 = dtsDati.Tables("TabDettaglioFatture")
        Me.DataGridView1.DataSource = dtsDati
        Me.DataGridView1.DataMember = "TabDettaglioFatture"
    End Sub

'----------Salvataggio dati
   Private Sub PlsSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlsSalva.Click
        Dim ans As String
        objBindingSource.EndEdit()
        Dim cmdBuild As New OleDb.OleDbCommandBuilder(objDatiAdapterGriglia)
        If (dtsDati.HasChanges) Then
            ans = MsgBox("Changes have occurred!" & vbCrLf & "Do you wish to update?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "Updates")
            If ans = vbYes Then
                objDatiAdapterGriglia.InsertCommand = cmdBuild.GetInsertCommand 
                objDatiAdapterGriglia.DeleteCommand = cmdBuild.GetDeleteCommand
                objDatiAdapterGriglia.UpdateCommand = cmdBuild.GetUpdateCommand
                Try
                    objDatiAdapterGriglia.Update(dtsDati.Tables("TabDettaglioFatture"))
                    dtsDati.AcceptChanges()
                Catch exManual As Exception
                Finally
                    MsgBox("hi")
                End Try
                MsgBox("Table updated!", MsgBoxStyle.Critical, "TabDettaglioFatture")
            End If
        End If
    End Sub
Ultima modifica effettuata da Il Totem 14/12/08 15:45
aaa