Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemi con la cancellazione di un record db access in vb 2017
Forum - C# / VB.NET - Problemi con la cancellazione di un record db access in vb 2017

Avatar
FABIO1968 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/05/2019

Segnala al moderatore
Postato alle 17:21
Giovedì, 09/05/2019
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 il 09/05/2019 alle 17:22
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:05
Giovedì, 09/05/2019
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 il 09/05/2019 alle 20: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à.
PM Quote
Avatar
FABIO1968 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/05/2019

Segnala al moderatore
Postato alle 10:55
Venerdì, 10/05/2019
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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:03
Venerdì, 10/05/2019
Testo quotato

Postato originariamente da FABIO1968:
riga1 l'ho resa pubblica



Ma tu hai postato la riga

Dim riga1 As Short = e.RowIndex

quindi riga1 è locale.

Testo quotato


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 ...

Testo quotato


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à.
PM Quote
Avatar
FABIO1968 (Normal User)
Newbie


Messaggi: 5
Iscritto: 09/05/2019

Segnala al moderatore
Postato alle 14:32
Venerdì, 10/05/2019
Grazie per la tua risposta.
Mi sono complicato la vita da solo.

PM Quote