Oppure

Loading
09/05/19 15:21
FABIO1968
Ciao a tutti,
ho inserito queste righe all'interno di un button di prova, ma riscontro delle difficoltà.

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
'intercetto il numero di riga

Dim riga1 As Short = e.RowIndex

'reperisco id per cancellazione
riga1 = DataGridView1.Rows(riga).Cells(0).Value


il secondo blocco di istruzioni:

Private Sub CancellaRecordToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CancellaRecordToolStripMenuItem.Click

'istruzione di cancellazione record

MsgBox(riga1)


Dim strConn As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\REPOS\ACQUA\UTENZE.accdb";)
Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
Dim ds As DataSet
Dim da As OleDb.OleDbDataAdapter
Dim bs As BindingSource
con.ConnectionString = strConn
con.Open()

Dim sql As String
sql = "select * from acqua order by ID desc"

ds = New DataSet("dsUTENZE";)
da = New OleDb.OleDbDataAdapter(sql, con)
da = New OleDb.OleDbDataAdapter("SELECT * FROM ACQUA order by data_bol", con)
da.Fill(ds, "ACQUA";)
bs = New BindingSource()
bs.DataSource = ds
bs.DataMember = "ACQUA"
DataGridView1.DataSource = bs
con.Close()

In questa riga se inserisco valore 1 dentro Rows() mi cancella una riga ma se inserisco riga1 mi restituisce un errore del tipo:
System.IndexOutOfRangeException: 'Nessuna riga alla posizione 26.'

ds.Tables("ACQUA";).Rows(riga1).Delete()
Dim MioCommandBuilder As New OleDb.OleDbCommandBuilder(da)
da.Update(ds, "ACQUA";)
ds.Tables("ACQUA";).AcceptChanges()
End Sub

Come posso risolvere il problema?
Grazie
Ultima modifica effettuata da FABIO1968 09/05/19 15:22
aaa
09/05/19 18:05
nessuno
Prima di tutto, come fai ad utilizzare la variabile

riga1

che è interna alla Sub DataGridView1_CellClick nell'altra Sub CancellaRecordToolStripMenuItem_Click ??

Non è che fai confusione con la variabile riga?


P.S. Hai abbandonato iprogrammatori.it ?
Ultima modifica effettuata da nessuno 09/05/19 18:07
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/05/19 8:55
FABIO1968
Ciao grazie per la risposta
riga1 l'ho resa pubblica e pensavo di portare il valore della riga (da me evidenziata) da cancellare nel comando delete.
il valore riga1 non dovrebbe coincidere con il numero di riga che vorrei cancellare?




p.s. non ho abbandonato programmatori.it ma si possono trovare soluzioni, leggendo i messaggi di altri che hanno lo stesso problema, anche in altri forum

Fabio
aaa
10/05/19 9:03
nessuno
Postato originariamente da FABIO1968:
riga1 l'ho resa pubblica


Ma tu hai postato la riga

Dim riga1 As Short = e.RowIndex

quindi riga1 è locale.

il valore riga1 non dovrebbe coincidere con il numero di riga che vorrei cancellare?


Se scrivi subito dopo

riga1 = DataGridView1.Rows(riga).Cells(0).Value

diventa l' ID e non c'entra nulla con il numero di riga.

Poi non capisco perché non utilizzi una semplice

"DELETE .... WHERE ID = " + riga1.ToString()

dato che hai prelevato l'ID appositamente per individuare quello che devi eliminare ...

p.s. non ho abbandonato programmatori.it ma si possono trovare soluzioni, leggendo i messaggi di altri che hanno lo stesso problema, anche in altri forum


Non capisco ... tu qui hai fatto una domanda, non avevi trovato soluzioni.

Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/05/19 12:32
FABIO1968
Grazie per la tua risposta.
Mi sono complicato la vita da solo.
aaa