Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di ßenJo
    Registrato dal
    Dec 2000
    Messaggi
    33

    [VB2008 + OleDB] Come strutturare i comandi di DataAdapter

    Ho un DataGridView nel quale visualizzo i dati provenienti da una tabella.
    La carico con questa funzione:

    codice:
    Private Sub PopolaGriglia()
    
            Connessione = New OleDbConnection
            Connessione.ConnectionString = Stringa_Connessione
            Connessione.Open()
    
            Query = "SELECT IdProduzione as Id,Data,(SELECT Linea FROM Linee WHERE Linee.IdLinea=Produzioni.IdLinea) AS Linea,IdTurno AS Turno,(SELECT Descrizione FROM Formati WHERE Formati.IdFormato=Produzioni.IdFormato) AS Prodotto,Casse AS Casse_Prodotte FROM Produzioni ORDER BY Data DESC"
    
            Adattatore = New OleDbDataAdapter(Query, Connessione)
    
            TabellaDataSet = New DataSet
            Adattatore.Fill(TabellaDataSet, "Produzioni")
    
            Dim ComandoCancellazione As New OleDbCommand
            ComandoCancellazione.CommandText = "DELETE FROM Produzioni WHERE IdProduzione=?"
            ComandoCancellazione.Connection = Connessione
            Adattatore.DeleteCommand = ComandoCancellazione
    
            DataGridView.DataSource = TabellaDataSet
            DataGridView.DataMember = "Produzioni"
    
            Connessione.Close()
        End Sub
    Fin qui tutto ok... La griglia mi viene popolata correttamente, senza nessun problema. E' il comando cancellazione che non so come impostarlo. In pratica sull'evento di cancellazione di una riga della DataGridView voglio implementare la cancellazione fisica di quella riga dal database, per cui non so come comando cancellazione cosa mettere....

    In pratica sull'evento di cancellazione, scrivo questo:

    codice:
    Private Sub DataGridView_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView.UserDeletedRow
            Adattatore.Update(TabellaDataSet, "Produzioni")
    
    End Sub
    che ovviamente non funziona, funziona se nel comando di cancellazione al posto del punto interrogativo metto un ID valido... Ma non so come costruire il commandtext....
    Premetto: vengo dal VB6 e con questo dataadapter non ho capito niente, ci sono esempi a migliaia ma niente che ti faccia capire come strutturare queste cose manualmente, io odio le procedure guidate, non fanno capire una cicca

  2. #2
    Utente di HTML.it L'avatar di ßenJo
    Registrato dal
    Dec 2000
    Messaggi
    33

    ...

    Ho risolto in una maniera che forse è un po troppo grezza... ma funziona....
    In pratica sull'evento UserDeletingRow intercetto il contenuto della colonna ID per recuperare l'id del record selezionato in questo modo:

    codice:
    Dim a As Short = DataGridView.CurrentRow.Index.ToString
    Dim I As String = DataGridView.Item(0, a).Value.ToString
    subito dopo quindi mi costruisco il comando per la cancellazione passando l'indice I che ho recuperato dalla tabella:

    codice:
    Dim ComandoCancellazione As New OleDbCommand
    ComandoCancellazione.CommandText = "DELETE FROM Produzioni WHERE IdProduzione=" & I
    ComandoCancellazione.Connection = Connessione
    Adattatore.DeleteCommand = ComandoCancellazione
    dopodichè nell'evento UserDeletedRow del datagrid (che si attiva una volta che la riga del datagrid è stata cancellata), effettuo l'update (che funziona, la riga mi viene cancellata pure dal database, finalmente!)

    codice:
    Adattatore.Update(TabellaDataSet, "Produzioni")
    funziona tutto bene... Ma sono sicuro che non è il metodo migliore per fare questa operazione... possibile che nessuno è in grado di fornirmi un aiuto semplice? Penso di aver utilizzato troppe righe di codice e un sistema un po grezzo per recuperare l'id del record da cancellare...

  3. #3
    Utente di HTML.it L'avatar di ßenJo
    Registrato dal
    Dec 2000
    Messaggi
    33
    UP!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.