Aggiornamento da Datagridview

venerdì 23 gennaio 2009 - 16.46

cisco7940 Profilo | Newbie

Buongiorno, riempio un Datagridview da DB Access , modifico i dati nel datagridview , al momento di salvare nel DB mi da un messaggio :
"Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti."
Devo dire che prima di salvare i dati (Button5_Click), con un botton (Button4_Click) rielaboro la tabella del db con un coefficente di incremento o decremento andando a fare un delete e un sucessivo update alla tabella del db , i cambiamenti li vedo correttamente sul Datagridview ad ogni rielaborazione ma al momento dell'update (Button5_Click) ecco l'errore.

Tabella DB ReportArt chiave,ArticoloS,DescrizioneS,QtaS,ValMedio

Public Class Inizio
Dim da As New OleDb.OleDbDataAdapter
Dim cmdBld As New OleDb.OleDbCommandBuilder(da)
Dim ds As New DataSet
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data " _
& "Source=C:\Protocolli\Protocolli.mdb;User Id=admin;Password=;")
Dim cmd As OleDbCommand = New OleDbCommand()

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim cn As ADODB.Connection, rs As ADODB.Recordset
cn = New ADODB.Connection
rs = New ADODB.Recordset
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data " _
& "Source=C:\Protocolli\Protocolli.mdb;User Id=admin;Password=;")

cn.Execute("DELETE * FROM ReportArt")
cn.Execute("Insert into ReportArt SELECT CodiceArticolo AS ArticoloS, SUM(Qta) AS QtaS , SUM(parzialeNew) AS ValoreTot " & _
"FROM ReportissimoTest GROUP BY CodiceArticolo")
cn.Execute("UPDATE ReportArt SET ReportArt.ValMedio = ReportArt.ValoreTot * ='" & Label15.Text & "'")
riempidg()
End sub


Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

da.Update(ds.Tables("ReportArt"))
DataGridView1.Update()

MsgBox("Update avvenuto con successo")
DataGridView1.Refresh()
End sub

Public Sub riempidg()
cmd.Connection = con
cmd.CommandText = "SELECT * FROM ReportArt"
da.SelectCommand = cmd
cmdBld.DataAdapter = da
ds.Clear()
da.DeleteCommand = cmdBld.GetDeleteCommand
da.InsertCommand = cmdBld.GetInsertCommand
da.UpdateCommand = cmdBld.GetUpdateCommand

da.FillSchema(ds, SchemaType.Source)
da.Fill(ds, "ReportArt")
DataGridView1.DataSource = ds.Tables("ReportArt")
End Sub

cenere Profilo | Senior Member

hai provato a fare anche l'ultima update a mano senza delegarla al ods????
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5