+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

[VB .NET 2010 Express] cancellazione multipla di righe del datagridview

  1. #1
    napster86 non è in linea Scolaretto
    Post
    77
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve a tutti.. Da un pò di tempo mi sto scervellando con questo dilemma..
    Ho un datagridview che fa riferimento ad una tabella che contiene dei prodotti e ognuno ha il suo codice a barre.. La mia domanda è:
    Leggendo il codice a barre del prodotto come faccio ad eliminare gli elementi nel datagridview?
    Per un solo elemento la risposta è semplice, ma se volessi leggere 150 prodotti tutti insieme ed eliminarli in un solo colpo? Ho adottato questa soluzione:
    Leggo i 150 prodotti e li aggiungo ad una listbox. Dopodiché confronto ogni codice a barre del prodotto letto dalla listbox con i prodotti presenti nella datagridview e li elimino.. Faccio questa operazione perché estrapolo i prodotti dalla listbox per crearmi una tracciabilità dei prodotti salvando il tutto in un file . Txt .. Il tutto però oltre ad essere macchinoso, non funziona alla perfezione..

    Avreste qualche suggerimento da darmi??
    Grazie Anticipatamente

  2. #2
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Post
    2,874
    Like Inviati  
    9
    Like Ricevuti  
    2
    il datagridview e'associato ad un dataset?
    ℹ️ Leggi di più su sistemista ...

  3. #3
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Post
    6,232
    Like Inviati  
    19
    Like Ricevuti  
    11
    Dovresti dare qualche info in più.
    Come viene riempito il DataGridView?
    - è collegato
    - è riempito da codice (cosa usi)

    Quale codice stai usando al momento?
    ℹ️ Leggi di più su gibra ...

  4. #4
    Dev-01 non è in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    Ciao,

    scusa ma quando dici che non funziona perfettamente cosa intendi?

    Non vengono eliminati tutti gli item?
    Alcuni degli item eliminati non sono quelli giusti?

    Inoltre, quando dici che devi eliminare gli elementi nel datagridview, devi eliminarli anche dalla tabella d'origine?

    E, in questo caso (come richiesto da gibra), cosa utilizzi come base dati? MySQL? SQL Server, Access? Un file XML? Un file .csv? Altro?

  5. #5
    napster86 non è in linea Scolaretto
    Post
    77
    Like Inviati  
    0
    Like Ricevuti  
    0
    Scusate per le info macanti. Allora, utilizzo un database Access. Il DatagridView viene popolato da un file.txt attraverso questo codice:
    '***************************************************
            Dim dr As DataRow
            Dim objReader As New StreamReader(Application.StartupPath & "\" & "Magazzino\Carico\" & BarCode.Text & ".txt")
    
            '************CARICO NEL DATABASE I PRODOTTI***********************
            '*****************************************************************
    
            Dim sLine As String
    
            Do
    
                sLine = objReader.ReadLine()
                If Not sLine Is Nothing Then
    
                    dr = Me.ProdottiDataSet.Carico.NewRow()
    
                    dr("Data") = sLine.Substring(0, 10)
                    dr("CodiceBarre") = sLine.Substring(11, 13)
                    dr("CodiceProdotto") = sLine.Substring(25, 4)
                    dr("Descrizione") = sLine.Substring(30, 20)
                    dr("Prezzo") = sLine.Substring(51, 5)
                    dr("PesoKg") = sLine.Substring(57, 5)
    
                    Me.ProdottiDataSet.Carico.Rows.Add(dr)
    
                Else
                    objReader.Close()
                End If
    
            Loop Until sLine Is Nothing
            objReader.Close()
    
            CaricoDataGridView.DataSource = ProdottiDataSet.Carico
            CaricoDataGridView.Refresh()
    
    Per eliminare le righe dal DataGrid faccio in questo modo:
    
            Dim descrizione As String = ""
            DataText.Text = Date.Today
            Dim currentDate As DateTime
            currentDate = Convert.ToDateTime(DataText.Text)
            DataText.Text = currentDate.ToString("ddMMyyyy")
    
    
            Dim path As String = Application.StartupPath & "\" & "Magazzino\Scarico\" & DataText.Text & ".txt"
    
            '*********************CONTROLLO SE E'PRESENTE IL BARCODE************
            '*******************************************************************
            Me.CaricoBindingSource.DataSource = Me.ProdottiDataSet.Carico
            CaricoDataGridView.DataSource = Me.CaricoBindingSource
    
            If Len(TextBox1.Text) > 12 Then
                Me.CaricoBindingSource.Filter = "CodiceBarre like '%" + TextBox1.Text.Replace("'", "''") + "%'"
    
                ' se il barcode è presente allora fai l'operazione
                If TextBox1.Text = CodiceBarreTextBox2.Text Then
    
                    Dim peso As Double
                    PesoKgTextBox.Text = peso.ToString("0.000")
    
                    descrizione = DescrizioneTextBox.Text
                    descrizione = descrizione.PadRight(20)
    
                    DescrizioneListBox.Items.Add(DataTextBox.Text + " " + TextBox1.Text + " " + CodiceProdottoTextBox1.Text + " " + descrizione + " " + PrezzoTextBox1.Text + " " + PesoKgTextBox1.Text)
                    CaricoDataGridView.Rows.RemoveAt(CaricoDataGridView.CurrentCell.RowIndex)
    
    
                    Dim currentDate2 As DateTime
                    currentDate2 = Convert.ToDateTime(DataTextBox.Text)
                    currentDate2 = currentDate.AddDays(1)
                    TextBox3.Text = currentDate.ToString("dd/MM/yyyy")
    
                    '**************SCRIVO IL FILE SCARICO*******************
    
                    Dim path2 As String = Application.StartupPath & "\" & "Magazzino\Scarico\" & DataText.Text & ".txt"
                    Dim Wo As StreamWriter = File.AppendText(path2)
                    Dim a As Integer
    
                    For a = 0 To ListBox1.Items.Count - 1
                        Wo.WriteLine(ListBox1.Items.Item(a))
                    Next
                    Wo.Close()
    
    
                    TextBox1.Clear()
                    TextBox1.Focus()
                    Label5.Text = DescrizioneListBox.Items.Count
    
                Else
                    MessageBox.Show("Articolo non presente riprovare!")
                End If
            End If
    
            Button3.Enabled = True
    
    Ovvero leggo con il lettore il codice a barre del prodotto, se questo è presente nella tabella "Carico" lo elimina e poi salvo il tutto in un file txt "Scarico.

    L'errore è che vengono saltate le righe nel momento del salvataggio, vorrei provare a fare una cosa meno complessa inoltre. Avete qualche consiglio? Dove Sbaglio

  6. #6
    Dev-01 non è in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    Ciao,

    Secondo me potresti eliminare il carattere '%' dall'assegnazione della proprietà .Filter del DataBinding.

    Prova a modificare questo codice:

    For a = 0 To ListBox1.Items.Count - 1
                        Wo.WriteLine(ListBox1.Items.Item(a))
    Next
    
    con questo:

    Using Wo As StreamWriter(path2)
                    For a as Integer = ListBox1.Items.Count - 1 To 0 Step -1
                            Wo.WriteLine(ListBox1.Items.Item(a))
                    Next
    End Using
    
    Il mio suggerimento è quello di operare direttamente sulla base dati, sia per le modifiche ai prodotti, sia per la tracciabilità, con, al limite, un pulsante che ti consenta di effettuare la stampa del relativo report ad hoc su richiesta lasciando la possibilità di definire eventuali parametri da includere nella query (come un intervallo di date o una specifica data).

    I database servono "anche" a questo.

    Inoltre ti consiglio di approfondire meglio il linguaggio e l'utilizzo dei database (almeno un engine serio).

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. vbnet 2010 Rimuovere righe in datagridview
    Da ljt nel forum Visual Basic .Net
    Risposte: 17
    Ultimo Post: 22-12-2020, 21:44
  2. Report da Visual Studio 2010 shell a VB net 2010 express
    Da Codice_da_Vinci nel forum Visual Basic .Net
    Risposte: 9
    Ultimo Post: 10-01-2015, 18:10
  3. Risposte: 9
    Ultimo Post: 15-06-2012, 13:37
  4. VB 2008 Express vs VB 2010 Express ... opinioni in merito
    Da il Fenomeno nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 02-12-2010, 11:21
  5. Cancellazione Multipla di records su file access
    Da Snakeone nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 22-10-2008, 15:01