Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB.NET] Dividere un record letto da file Access su due righe in un DataGridView

    Buongiorno a tutti, forse sono arrivato nel posto giusto...
    avrei l'esigenza di visualizzare in un dataviewgrid un record fatto da codice materiale, descrizione del articolo 12 campi (uno per ogni mese) relativi agli ordini fornitori (dati che provengono dagli ordini fornitori) e altri 12 campi (uno per ogni mese) relativi agli ordini clienti. Questi 24 campi sono aggiornati da procedure esaterne...quello che vorrei realizzare e la visualizzazione dei 24 campi relativi ai mesi su due righe in un datagridview..
    Vi incollo il codice scrito sinora:
    Public Class frmPrincipale


    Dim ConnStringAssegnazioni As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ApplicazioneTrafiltecno\Trafiltecno.accd b;"
    Dim Connessione As New OleDbConnection(ConnStringAssegnazioni)
    Dim DataTable As New DataTable


    Private Sub CaricaDati()


    Try
    Connessione.Open()


    Dim Query As String = "SELECT * From Q_Assegnazioni"
    Dim Adapter As New OleDbDataAdapter(Query, Connessione)
    Adapter.Fill(DataTable)


    dgwAssegnazioni.DataSource = DataTable


    Connessione.Close()
    Catch ex As Exception


    MsgBox("Errore di connessione" & vbCrLf & ex.Message)
    Connessione.Close()


    End Try


    End Sub


    Private Sub frmPrincipale_Load(sender As Object, e As EventArgs) Handles MyBase.Load


    CaricaDati()
    ImpostadgwAssegnazioni()




    End Sub


    Private Sub cmdFine_Click(sender As Object, e As EventArgs) Handles cmdFine.Click
    Me.Close()
    End
    End Sub


    Private Sub ImpostadgwAssegnazioni()


    'intestazione colonne
    With dgwAssegnazioni


    .ReadOnly = True


    .Columns(0).HeaderText = "Codice"
    .Columns(1).HeaderText = "Descriz."
    .Columns(2).HeaderText = "Esistenza"
    .Columns(3).HeaderText = "Mese1"
    .Columns(4).HeaderText = "Mese2"
    .Columns(5).HeaderText = "Mese3"
    .Columns(6).HeaderText = "Mese4"
    .Columns(7).HeaderText = "Mese5"
    .Columns(8).HeaderText = "Mese6"
    .Columns(9).HeaderText = "Mese7"
    .Columns(10).HeaderText = "Mese8"
    .Columns(11).HeaderText = "Mese9"
    .Columns(12).HeaderText = "Mese10"
    .Columns(13).HeaderText = "Mese11"
    .Columns(14).HeaderText = "Mese12"


    For I = 2 To 14
    .Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    Next


    For I = 2 To 14
    .Columns(I).DefaultCellStyle.Format = "###,##0"
    Next


    For I = 15 To 28
    .Columns(I).Visible = False
    Next


    'larghezza colonne
    .Columns(0).Width = 60
    .Columns(1).Width = 60
    .Columns(2).Width = 70
    .Columns(3).Width = 70
    .Columns(4).Width = 70
    .Columns(5).Width = 70
    .Columns(6).Width = 70
    .Columns(7).Width = 70
    .Columns(8).Width = 70
    .Columns(9).Width = 70
    .Columns(10).Width = 70
    .Columns(11).Width = 70
    .Columns(12).Width = 70
    .Columns(13).Width = 80
    .Columns(14).Width = 80


    .RowTemplate.Height = 300








    End With
    end sub

    Ho reso non visibile le ultime 12 colonne per poterle poi visualizzare su una riga successiva, e possibile farlo?

    Grazie Aucone Francesco

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    305
    Innanzitutto, quando pubblichi del codice, DEVI usare il pulsante apposito e racchiuderlo tra i tag corretti altrimenti risulta illeggibile.

    Nel momento in cui tu fai
    codice:
    Adapter.Fill(DataTable)
    leggi il database e lo riporti pari-pari su di una DataTable, per cui la DataGridView non può far altro che visualizzarla così com'è.

    Se vuoi dividere il record su due righe distinte della DataGridView devi fare una elaborazione "a mano".

    Possibile soluzione:
    Definisci una DataTable1. Leggi la tabella dal database e riversi su questa DataTable1
    Definisci una DataTable2. Scorri la DataTable1 ed a ogni riga vai a creare due righe su DataTable2 con i dati che vuoi visualizzare.
    Associ la DataTable2 alla DataGridView
    Piccolo suggerimento:
    Dato che una riga è per i fornitori e una riga per il clienti, potresti aggiungere alla DataTable2 un campo boleano dove (ad esempio) per i clienti è True e per i fornitori è False.
    Poi, dentro l'evento CellFormatting della DataGridView, se quel campo è True selezioni un certo colore di sfondo, se è False un altro colore, così l'utente che guarda la DataGridView capisce a colpo d'occhio ogni riga di cosa si tratta

  4. #4
    avevo suggerito di giocare sulla select con un trucco del tipo SELECT campomese01clienti & vbcrlf & campomese01fornitori ... in modo da avere 2 valori in una cella -- ma è da capire l'effetto grafico che si vuole ottenere

  5. #5
    Grazie Sir Jo, il tasto giusto e "rispondi quotando"?
    provo a fare come mi hai suggerito e ti faccio sapere se funziona.
    Francesco

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    305
    No, per mettere i tag per eventuale codice che vuoi scrivere devi usare il tasto con disegnato il cancelletto

  7. #7
    codice:
     ok ...tu dici cosi giusto?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    305
    Esatto !!!

  9. #9
    Grazie, piano piano imparo...sto per andare in pensione e vorrei lasciare il codice del mio applicativo in VB NET da VB6 e ho iniziato leggendo una guida...e spero di farcela in modo che qualsiasi persona che conosca un po di programmazione possa metterci le mani..
    Ora provero a fare come mi hai spiegato te e sto studiano come scorrere i dati e utilizzarli

    Grazie per l'aiuto
    Francesco

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 © 2024 vBulletin Solutions, Inc. All rights reserved.