Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Le novità MSI del 2026 per i videogiocatori
Le novità MSI del 2026 per i videogiocatori
Con le nuove soluzioni della serie MEG, acronimo di MSI Enthusiast Gaming, l'azienda taiwanese vuole proporre per il 2026 una gamma di proposte desktop che si rivolgono direttamente all'utente più appassionato con schede madri, chassis e sistemi di raffreddamento. Non da ultimi troviamo anche gli alimentatori, che abbinano potenza a ricerca della massima sicurezza di funzionamento.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-11-2010, 08:48   #1
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
[VB2010] - Refresh DataTable e DataGridView

Salve ragazzi,

avendo a disposizione una DataTable (definita Dtb nel mio progetto) e una DataGridView; col seguente codice elimino il record X selezionato nella griglia:

Codice:
        Dim Cmd As OleDbCommand
        Dim Valore_ID As Long
        Cmd = New OleDbCommand
        Try
            'Cnn.Open()
            Cmd.Connection = Cnn
            Valore_ID = Dtb.Rows(Riga).Item(0)
            Cmd.CommandText = "DELETE FROM [" & Tabella & "] WHERE [" & Dtb.Columns(0).ColumnName & "]=" & Valore_ID & ""
            cmd.ExecuteNonQuery()
            Cnn.Close()
            MsgBox("Record deleted Successfully.", , "Delete Record")
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
        Cnn.Close()
Il mio problema è come effettuare un refresh della DataTable e della DataGridView ad esso collegata in quanto una volta eliminato il record questo rimane ancora visibile e selezionato nella griglia.
Se chiudo e riapro il mio programma questo record, giustamente, manca


Grazie
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2010, 11:29   #2
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
dopo l'eliminazione svuota la datagrid e ricarica i dati dal db
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2010, 11:46   #3
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
dopo l'eliminazione svuota la datagrid e ricarica i dati dal db
Con questo codice svuoto la griglia:
Codice:
        dgvBiblioteca.DataBindings.Clear()
        dgvBiblioteca.DataSource = Nothing
        dgvBiblioteca.DataMember = Nothing
        dgvBiblioteca.Rows.Clear()
        dgvBiblioteca.Refresh()
e con questo carico il DataSource
Codice:
dgvBiblioteca.DataSource = Dtb
ma nulla come se il DataTable non effettua alcun Refresh
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2010, 13:06   #4
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da lucausa75 Guarda i messaggi
Con questo codice svuoto la griglia:
Codice:
        dgvBiblioteca.DataBindings.Clear()
        dgvBiblioteca.DataSource = Nothing
        dgvBiblioteca.DataMember = Nothing
        dgvBiblioteca.Rows.Clear()
        dgvBiblioteca.Refresh()
e con questo carico il DataSource
Codice:
dgvBiblioteca.DataSource = Dtb
ma nulla come se il DataTable non effettua alcun Refresh
allora di solito io rieseguo la query per il datatable e poi la associo al datasource. Facendo così come sopra non si aggiorna perchè tu devi aggiornare il dtb quindi devi ricaricare di nuovo tutti i dati

Ultima modifica di jackk87 : 10-11-2010 alle 14:18.
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2010, 16:05   #5
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
allora di solito io rieseguo la query per il datatable e poi la associo al datasource. Facendo così come sopra non si aggiorna perchè tu devi aggiornare il dtb quindi devi ricaricare di nuovo tutti i dati
...non esiste un metodo Refresh per il DataTable da poter richiamare?

E' impossibile che per ogni eliminazione debbo ricaricare il DataTable...
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 11-11-2010, 10:49   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da lucausa75 Guarda i messaggi
...non esiste un metodo Refresh per il DataTable da poter richiamare?

E' impossibile che per ogni eliminazione debbo ricaricare il DataTable...
Se l'operazione viene effettuata a livello di DataTable, puoi provare a refreshare solo il DataGridView, che espone un metodo Refresh().

