Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131

    VB. NET - UPDATE di massa, entrare non so come spiegarlo

    Salve.
    Inserisco in una listview dei prodotti, per fare ciò uso questo codice:

    codice:
     If Not CONNECTION Is Nothing Then            If (CONNECTION.State And ConnectionState.Open) = ConnectionState.Open Then
                    CONNECTION.Close()
                End If
                strSQL = "SELECT * FROM Articoli where " & Filtro & " = '" & txtCodBarre.Text & "';"
    
    
                CONNECTION.Open()
                cmd = New MySqlCommand(strSQL, CONNECTION)
                dr = cmd.ExecuteReader()
    
    
                QuantitArticolo()
    
    
                Do While dr.Read()
    
    
                    Matricola = dr("Matricola").ToString
                    CodBarre = dr("CodBarre").ToString
                    Descrizione = dr("Descrizione").ToString
                    Misura = dr("Misura").ToString
                    Quantit = dr("Quantit").ToString
                    Iva = dr("Iva").ToString
                    ValoreIva = dr("ValoreIva").ToString
                    PrezzoIvaEsclusa = dr("Prezzo").ToString
                    PrezzoConIva = dr("PrezzoConIva").ToString
                    Costo = dr("Costo").ToString
                    Utile = dr("Utile").ToString
    
    
                    CalcoliMatematici()
    
    
                     Dim lv As ListViewItem = ListView1.Items.Add(Matricola)
                    lv.SubItems.Add(CodBarre)
                    lv.SubItems.Add(Descrizione)
                    lv.SubItems.Add(Misura)
                    lv.SubItems.Add(QuantitInserita)
                    lv.SubItems.Add(Iva)
                    lv.SubItems.Add(CalcoloIva)
                    lv.SubItems.Add(CalcoloPrezzo)
                    lv.SubItems.Add(CalcoloPrezzoConIvaInclusa)
                    lv.SubItems.Add(CalcoloCosto)
                    lv.SubItems.Add(CalcoloUtile)
    
    
                Loop
                dr.Close()
                cmd.Dispose()
                CONNECTION.Close()
            End If
    Poi per caricarli nel Database MySQL uso questi comandi:

    codice:
     Public Sub CaricamentoDatiVendita()        Dim strSQL As String = "INSERT INTO Vendite (Numero,RagioneSociale,Data) Values ('" & _
                              txtCodiceIdentificativo.Text & "', '" & _
                              txtRagioneSociale.Text & "', '" & _
                             txtData.Text & "')"
    
    
            CONNECTION.Open()
            cmd = New MySqlCommand(strSQL, CONNECTION)
            dr = cmd.ExecuteReader()
            dr.Close()
            cmd.Dispose()
            CONNECTION.Close()
        End Sub
    codice:
    Public Sub CaricamentoElementiVendite()        For Each x As ListViewItem In ListView1.Items
                Dim strSQL As String = "INSERT INTO DettaglioVendite (Numero,Matricola,CodBarre,Descrizione,Misura,Iva,ValoreIva,PrezzoIvaEsclusa,PrezzoIvaInclusa,Costo,Utile) Values ('" & _
                                 txtCodiceIdentificativo.Text & "', '" & _
                                  x.SubItems(0).Text & "', '" & _
                             x.SubItems(1).Text & "', '" & _
                                x.SubItems(2).Text & "','" & _
                                x.SubItems(3).Text & "','" & _
                                x.SubItems(5).Text & "','" & _
                                x.SubItems(6).Text & "','" & _
                                  x.SubItems(7).Text & "','" & _
                                    x.SubItems(8).Text & "','" & _
                                      x.SubItems(9).Text & "','" & _
                               x.SubItems(10).Text & "')"
    
    
                CONNECTION.Open()
                cmd = New MySqlCommand(strSQL, CONNECTION)
                dr = cmd.ExecuteReader()
                dr.Close()
                cmd.Dispose()
                CONNECTION.Close()
    
    
            Next
        End Sub
    Ora vi è un problema, come faccio ad fare un UPDATE per la giacenza, i dati dei prodotti si trovano nella tabella Articoli, devo fare un UPDATE alla colonna Giacenza.
    Esempio:
    Aggiungo un prodotto x, come quantità metto 3
    Aggiungo un altro prodotto x, come quantità metto 5
    Adesso premo salva, e oltre ad inserire questi dati nel db, deve fare un update alla tabella Articoli, deve cambiare la licenza, il primo prodotto deve avere 3 giacenze in meno, mentre il secondo deve avere 5 giacenze in meno.
    Come faccio?
    Se era un singolo articoli non ci voleva molto, assegnavo il CodBarre o la Matricola e lanciavo una query, ma con tutti questi articoli nella listview come faccio?
    Scusate se apro spesso Discussioni.
    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Qualcuno sa come fare?
    Devo fare un update alla tabella: Articoli,colonna: Quantit di ciascun elemento della listview.
    Come faccio a fare una query (update) per ogni item della listview?
    Devo sottrarre la quantità degli item della listview alla giacenza(Tabella: Articoli, Colonna: Quantit, di ciascun elemento della listview).
    Potete aiutarmi?
    Grazie in anticipo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Io ti consiglierei di usare ADO.NET e gli oggetti datatable e tableadapter. Oppure i dataset Tipizzato.
    In ogni caso il succo del discorso è che ti crei un oggetto datatable che rappresenta la tua tabella del database. Il fatto di avere un oggetto ti permette di scorrere le righe con for each e di fare tutte le operazioni che vuoi molto velocemente. Una volta ultimato il tutto con tableadapter fai l'update del database a partire dalla tabella modificata nei calcoli..
    Cerca su google, come parole chieve dataset, datatable, tableadapter.. trovi tutto. Pure su youtube...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Mi puoi fare un esempio?
    Penso si debba fare così:
    Ciclo for per estrare il CodBarre o la Matricola di ciascun elemento della listview, poi bisogna sottrarre la quantità di ogni item dalla colonna Quantit della tabella Articoli.
    Poi bisogna fare un altro ciclo per riassegnare tutto.
    Giusto?
    Però non so come fare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Mi puoi fare un esempio?Penso si debba fare così:Ciclo for per estrare il CodBarre o la Matricola di ciascun elemento della listview, poi bisogna sottrarre la quantità di ogni item dalla colonna Quantit della tabella Articoli.Poi bisogna fare un altro ciclo per riassegnare tutto.Giusto?Però non so come fare.
    Aspetta però... Le modifiche alle tabelle le devi fare a livello di database o di presentazione dei dati nella listview?In ogni caso la modalità non cambia granchè.. Quello che ti serve per maneggiare i dati è un dataset... (oggetto che rappresenta un insieme di tabelle estratte dal database)http://www.dotnetperls.com/dataset-vbnethttp://support.microsoft.com/kb/301216/itQui ci sono degli esempi.Carichi i dati nel dataset, li elabori come se stessi scrivendo codice VBA da excel, cioè lavorando di indici riga-colonna, o con un ciclo for each per righe, fai i conti che ti servono e li salvi nel DB. Per mostrarli o usi il datatable e una datagridview.. 2 righe e hai fatto
    Ultima modifica di renygade; 27-10-2014 a 21:19

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Mi sento stupido continuo a non capire.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Mi sento stupido continuo a non capire.
    Ma hai provato a leggere l'articolo che ti ho linkato? Ops.. per qualche motivo non me l'ha riportato nel thread precedente.
    L'articolo più interessante da cui partire è questo
    http://support.microsoft.com/kb/301216/it

    Tu hai il database e la connection string nella tua sub CaricamentoDatiVendita
    Li invece di usare un datareader usi un tableadapter così:
    codice:
    Dim daAuthors As New SqlDataAdapter("Select * From Authors", objConn)
    Cambiando la stringa di query, che comunque è una select che hai già scritta.
    Poi per mettere tutti i tuoi bei dati nel datatable fai così:
    codice:
    Dim myTable as new Datatable
    daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey
    daAuthor.fill(myTable)
    Chiudi la connessione.
    Ora in myTable hai un tabella che ha in colonna le colonne del database e nelle righe i dati.
    Per accedere ai dati fai Mytable(indexriga)(indexcolonna) oppure puoi mettere in formato stringa il nome della colonna stessa..

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Forse non mi sono spiegato bene.
    Mi hai fatto vedere caricare i dati vendita in un dataset.
    Dopo aver caricato i dati della vendita e la vendita.
    Devo fare un ulteriore modifica, ogni articolo della vendita ha la sua quantità, essa è situato nella Tabella Vendite, che è nella listview, fin qui ci siamo?
    Dopo aver aggiungo la vendita in una tabella(data,numero identificativo, ragione sociale, ecc.) carico in un'alta tabella i suoi dati(Matricola,CodBarre,descrizione,prezzo,quantit à,ecc..).
    Adesso io devo prendrendere la quantità ci ciascun prodotto caricato e sottrarla da un'altra tabella, ovvero la tabella: Articoli, questa tabella ha tutte le informazioni di ogni singolo Articolo(Matricola,CodBarre,Descrizione,ecc..) quella che devo modificare io è il campo giacenza di ogni singolo prodotto caricato.
    Nella listview ho caricato ad esempio: 2 Banane, 3 Mele, 5 Pere.
    Ok, devo estrarre la matricola o il CodBarre di ogni articolo della listview, poi tramite matricola o CodBarre faccio un update per ogni articolo caricato in precenza, faccio una sottrazione.
    Levo la quantità inserita precedentemente alla giacenza della tabella Articoli di ogni prodotto.
    Avevi capito bene, ho sono stupido io?
    Scusate, mi stanno facendo esaurire a lavoro.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Forse non mi sono spiegato bene.
    Mi hai fatto vedere caricare i dati vendita in un dataset.
    Dopo aver caricato i dati della vendita e la vendita.
    Devo fare un ulteriore modifica, ogni articolo della vendita ha la sua quantità, essa è situato nella Tabella Vendite, che è nella listview, fin qui ci siamo?
    Dopo aver aggiungo la vendita in una tabella(data,numero identificativo, ragione sociale, ecc.) carico in un'alta tabella i suoi dati(Matricola,CodBarre,descrizione,prezzo,quantit à,ecc..).
    Adesso io devo prendrendere la quantità ci ciascun prodotto caricato e sottrarla da un'altra tabella, ovvero la tabella: Articoli, questa tabella ha tutte le informazioni di ogni singolo Articolo(Matricola,CodBarre,Descrizione,ecc..) quella che devo modificare io è il campo giacenza di ogni singolo prodotto caricato.
    Nella listview ho caricato ad esempio: 2 Banane, 3 Mele, 5 Pere.
    Ok, devo estrarre la matricola o il CodBarre di ogni articolo della listview, poi tramite matricola o CodBarre faccio un update per ogni articolo caricato in precenza, faccio una sottrazione.
    Levo la quantità inserita precedentemente alla giacenza della tabella Articoli di ogni prodotto.
    Avevi capito bene, ho sono stupido io?
    Scusate, mi stanno facendo esaurire a lavoro.
    Non è questione di essere stupidi.. Non è che tutti nascono imparati e sanno fare/capiscono tutto. Un po' alla volta si impara, ci si confronta, si studia, si sperimenta e a forza di insistere si riesce.
    Detto ciò (sempre se ho capito giusto io), quello che volevo suggerirti io è che con un datatable tu puoi maneggiare con comodità i tuoi dati. Non occorre appoggiarsi alla listview, una datatable è quello che dice il nome stesso, una tabella di dati.
    Quando dici "ogni articolo della vendita ha la sua quantità, essa è situato nella Tabella Vendite, che è nella listview," non è corretto perché la tabella vendita è mostra nella listview. Ma a te della listview non te ne deve fregare niente.. Lavora solo a livello di datatable. Li i dati possono essere modificati come vuoi, ciclati, filtrati, tutto. Una volta fatto le modifiche hai l'update del database.
    Ti è chiaro quello che voglio dire io?

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Non è questione di essere stupidi.. Non è che tutti nascono imparati e sanno fare/capiscono tutto. Un po' alla volta si impara, ci si confronta, si studia, si sperimenta e a forza di insistere si riesce.
    Detto ciò (sempre se ho capito giusto io), quello che volevo suggerirti io è che con un datatable tu puoi maneggiare con comodità i tuoi dati. Non occorre appoggiarsi alla listview, una datatable è quello che dice il nome stesso, una tabella di dati.
    Quando dici "ogni articolo della vendita ha la sua quantità, essa è situato nella Tabella Vendite, che è nella listview," non è corretto perché la tabella vendita è mostra nella listview. Ma a te della listview non te ne deve fregare niente.. Lavora solo a livello di datatable. Li i dati possono essere modificati come vuoi, ciclati, filtrati, tutto. Una volta fatto le modifiche hai l'update del database.
    Ti è chiaro quello che voglio dire io?
    Si questo l'ho capito, della listview non mi importa nulla, lavoro sono a livello di datatable come hai appena scritto.
    Io non capisco come fare questo update, non è come il solito update, che sai ciò che devi modificare o quanti item sono.
    Nella query normale gli fornisco i dati che deve cambiare, ad esempio devo cambiare il campo matricola? benissimo, Set Matricola ='" & textbox1.text & "';"
    Però qui non so come fare, in teoria (penso) dovrei in qualche modo estrarre i valori(codbarre/matricola) inseriti precedentemente ed fare un update diverso dal solito, scusa se sbaglio o sono ripetitivo ma sto fondendo.

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.