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

    [VB 2010 e ACCESS 2007] Avvio programma lento poi veloce

    Sarà magari una domanda comune...
    ho fatto un programma in vb 2010 che si connette ad un db access; funziona tutto. l unico problema è che alla PRIMA apertura del form passano 5-10 per la visualizzazione; mentre poi quando chiudo e riapro è tutto istantaneo.

    posto il codice
    codice:
    Public Class frmASSEGNAZIONI Dim CONN As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=assegnazioni.accdb" Dim SQL As String Dim s() As String Dim controllodata As String Dim modifica As Integer Private Sub frmASSEGNAZIONI_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim cn As New OleDbConnection(CONN) Dim i As Integer i = 0 modifica = 0 ' se 0 inserisco dati, se 1 modifico 'resetto i campi dtpDATA.Text = "" cmbORA.Refresh() txtCLIENTE.Text = "" txtCITTA.Text = "" cmbMODELLO.Items.Clear() cmbMODELLO.Text = "" chkRETE.Checked = False chkFT.Checked = False chkCONCLUSA.Visible = False chkADMIN.Checked = False chkSERVER.Checked = False txtNPC.Text = "" txtRIF.Text = "" btnERASE.Enabled = False 'resetto treeview tvASSEGNAZIONI.Nodes.Clear() 'POPOLO COMBO MODELLI MACCHINE cn.Open() SQL = "SELECT * FROM MODELLI ORDER BY MARCA" Dim cmd As New OleDbCommand(SQL, cn) Dim objDataReader As OleDbDataReader = cmd.ExecuteReader While objDataReader.Read cmbMODELLO.Items.Add(objDataReader("marca") & " " & objDataReader("modello")) End While objDataReader.Close() cn.Close() 'POPOLO TREEVIEW CON ASSEGNAZIONI cn.Open() SQL = "SELECT id,data,cliente,conclusa FROM ASSEGNAZIONI ORDER BY DATA" cmd = New OleDbCommand(SQL, cn) objDataReader = cmd.ExecuteReader While objDataReader.Read If i = 0 Then tvASSEGNAZIONI.Nodes.Add(objDataReader("data")) tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente")) i = i + 1 Else If objDataReader("data") = tvASSEGNAZIONI.Nodes(i - 1).Text Then tvASSEGNAZIONI.Nodes(i - 1).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente")) Else tvASSEGNAZIONI.Nodes.Add(objDataReader("data")) tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente")) i = i + 1 End If End If End While objDataReader.Close() cn.Close() 'POPOLO LIST BOX ListView1.Clear() ' Set ListView Properties ListView1.View = View.Details ListView1.GridLines = True ListView1.FullRowSelect = True ListView1.HideSelection = False ListView1.MultiSelect = False ' Create Columns Headers ListView1.Columns.Add("mesi") ListView1.Columns.Add("totale mese") ListView1.Columns.Add("totale fuori triveneto") cn.Open() SQL = "SELECT MONTH(ASSEGNAZIONI.data) as mese, COUNT(*) as TOTALE_INSTALLAZIONI, SUM(ASSEGNAZIONI.ft) as TOTFT FROM(ASSEGNAZIONI) GROUP BY MONTH(ASSEGNAZIONI.data)" cmd = New OleDbCommand(SQL, cn) objDataReader = cmd.ExecuteReader While objDataReader.Read ' Create List View Item (Row) Dim lvi As New ListViewItem ' First Column can be the listview item's Text lvi.Text = MonthName(objDataReader("mese").ToString) ' Second Column is the first sub item lvi.SubItems.Add(objDataReader("totale_installazioni").ToString) lvi.SubItems.Add((objDataReader("totft") * -1).ToString) ' Add the ListViewItem to the ListView ListView1.Items.Add(lvi) End While objDataReader.Close() cn.Close() End Sub
    Potete spiegarmi a cos'è dovuta tale latenza?

    grazie

  2. #2
    RIPOSTO IL CODICE
    codice:
    Public Class frmASSEGNAZIONI
        Dim CONN As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=assegnazioni.accdb"
        Dim SQL As String
        Dim s() As String
        Dim controllodata As String
        Dim modifica As Integer
    
        Private Sub frmASSEGNAZIONI_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim cn As New OleDbConnection(CONN)
            Dim i As Integer
    
            i = 0
            modifica = 0 ' se 0 inserisco dati, se 1 modifico
    
            'resetto i campi
            dtpDATA.Text = ""
            cmbORA.Refresh()
            txtCLIENTE.Text = ""
            txtCITTA.Text = ""
            cmbMODELLO.Items.Clear()
            cmbMODELLO.Text = ""
            chkRETE.Checked = False
            chkFT.Checked = False
            chkCONCLUSA.Visible = False
            chkADMIN.Checked = False
            chkSERVER.Checked = False
            txtNPC.Text = ""
            txtRIF.Text = ""
            btnERASE.Enabled = False
    
            'resetto treeview
            tvASSEGNAZIONI.Nodes.Clear()
    
            'POPOLO COMBO MODELLI MACCHINE
            cn.Open()
            SQL = "SELECT * FROM MODELLI ORDER BY MARCA"
            Dim cmd As New OleDbCommand(SQL, cn)
            Dim objDataReader As OleDbDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                cmbMODELLO.Items.Add(objDataReader("marca") & " " & objDataReader("modello"))
            End While
    
            objDataReader.Close()
            cn.Close()
    
            'POPOLO TREEVIEW CON ASSEGNAZIONI
            cn.Open()
            SQL = "SELECT id,data,cliente,conclusa FROM ASSEGNAZIONI ORDER BY DATA"
            cmd = New OleDbCommand(SQL, cn)
            objDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                If i = 0 Then
                    tvASSEGNAZIONI.Nodes.Add(objDataReader("data"))
                    tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                    i = i + 1
                Else
                    If objDataReader("data") = tvASSEGNAZIONI.Nodes(i - 1).Text Then
                        tvASSEGNAZIONI.Nodes(i - 1).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                    Else
                        tvASSEGNAZIONI.Nodes.Add(objDataReader("data"))
                        tvASSEGNAZIONI.Nodes(i).Nodes.Add(objDataReader("id") & "-" & objDataReader("cliente"))
                        i = i + 1
                    End If
    
                End If
            End While
    
            objDataReader.Close()
            cn.Close()
    
            'POPOLO LIST BOX
    
            ListView1.Clear()
    
            ' Set ListView Properties  
            ListView1.View = View.Details
            ListView1.GridLines = True
            ListView1.FullRowSelect = True
            ListView1.HideSelection = False
            ListView1.MultiSelect = False
    
            ' Create Columns Headers  
            ListView1.Columns.Add("mesi")
            ListView1.Columns.Add("totale mese")
            ListView1.Columns.Add("totale fuori triveneto")
    
            cn.Open()
            SQL = "SELECT MONTH(ASSEGNAZIONI.data) as mese, COUNT(*) as TOTALE_INSTALLAZIONI, SUM(ASSEGNAZIONI.ft) as TOTFT FROM(ASSEGNAZIONI) GROUP BY MONTH(ASSEGNAZIONI.data)"
            cmd = New OleDbCommand(SQL, cn)
            objDataReader = cmd.ExecuteReader
    
            While objDataReader.Read
                ' Create List View Item (Row)  
                Dim lvi As New ListViewItem
    
                ' First Column can be the listview item's Text  
                lvi.Text = MonthName(objDataReader("mese").ToString)
    
                ' Second Column is the first sub item  
                lvi.SubItems.Add(objDataReader("totale_installazioni").ToString)
                lvi.SubItems.Add((objDataReader("totft") * -1).ToString)
    
                ' Add the ListViewItem to the ListView  
                ListView1.Items.Add(lvi)
    
    
            End While
    
            objDataReader.Close()
            cn.Close()
        End Sub

  3. #3
    prova ad eseguire le query da sole, così capisci se il problema è nella prima lettura dei dati o nel popolamento delle combo

  4. #4
    guarda lo stesso identico problema ce l ho su altri 2 programmi che usano sempre access.

  5. #5
    Ah e nel database ci sono 10 record

  6. #6
    allora è Access la prima volta farà una serie di controlli che poi non fa successivamente. parliamo di 5-10 secondi o 5-10 minuti? se sono secondi, metti un "Attendere, prego..." e sei a posto

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.