Ma forse era meglio fare il percorso inverso, ossia popolare il DataGridView in modalità disconnessa. Quando un utente esegue un'operazione, come la Delete, prima ti pigli l'id della riga, e poi aggiorni tu il DB con un semplice Command. In questo modo elimini alla radice ogni problema di refresh...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 11-11-2010, 12:33   #7
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Se l'operazione viene effettuata a livello di DataTable, puoi provare a refreshare solo il DataGridView, che espone un metodo Refresh().

Ma forse era meglio fare il percorso inverso, ossia popolare il DataGridView in modalità disconnessa. Quando un utente esegue un'operazione, come la Delete, prima ti pigli l'id della riga, e poi aggiorni tu il DB con un semplice Command. In questo modo elimini alla radice ogni problema di refresh...

...sono un pò confuso;

questo è il codice con cui elimino il record e all'interno mi daresti una diritta su come e dove posizionare le righe di codice per far ciò che mi consigli?

Codice:
        Dim Cmd As OleDbCommand
        Dim Valore_ID As Long
        Cmd = New OleDbCommand
        Try
            'Cnn.Open()
            Cmd.Connection = Cnn
            Valore_ID = Dtb.Rows(Riga).Item(0)
            Cmd.CommandText = "DELETE FROM [" & Tabella & "] WHERE [" & Dtb.Columns(0).ColumnName & "]=" & Valore_ID & ""
            cmd.ExecuteNonQuery()
            Cnn.Close()
            MsgBox("Record deleted Successfully.", , "Delete Record")
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
        Cnn.Close()
Grazie
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 11-11-2010, 14:47   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Bah, non è che quel codice mi entusiasmi poi molto...
Inoltre non sono d'accordo sulla costruzione della stringa sql. Se proprio vuoi, usa almeno i parameters !

Personalmente la risolverei in modo molto più agile.

1. Eseguo il Binding tra il DataGridView e il DataSet "DS" ( o DataTable che sia ), precedentemente "fillato" con apposito Adapter "DA" :

Codice:
        DA.Fill(DS)
        DataGridView1.DataSource = DS.Tables(0)
2. A questo punto inserisco un pulsante unico di "Applica Modifiche", che contiene tutta la gestione di tutte le possibili azioni che un utente può fare su una o anche più righe contemporaneamente, mediante un OleDbCommandBuilder, che esiste proprio per questo :
Codice:
    Private Sub cmd_applica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_applica.Click

        If DS.HasChanges() Then
            Using CB As New OleDb.OleDbCommandBuilder(DA)
                DA.UpdateCommand = CB.GetUpdateCommand
                DA.InsertCommand = CB.GetInsertCommand
                DA.DeleteCommand = CB.GetDeleteCommand
                DA.Update(DS)
            End Using
            DS.AcceptChanges()
            MsgBox("Modifiche Salvate", MsgBoxStyle.Information, "OK")
        End If

    End Sub
E il gioco è fatto : gestisce tutto in un colpo solo ed evita virtualmente ogni problema di refresh.
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2010, 11:44   #9
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Bah, non è che quel codice mi entusiasmi poi molto...
Inoltre non sono d'accordo sulla costruzione della stringa sql. Se proprio vuoi, usa almeno i parameters !

Personalmente la risolverei in modo molto più agile.

1. Eseguo il Binding tra il DataGridView e il DataSet "DS" ( o DataTable che sia ), precedentemente "fillato" con apposito Adapter "DA" :

Codice:
        DA.Fill(DS)
        DataGridView1.DataSource = DS.Tables(0)
2. A questo punto inserisco un pulsante unico di "Applica Modifiche", che contiene tutta la gestione di tutte le possibili azioni che un utente può fare su una o anche più righe contemporaneamente, mediante un OleDbCommandBuilder, che esiste proprio per questo :
Codice:
    Private Sub cmd_applica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_applica.Click

        If DS.HasChanges() Then
            Using CB As New OleDb.OleDbCommandBuilder(DA)
                DA.UpdateCommand = CB.GetUpdateCommand
                DA.InsertCommand = CB.GetInsertCommand
                DA.DeleteCommand = CB.GetDeleteCommand
                DA.Update(DS)
            End Using
            DS.AcceptChanges()
            MsgBox("Modifiche Salvate", MsgBoxStyle.Information, "OK")
        End If

    End Sub
