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
Potete spiegarmi a cos'è dovuta tale latenza?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
grazie

Rispondi quotando
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
