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

    [VB.NET] Chiave Primaria - Fatture - Database MySQL

    Salve a tutti.

    Sto creando un form che mi permette di gestire fatture, mi sono bloccato.
    Inserisco i dati in una listview con questo codice:

    codice:
     Dim lv As ListViewItem = ListView1.Items.Add(txtDescrizione.Text)       
    
     lv.SubItems.Add(txtPrezzo.Text)
            lv.SubItems.Add(ComboIva.Text)
            lv.SubItems.Add(ComboInps.Text)
            lv.SubItems.Add(ComboRitenutaAcconto.Text)
    Inserisco i dati della fattura nel database con questo codice:

    codice:
    For Each x As ListViewItem In ListView1.Items            
    Dim strSQL As String = "INSERT INTO fatture (Data,Note,Codice,Cliente,Descrizione,Prezzo,Iva,Inps,RitenutaAcconto) Values ('" & _
                                txtNumero.Text & "', '" & _
                                txtData.Text & "', '" & _
                                txtNote.Text & "', '" & _
                               txtCliente.Text & "', '" & _
                                ComboCliente.Text & "', '" & _
                                x.SubItems(0).Text & "', '" & _
                                x.SubItems(1).Text & "','" & _
                                x.SubItems(2).Text & "','" & _
                                x.SubItems(3).Text & "','" & _
                                x.SubItems(4).Text & "')"
                CONNECTION.Open()
                cmd = New MySqlCommand(strSQL, CONNECTION)
                dr = cmd.ExecuteReader()
                dr.Close()
                cmd.Dispose()
                CONNECTION.Close()
    
    
            Next

    Questi dati vengono caricati da una listview.
    Ho creato una listview che visualizza tutte le fatture, però se metto come query: select * fatture
    mi visualizza tutti i dati non la fattura in se, quindi mi servirebbe una chiave primaria che identifichi tutti questi dati in una fattura.
    Il nome della chiave primaria al momento è: CodiceFattura, dato che non l'ho dichiarata nella query e dato che nel database ha l'auto increment la chiave cambia, come posso far in modo che carico tutti questi dati in un singolo item che sarebbe la fattura?
    Come posso fare?
    Lo so, mi sono spiegato malissimo

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131

    Immagini

    Allego delle immagine che potrebbero far capire meglio ciò che voglio fare:

    Quando Carico la fattura nel db non carica un solo record, carica un record per ogni item che c'è nella listview, io voglio racchiudere tutti quei record in un record.
    Esempio di lettura listview:




    Al Click di una fattura in un altra listview veranno visualizzati tutti i record della fattura:
    Esempio di lettura listview:



    Come posso fare?
    Grazie in anticipo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Allego delle immagine che potrebbero far capire meglio ciò che voglio fare:

    Quando Carico la fattura nel db non carica un solo record, carica un record per ogni item che c'è nella listview, io voglio racchiudere tutti quei record in un record.
    Esempio di lettura listview:




    Al Click di una fattura in un altra listview veranno visualizzati tutti i record della fattura:
    Esempio di lettura listview:



    Come posso fare?
    Grazie in anticipo
    Ciao
    Forse mi sfugge qualcosa.. Cos'è che non riesci a fare?
    Nel tuo DB hai creato 2 tabelle, collegate con una relazione 1 a molti? 1 fattura --> molti item
    Per fare questo devi creare le chiavi primarie in entrambi le tabelle e stabilire la relazione tra loro.
    Ultima modifica di renygade; 28-05-2014 a 11:00

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Mi spiego meglio.

    Io ho queste tabelle:



    La tabelle clienti contiene questi campi:




    La tabella fatture contiene questi campi:




    Quando apro il form delle fatture, scelgo un cliente da una combobox, dopo aver scelto il cliente, il programma preleva tutte le sue informazioni(il nome e il codice del cliente)dalla tabella clienti, dopodichè una sub calcola il numero della fattura corrente, in questo è la prima 1/2014,tramite delle textbox e combobox inserisco degli item nella listview:
    Descrizione, prezzo, Imposta,Inps,Ritenuta D'Acconto.
    Dopodichè clicco salva e mi carica nella tabella fatture tutti gli item che ho aggiunta nella listview.



    Adesso io vorrei visualizzare tutte le fatture presenti nella tabella fatture in una listview

    Se come query uso select * fatture , verranno visualizzati tutti gli item e non la fattura in se, se faccio ad esempio select.

    Io in una listview voglio visualizzare tutte le fatture, in un'altra listview al suo click deve visualizzare tutti gli item di quella fattura avevo usato come punto di riferimento Numero(numero della fattura) come chiave primaria, ma ogni volta che caricava un item nel database dava errore perchè ovviamente la chiave si duplicava, quindi come posso fare?

    Spero di essermi spiegato meglio, non so che chiave usare per entrambi, vorrei usare il numero della fattura è univoco per ogni fattura non possono esistere 2 fatture con lo stesso numero.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito ... usi la stessa tabella per i dati generali della fattura e per le sue righe ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    I dati del cliente(codice e cliente) li preleva dalla tabella clienti.
    I dati della fattura li carica su fatture
    Cosa sbaglio?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La fattura ha dei dati generali (id, data, numero, cliente) e dei dati specifici (quelle delle linee, articolo, prezzo, qta ...).

    Dovresti avere una tabella per i dati generali (fatture) e una con le linee appartenenti alle varie fatture (dettaglio) collegati da un id univoco (quello della fattura)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Ho risolto, grazie.

  9. #9
    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Ho risolto, grazie.
    risolto... come? ma hai capito quello che ti ha detto @oregon?? il tuo db, da quanto si è capito, non va bene cosi come l'hai strutturato....
    Jupynet

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Si lo so, comunque ho risolto così:

    Tabelle

    fatture:



    dettaglio:



    Per caricare i dati, faccio così:

    Dichiaro 2 sub, una per i dati generali e un'altra per gli elementi della fattura.

    codice:
      Public Sub CaricamentoDatiFattura()        Dim strSQL As String = "INSERT INTO fatture (Numero,Codice,Cliente,Data) Values ('" & _
                                 txtNumero.Text & "', '" & _
                              txtCliente.Text & "', '" & _
                              ComboCliente.Text & "', '" & _
                              txtData.Text & "')"
    
    
            CONNECTION.Open()
            cmd = New MySqlCommand(strSQL, CONNECTION)
            dr = cmd.ExecuteReader()
            dr.Close()
            cmd.Dispose()
            CONNECTION.Close()
        End Sub
    
    
        Public Sub CaricamentoElementiFattura()
            For Each x As ListViewItem In ListView1.Items
                Dim strSQL As String = "INSERT INTO dettaglio (Numero,Descrizione,Prezzo,Imposta,Inps,RitenutaAcconto,Note) Values ('" & _
                                 txtNumero.Text & "', '" & _
                             x.SubItems(0).Text & "', '" & _
                                x.SubItems(1).Text & "','" & _
                                x.SubItems(2).Text & "','" & _
                                x.SubItems(3).Text & "','" & _
                                x.SubItems(4).Text & "','" & _
                              txtNote.Text & "')"
    
    
                CONNECTION.Open()
                cmd = New MySqlCommand(strSQL, CONNECTION)
                dr = cmd.ExecuteReader()
                dr.Close()
                cmd.Dispose()
                CONNECTION.Close()
    
    
            Next
        End Sub
    Poi all'interno di un button richiamo le 2 sub:

    codice:
     CaricamentoDatiFattura()
            CaricamentoElementiFattura()
    In questo modo nella tabella fatture vengono inserite le informazioni generali, mentre nella tabella dettaglio le informazioni degli elementi, come id univoco ho utilizzato il numero della fattura.


    Chiave Primaria tabella fatture: Numero(il numero della fattura)
    Chiave Primaria tabella dettaglio : id(campo int, con auto increment)

    Il collegamento l'ho fatto tra la chiave primaria numero della tabella fatture e il campo numero della tabella dettaglio

    Per caricare le fatture nella listview ho fatto così:

    codice:
    Public Sub CaricamentoFattureClienti()        strSQL = "SELECT * FROM fatture"
            CONNECTION.Open()
            cmd = New MySqlCommand(strSQL, CONNECTION)
            dr = cmd.ExecuteReader()
    
    
            Do While dr.Read()
    
    
                NumeroFattura = dr("Numero").ToString
                DataFattura = dr("Data").ToString
                ClienteFattura = dr("Cliente").ToString
                CodiceFattura = dr("Codice").ToString
    
    
    
    
                Dim lv As ListViewItem = ListView4.Items.Add(NumeroFattura)
                lv.SubItems.Add(DataFattura)
                lv.SubItems.Add(ClienteFattura)
                lv.SubItems.Add(CodiceFattura)
            Loop
            dr.Close()
            cmd.Dispose()
            CONNECTION.Close()
        End Sub
    Infine bisogna selezionare una fattura, in questo modo in un'altra listview ci saranno tutti gli elementi caricati prima nel database.

    Ecco il codice:

    codice:
     Public Sub CaricamentoElementiFattura()
    
            strSQL = "SELECT * FROM dettaglio where Numero ='" & ListView4.SelectedItems(0).Text & "'"
            CONNECTION.Open()
            cmd = New MySqlCommand(strSQL, CONNECTION)
            dr = cmd.ExecuteReader()
    
    
            Do While dr.Read()
    
    
                NumeroFattura = dr("Numero").ToString
                DescrizioneFattura = dr("Descrizione").ToString
                PrezzoFattura = dr("Prezzo").ToString
                IvaFattura = dr("Imposta").ToString
                InpsFattura = dr("Inps").ToString
                RitenutaAccontoFattura = dr("RitenutaAcconto").ToString
    
    
                Dim lv As ListViewItem = ListView5.Items.Add(NumeroFattura)
                lv.SubItems.Add(DescrizioneFattura)
                lv.SubItems.Add(PrezzoFattura)
                lv.SubItems.Add(IvaFattura)
                lv.SubItems.Add(RitenutaAccontoFattura)
    
    
            Loop
            dr.Close()
            cmd.Dispose()
            CONNECTION.Close()
        End Sub
    Evento selectedindexchange (listview5):

    codice:
     Private Sub ListView4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView4.SelectedIndexChanged        ListView5.Items.Clear()
            CaricamentoElementiFattura()
        End Sub
    Grazie ai vostri consigli sono arrivato alla soluzione.
    Mi scuso ancora.

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.