E il gioco è fatto : gestisce tutto in un colpo solo ed evita virtualmente ogni problema di refresh.

Grazie del tuo aiuto ma sono nuovo di VB2010 e di Oledb.
Se volessi abbinare il tuo codice al mio da dove dovrei iniziare?
Non mi è chiaro il concetto del binding...
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2010, 16:20   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da lucausa75 Guarda i messaggi
Grazie del tuo aiuto ma sono nuovo di VB2010 e di Oledb.
Se volessi abbinare il tuo codice al mio da dove dovrei iniziare?
Non mi è chiaro il concetto del binding...
No, la mia soluzione è totalmente alternativa. Non può essere "integrata" con la tua. Il Binding lo si esegue semplicemente con quel DataGridView1.DataSource. A quel punto ogni modifica dell'utente a livello di UI ( sul DataGridView ) si riflette sul DataSet DS ( o DataTable, il concetto è lo stesso ).
Perciò per applicare le modifiche al DB, basta controllare se DS "HasChanges" e agire come nel secondo blocco di codice che ho postato.
Secondo me è molto meglio come soluzione, ed anche più elegante, piuttosto che stare a gestire ogni possibile azione dell'utente separatamente...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2010, 13:40   #11
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
No, la mia soluzione è totalmente alternativa. Non può essere "integrata" con la tua. Il Binding lo si esegue semplicemente con quel DataGridView1.DataSource. A quel punto ogni modifica dell'utente a livello di UI ( sul DataGridView ) si riflette sul DataSet DS ( o DataTable, il concetto è lo stesso ).
Perciò per applicare le modifiche al DB, basta controllare se DS "HasChanges" e agire come nel secondo blocco di codice che ho postato.
Secondo me è molto meglio come soluzione, ed anche più elegante, piuttosto che stare a gestire ogni possibile azione dell'utente separatamente...
Ho cercato delle prove e questo è alla fine il codice che ne è venuto fuori:
Codice:
    Sub Eliminazione()
        Adapter.Fill(Ds)
        Ds.Tables(0).Rows(Riga).Delete()
        Riga = 0
        dgvBiblioteca.DataSource = Ds.Tables(0)
        If Ds.HasChanges = True Then
            Using CB As New OleDb.OleDbCommandBuilder(Adapter)
                Adapter.UpdateCommand = CB.GetUpdateCommand
                Adapter.InsertCommand = CB.GetInsertCommand
                Adapter.DeleteCommand = CB.GetDeleteCommand
                Adapter.Update(Ds)
            End Using
            Ds.AcceptChanges()
            MsgBox("Modifiche Salvate", MsgBoxStyle.Information, "OK")
        End If
    End Sub
ma con questo errore:


lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2010, 15:49   #12
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
...per ultimo ho provato questo codice:

Codice:
        Dim Cmd As New OleDbCommand("DELETE FROM [" & Tabella & "] WHERE [" & Ds.Tables(Tabella).Columns(0).ColumnName & "]=" & Valore_ID & "", Cnn)
        Dim Adp As New OleDbDataAdapter
        Adp.SelectCommand = Cmd
        Dim Dst As New DataSet(Tabella)
        Adp.Fill(Dst)
        Dst.Tables(Tabella).Rows(Riga).Delete()
        Riga = 0
        Adp.Update(Dst)
ma ho questo errore:


lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 14:00   #13
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
...ancora quest'altro codice

Codice:
        CnnString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & AppPath() & DB & ";Jet OLEDB:Database Password=" & PW
        Conn = New OleDbConnection(CnnString)
        StrSql = "DELETE * FROM [" & Tabella & "] WHERE [" & Ds.Tables(Tabella).Columns(0).ColumnName & "]=" & Valore_ID & ""
        Conn.Open()
        Adapter = New OleDbDataAdapter(StrSql, Conn)
        Adapter.Fill(Ds, Tabella)
        Adapter.Update(Ds, Tabella)
        With MyGrid
            .DataSource = Ds.Tables(Tabella).DefaultView
        End With
ma la DataGridView non si aggiorna
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 14:02   #14
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
No, non ci siamo. Non devi cercare di fondere le due soluzioni assieme. Si fa solo un gran casino.

