Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    19

    Problema serio cancellazione multipla di righe in Datagrid VB.6

    Salve a tutti.

    Ho un problema da un paio di giorni e non riesco a risolverlo.
    Programmo in ambiente VB.6
    La mia applicazione deve gestire alcune tabelle in un DB SQL Server.
    Precisamente deve dare la possibilità di aggiungere righe, modificarle e cancellarle.
    Lavora sa due tabelle una contiene vari dati e per ogni riga esiste una chiave primaria, autoincrementale e non duplicabile, contenente il progressivo del cliente.
    L'altra contiene descrizioni utili per lanciare delle store procedure e anche qui una chiave primaria autoincrementale e non duplicabile.
    Il mio problema è questo.
    In un datagrid collego le due tabelle in base al progressivo e l'utente una volta selezionata una riga nella 1° tabella deve poterla eliminare, fino qui nessun problema, ma automaticamente tutte le righe della 2° tabella con quel progressivo devono essere eliminate in maniera corretta per tenere il DB pulito in un altro datagrid.
    Se ad esempio esistono tre righe con lo stesso progressivo, la prima la elimina correttamente, ma appena chiamo la delete sulla 2° riga mi visualizza a video il seguente messaggio: "impossibile individuare la riga specificata per l'aggiornamento, E' possibile che alcuni valori siano stati modificati dopo l'utlima operazione di lettura."

    Vi posto il codice che non funziona e la connessione al DB:

    QUI POPOLO I DUE DATAGRIDnessun problema)
    'Imposto le variabili cs e rs come istanze degli oggetti Connection e Recordset'
    Set cs = New ADODB.Connection
    Set csDesMod = New ADODB.Connection
    Set rs2 = New ADODB.Recordset
    Set rsflag = New ADODB.Recordset

    cs.Open Stringa
    cs.CursorLocation = adUseClient
    rs2.Open "SELECT * FROM XXX_Analisi_Skipper", cs, adOpenKeyset, adLockPessimistic

    Set DataGrid1.DataSource = rs2
    DataGrid1.Refresh

    csDesMod.Open Stringa
    csDesMod.CursorLocation = adUseClient

    '********INNER JOIN SQL
    sql = "SELECT dbo.XXX_Analisi_Skipper_Flags.id, dbo.XXX_Analisi_Skipper.id AS Expr1, dbo.XXX_Analisi_Skipper_Flags.flag1, dbo.XXX_Analisi_Skipper_Flags.desflag1, " & _
    "dbo.XXX_Analisi_Skipper_Flags.flag2 , dbo.XXX_Analisi_Skipper_Flags.desflag2 " & _
    "FROM dbo.XXX_Analisi_Skipper_Flags INNER JOIN " & _
    "dbo.XXX_Analisi_Skipper ON dbo.XXX_Analisi_Skipper_Flags.id = dbo.XXX_Analisi_Skipper.id " & _
    "ORDER BY dbo.XXX_Analisi_Skipper_Flags.id"

    rsflag.Open sql, csDesMod, adOpenKeyset, adLockPessimistic
    Set DataGrid3.DataSource = rsflag
    DataGrid3.Refresh

    QUI AVVIO L'ELIMINAZIONE:
    numberofrow = DataGrid1.ApproxCount
    numberofrow3 = DataGrid3.ApproxCount

    If (numberofrow > 1) Then
    If (rs2.Supports(adDelete) And rsflag.Supports(adDelete)) Then
    If MsgBox("Confermi cancellazione riga?", vbYesNo) = vbYes Then
    Cancella = True
    controllo = 0
    Do While (controllo <> numberofrow3)
    DataGrid3.Row = controllo
    If (LTrim(RTrim(DataGrid1.Columns(8).Text)) = LTrim(RTrim(DataGrid3.Columns(0).Text)))
    Then
    rsflag.Delete
    rsflag.Update
    controllo = -1
    numberofrow3 = numberofrow3 - 1

    rsflag.Update
    DataGrid3.Refresh
    End If
    controllo = controllo + 1
    Loop
    ......
    .....
    .....
    L'errore come potete immaginare si presenta quando viene chiamato per la 2° volta rsflag.delete

    Vi prego illuminatemi

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Le discussioni su Visual Basic (VBx, VBA, VBScript, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...) vanno postate nell'area dedicata (come poi hai fatto) e, in caso di errore, fatte spostare senza aprire più discussioni sullo stesso argomento.

    Ho provveduto a chiudere questa discussione e l'altra che hai aperto sempre nel posto sbagliato, dato che ne hai già avviate altre nell'area corretta.

    Invito inoltre a leggere il Regolamento per conoscere altre norme da seguire per l'uso di quest'area del forum, se occorre.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.