Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
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: 2690
[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: 2690
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: 2690
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: 2690
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: 2690
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: 2690
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: 2690
...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: 2690
...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: 2690
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: 2690
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: 2690
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: 2690
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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Il nuovo OnePlus Nord 6 è vicino al debu...
Tesla svela i risultati del Q4: conferma...
Nuova rimodulazione da Fastweb: fino a 3...
La NVIDIA RTX 5090 potrebbe presto costa...
ASUS non produrrà più smar...
CoopVoce sta per lanciare il 5G: ecco qu...
Factorial, azienda di batterie allo stat...
Le specifiche fuori di testa della Yangw...
I numeri incredibili di Xiaomi: nel 2025...
In Cina è pronto il parco fotovol...
Neuralink accelera: produzione di massa ...
Starlink abbassa l'orbita di migliaia di...
Dal MIT una nuova batteria per auto elet...
Adam Mosseri parla di IA su Instagram: l...
Suonerie personalizzate e Tone Store: il...
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:04.


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