La prima tua soluzione è inutile. Non serve fare il Fill dell'Adapter sul DataSet tutte le volte che un utente fa una Delete...

Il secondo codice è per me incomprensibile : se usi un semplice Command, a quel punto non serve a nulla un DataSet...

Se vuoi usare la MIA soluzione devi solo aggiungere un pulsante di "Applica Modifiche", collegare il DataGridView al DataSet ( Binding... ), lasciare che l'utente faccia le sue operazioni, e applicarle al DB come ho illustrato.

Se vuoi usare la TUA soluzione, è tutta un'altra cosa : allora popolerai il DataGridView in modalità disconnessa, e poi ti vai a gestire una per una le possibili azioni : Update-Delete-Insert... Che è sicuramente più prolissa e meno elegante, come cosa.

Una qualsiasi combinazione di queste due "soluzioni-tipo" è per me superflua, è uno spreco di risorse di calcolo, e inoltre porta ad errori, come infatti ti è successo.

Spero di essere stato un po' più chiaro...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 14:13   #15
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
No, non ci siamo. Non devi cercare di fondere le due soluzioni assieme. Si fa solo un gran casino.

La prima tua soluzione è inutile. Non serve fare il Fill dell'Adapter sul DataSet tutte le volte che un utente fa una Delete...

Il secondo codice è per me incomprensibile : se usi un semplice Command, a quel punto non serve a nulla un DataSet...

Se vuoi usare la MIA soluzione devi solo aggiungere un pulsante di "Applica Modifiche", collegare il DataGridView al DataSet ( Binding... ), lasciare che l'utente faccia le sue operazioni, e applicarle al DB come ho illustrato.

Se vuoi usare la TUA soluzione, è tutta un'altra cosa : allora popolerai il DataGridView in modalità disconnessa, e poi ti vai a gestire una per una le possibili azioni : Update-Delete-Insert... Che è sicuramente più prolissa e meno elegante, come cosa.

Una qualsiasi combinazione di queste due "soluzioni-tipo" è per me superflua, è uno spreco di risorse di calcolo, e inoltre porta ad errori, come infatti ti è successo.

Spero di essere stato un po' più chiaro...

Intanto grazie per la tua pazienza

Mi sento molto confuso in quanto cose che prima riuscivo a farle ad occhi chiusi adesso mi vengono complicatissime.

Ciò che voglio realizzare è proprio quello di dare la possibilità all'utente tramite alcuni bottoni di fare l'inserimento, l'aggiornamento o la eliminazione del record selezionato nel DataGridView.

1) Come popolare il DataGridView in modalità disconnessa?
Non basta che nel form load lo popolo collegandolo al mio DatSet?

2) Come gestire una per una le possibili azioni : Update-Delete-Insert?
Debbo lavorare sullo stesso DataSet o debbo utilizzare un DataTable, un DataReader o simili...?
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2010, 11:36   #16
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Salve ragazzi,

alla fine ho risolto così:

Codice:
Private Sub Aggiornamento(ByVal MyGrid As DataGridView)
        Try
            Dim Cnn As New OleDb.OleDbConnection(CnnString)
            Cnn.Open()
            Adp.UpdateCommand = Cnn.CreateCommand
            Adp.UpdateCommand.CommandText = StrSQL
            Adp.UpdateCommand.ExecuteNonQuery()
            Me.Cursor = Cursors.Default
            MsgBox("Record aggiornato con successo", MsgBoxStyle.Information, NomeApplicazione)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

        Dst.Clear()
        Adp.Fill(Dst)
        MyGrid.DataSource = Dst.Tables(0)
End Sub

Private Sub Eliminazione(ByVal MyGrid As DataGridView)
        Try
            Dim Cnn As New OleDb.OleDbConnection(CnnString)
            Cnn.Open()
            Adp.DeleteCommand = Cnn.CreateCommand
            Adp.DeleteCommand.CommandText = "DELETE * FROM [" & Tabella & "] WHERE [" & Dst.Tables(0).Columns(0).ColumnName & "]=" & Valore_ID & ""
            Adp.DeleteCommand.ExecuteNonQuery()
            Me.Cursor = Cursors.Default
            MsgBox("Record eliminato con successo", MsgBoxStyle.Information, NomeApplicazione)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

        Dst.Clear()
        Adp.Fill(Dst)
        MyGrid.DataSource = Dst.Tables(0)
