Problemi con aggiornamento datagridview

di il
10 risposte

Problemi con aggiornamento datagridview

    Private Sub Ripartizione_definitiva_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cl.connessione()
        CheckForIllegalCrossThreadCalls = False
        ID.Text = selezionato_id
        Denominazione.Text = selezionato_denom
        Anno.Text = selezionato_anno
        t1.Start()
        t2.Start()
        totali()
        Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo)
        ToolStripProgressBar1.Style = ProgressBarStyle.Continuous
        ToolStripProgressBar1.MarqueeAnimationSpeed = 0
    End Sub

Buongiorno.

Ho scritto molte righe di codice per ottenere una tabella riassuntiva da una serie di query e/o tabelle in relazione uno-uno.

Il codice funziona perfettamente, tant'è cha la tabella contiene tutti i dati che deve contenere.

Il mio problema è questo : dopo aver eseguito gli aggiornamenti, un DGV ha il compito di leggere semplicemente la tabella e visualizzarla,

ma non mi restituisce purtroppo quella aggiornata, ma giusto quella precedente all'aggiornamento!

Ho provato anche ad inserire Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo) nell'evento shown,ma senza esito.

Grazie per l'aiuto.

10 Risposte

  • Re: Problemi con aggiornamento datagridview

    Impossibile rispondere solamente con quello che mostri.

    Che fa

    cl.connessione()

    ?

  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - oregon ha scritto:


    Impossibile rispondere solamente con quello che mostri.

    Che fa

    cl.connessione()
        Public Sub connessione()
           cnn = New OleDbConnection(My.Settings.NewCondominioConnectionString)
       End Sub

    Come ho scritto, il codice di aggiornamento della tabella funziona.

    Il problema che è non so come attivare l'update della tabella prima che venga letta dal DGV.

    Grazie,comunque.

  • Re: Problemi con aggiornamento datagridview

    Ma scusa, crei sempre una nuova connessione? Perché?

    Se la griglia è già collegata a che ti serve una nuova connessione?

  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - Jan ha scritto:


    un DGV ha il compito di leggere semplicemente la tabella e visualizzarla,

    ma non mi restituisce purtroppo quella aggiornata, ma giusto quella precedente all'aggiornamento!

    mah, come ti ha detto oregon, con quello che mostri è arduo risponderti..

    la dvg l'hai riconessa?

    i dati sono aggiornati o solo elaborati in attesa di essere aggiornati?

    28/06/2024 - Jan ha scritto:


    Ho scritto molte righe di codice per ottenere una tabella riassuntiva da una serie di query e/o tabelle in relazione uno-uno.

    tabelle in relazione 1 a 1 significa che hai dati spezzettati su più tabelle come fossero un solo record… molte righe di codice per legarle mi sembra spropositato.

    28/06/2024 - Jan ha scritto:


    non mi restituisce purtroppo quella aggiornata, ma giusto quella precedente all'aggiornamento!

    se ripeti l'operazione si aggiorna?

    per esempio:

    situazione iniziale: A

    aggiornamento: B

    visualizzi: A

    riaggiorni: C

    visualizzi A oppure B?

    dove A, B e C sono gli insiemi dei dati che vorresti ottenere.

  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - Jan ha scritto:


    Il problema che è non so come attivare l'update della tabella prima che venga letta dal DGV.

    ecco… l'ho visto adesso.

    dove e quando fai l'update? e come lo fai….

    dove e quando attivi la dgv?

    Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo)

    non conoscendo in che modo hai estrapolato i dati da più tabelle con tante righe di codice, come possiamo sapere come effettuare il post dei dati?

  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - oregon ha scritto:


    Ma scusa, crei sempre una nuova connessione? Perché?

    Se la griglia è già collegata a che ti serve una nuova connessione?

    No,Oregon.Inizializzo la connessione una sola volta, nell'evento load.La connessione la utilizzo per le query che sono una delle fonti di alimentazione della tabella principale.

        Public Sub sql(query)
            If Not cnn.State = ConnectionState.Open Then
                cnn.Open()
            End If
            Dim cmd As New OleDbCommand(query, cnn)
            cmd.ExecuteNonQuery()
            If cnn.State = ConnectionState.Open Then
                cnn.Close()
            End If
        End Sub
  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - sihsandrea ha scritto:


    se ripeti l'operazione si aggiorna?

    per esempio:

    situazione iniziale: A

    aggiornamento: B

    visualizzi: A

    riaggiorni: C

    visualizzi A oppure B?

    dove A, B e C sono gli insiemi dei dati che vorresti ottenere.

    SihsAndrea,rispondo subito alla tua domanda: 

    se ripeto l'operazione, la DGV mi da i dati aggiornati.

    dove e quando fai l'update? e come lo fai….
    dove e quando attivi la dgv?

    ho provato a fare l'update prima della linea

    Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo)

    ma senza esito.

    Il datasource del DGV è attivo dall'inizio, cioè prima che inizi la fase di elaborazione.  

    Di seguito ti fornisco un pezzetto del codice delle modalità usate per aggiornare la tabella principale (bilancio_consuntivo), ma tieni presente che sono previste la creazione via runtime di quattro relazioni e di molto codice ADODB per arrivare alla tabella principale, che alla fine contiene comunque esattamente i dati che vorrei che la DGV visualizzasse:

            Dim query As String
           Try
               '1)accodiamo Proprietari a bilancio consuntivo
               query = "Delete from bilancio_consuntivo"
               cl.sql(query)
               query = "INSERT INTO bilancio_consuntivo ( id_ana, anno, condomino, scala, interno, A, A1, A2, A3, A5, BC )
                       SELECT proprietari.id_ana, proprietari.anno, proprietari.condomino, proprietari.scala, proprietari.interno, proprietari.A, proprietari.A1, proprietari.A2, proprietari.A3, proprietari.A5, proprietari.BC
                       FROM proprietari
                       WHERE proprietari.id_ana=" & selezionato_id & " AND proprietari.anno=" & selezionato_anno
               cl.sql(query)
           Catch ex As Exception
               MsgBox(ex.Message,, "1")
           End Try
           '2)ora,creaimo i totali delle spese definitive.
           Try
               query = "delete * from spesedefinitive"
               cl.sql(query)
               query = "INSERT INTO SpeseDefinitive ( tabella, scala, TotaleSpese )
                       SELECT uscite_dettaglio.tabella, uscite_dettaglio.scala, Sum(uscite_dettaglio.spesa) AS SommaDispesa
                       FROM uscite_dettaglio
                       WHERE uscite_dettaglio.ID_ANA=" & selezionato_id & " AND uscite_dettaglio.anno=" & selezionato_anno &
                       " GROUP BY uscite_dettaglio.tabella, uscite_dettaglio.scala
                       ORDER BY uscite_dettaglio.tabella;"
               cl.sql(query)
           Catch ex As Exception
               MsgBox(ex.Message,, "2")
           End Try
           
           ....omissis....
                       'aggiornamento bilancio consuntivo con spese individuali
                query = "UPDATE bilancio_consuntivo INNER JOIN individuali ON bilancio_consuntivo.condomino = individuali.CONDOMINO SET bilancio_consuntivo.importo_INDIV = [individuali].[spesa]
                   WHERE bilancio_consuntivo.ID_ANA=" & selezionato_id & " AND bilancio_consuntivo.anno=" & selezionato_anno & " AND individuali.ID_ANA=" & selezionato_id & " AND individuali.ANNO=" & selezionato_anno
                cl.sql(query)
    
                'aggiornamento bialncio consuntivo con spese acqua
                query = "UPDATE bilancio_consuntivo INNER JOIN acqua ON bilancio_consuntivo.condomino = acqua.CONDOMINO SET bilancio_consuntivo.importo_H2O = [acqua].[spesa]
                   WHERE bilancio_consuntivo.ID_ANA=" & selezionato_id & " AND bilancio_consuntivo.anno=" & selezionato_anno & " AND acqua.ID_ANA=" & selezionato_id & " AND acqua.ANNO=" & selezionato_anno
                cl.sql(query)
    
                'generazione totali per ogni spesa di ogni tabella (dati presi da Entrate)
                query = "Delete from TotaliVersati"
                cl.sql(query)
    

    Grazie SihsAndrea. Grazie per tentare tu ed Oregon di aiutarmi.

  • Re: Problemi con aggiornamento datagridview

    28/06/2024 - Jan ha scritto:


    Il datasource del DGV è attivo dall'inizio, cioè prima che inizi la fase di elaborazione

    Lo chiudi e lo riapri.

    Se usi query per tutto l'ambaradan il dataset è fermo alla vecchia istanza.

  • Re: Problemi con aggiornamento datagridview

    Imports System.Data.OleDb
    Public Class Ripartizione_definitiva_aggiornamento
       Dim cl As New Class1
       Dim t1 As Threading.Thread = New Threading.Thread(AddressOf pb)
       Dim t2 As Threading.Thread = New Threading.Thread(AddressOf elabora)
       Dim vA, vA1, vA2, vBC, vA3, vA5 As Double
       Dim vimportoA, vimportoA1, vimportoA2, vimportoBC, vimportoA3, vimportoA5 As Double
       '-----------
       Dim da As New OleDbDataAdapter("Select * from bilancio_consuntivo", cl.cnn)
       Dim cb As OleDbCommandBuilder
       '-----------
       Private Sub Ripartizione_definitiva_Load(sender As Object, e As EventArgs) Handles MyBase.Load
           cl.connessione()
           CheckForIllegalCrossThreadCalls = False
           ID.Text = selezionato_id
           Denominazione.Text = selezionato_denom
           Anno.Text = selezionato_anno
           t1.Start()
           t2.Start()
           totali()
           '---------------------
           Dim dt As New DataTable("bilancio")
           NewCondominioDataSet.Tables.Add("bilancio")
           cl.cnn.Open()
           Try
               da.Fill(dt)
           Catch ex As Exception
               MsgBox(ex.Message)
           Finally
               cl.cnn.Close()
           End Try
           cb = New OleDbCommandBuilder(da)
           da.Update(NewCondominioDataSet, "bilancio")
           '---------------------
           Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo)
           ToolStripProgressBar1.Style = ProgressBarStyle.Continuous
           ToolStripProgressBar1.MarqueeAnimationSpeed = 0
    

    Ho integrato il codice con quanto racchiuso nella parte tratteggiata.

    La tabella mi viene restituita aggiornata, ma mi viene restituito il seguente errore : 

    Fill: la proprietà SelectCommand.Connection non è stata inizializzata

    sebbene risulti inizializzata 

      Dim da As New OleDbDataAdapter("Select * from bilancio_consuntivo", cl.cnn)

    Grato per qualsiasi contributo.

  • Re: Problemi con aggiornamento datagridview

    Ho risolto nel modo più elementare possibile :

           consuntivoDGV.DataSource = NewCondominioDataSet.bilancio_consuntivo
           Me.Bilancio_consuntivoTableAdapter.Fill(Me.NewCondominioDataSet.bilancio_consuntivo)

    Grazie Oregon.Grazie SihsAndrea.

     
Devi accedere o registrarti per scrivere nel forum
10 risposte