End Sub

Private Sub Inserimento(ByVal MyGrid As DataGridView)
        Try
            Dim Cnn As New OleDb.OleDbConnection(CnnString)
            Cnn.Open()
            Adp.InsertCommand = Cnn.CreateCommand
            Adp.InsertCommand.CommandText = StrSQL
            Adp.InsertCommand.ExecuteNonQuery()
            Me.Cursor = Cursors.Default
            MsgBox("Record inserito con successo", MsgBoxStyle.Information, NomeApplicazione)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

        Dst.Clear()
        Adp.Fill(Dst)
        MyGrid.DataSource = Dst.Tables(0)
End Sub
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2010, 11:52   #17
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Noooo...
Vabbeh, Luca. Contento te...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2010, 12:25   #18
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Noooo...
Vabbeh, Luca. Contento te...
..sicuramente sei contraio al fill ripetuto vero?
Però ho preso spunto un pò dal tuo codice e per ciò ti ringrazio!

Troverò una via alternativa e quindi snellirò il progetto.

Invece perchè non dai un'occhiata all'altro mio thread?
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2010, 13:11   #19
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da lucausa75 Guarda i messaggi
..sicuramente sei contraio al fill ripetuto vero?
Però ho preso spunto un pò dal tuo codice e per ciò ti ringrazio!

Troverò una via alternativa e quindi snellirò il progetto.

Invece perchè non dai un'occhiata all'altro mio thread?
Diciamo che non sono d'accordo in generale sull'impostazione di quella Form. Adesso vedendo l'immagine che hai postato sull'altro Thread ho capito perchè trovavi tanto ostica la mia soluzione.

E' soprattutto questione di "stile personale", perciò non è una critica.

Almeno questo però non farlo ! :
Codice:
Adp.DeleteCommand.CommandText = "DELETE * FROM [" & Tabella & "] WHERE [" & Dst.Tables(0).Columns(0).ColumnName & "]=" & Valore_ID & ""
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2010, 14:18   #20
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Diciamo che non sono d'accordo in generale sull'impostazione di quella Form. Adesso vedendo l'immagine che hai postato sull'altro Thread ho capito perchè trovavi tanto ostica la mia soluzione.

E' soprattutto questione di "stile personale", perciò non è una critica.

Almeno questo però non farlo ! :
Codice:
Adp.DeleteCommand.CommandText = "DELETE * FROM [" & Tabella & "] WHERE [" & Dst.Tables(0).Columns(0).ColumnName & "]=" & Valore_ID & ""
Cmq anche se la tua fosse una critica è sicuramente costruttiva e io la prendo per buona!

Che ben vengano le tue pseudo "critiche" perchè sono state molto produttive!

Non capisco perchè non debbo fare:

Codice:
Adp.DeleteCommand.CommandText = "DELETE * FROM [" & Tabella & "] WHERE [" & Dst.Tables(0).Columns(0).ColumnName & "]=" & Valore_ID & ""
Come elimino il record?
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Fibra di carbonio, lega di magnesio e 8....
Inaugurato il Padiglione Italia al CES 2...
AGON PRO AG276QSG2: NVIDIA G-Sync Pulsar...
MSI mostra la scheda madre consumer con ...
MSI rinnova l'intera offerta notebook al...
Laifen Wave Pro: debutta al CES lo spazz...
XGIMI Titan Noir Max: al CES il videopro...
Atlas di Boston Dynamics: il robot umano...
TV da 130 pollici ed elettrodomestici, p...
I giochi classici cambiano volto con RTX...
OpenAI testa la pubblicità in Cha...
Plaud riscrive il modo di prendere appun...
Narwal presenta a Las Vegas la nuova gam...
1000W solo per la scheda video: la GeFor...
NVIDIA espande GeForce NOW: nuove app Li...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v