Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
ProgressBar non va in esecuzione da Visual Studio 2005
martedì 28 ottobre 2008 - 16.28
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mar 28 ott 2008 - 16:28
Buon pomeriggio ho un problema con la mia progressbar.
Ho costruito un semplice form da dove seleziono un file.txt dove all'interno ci sono circa 70.000 record e li trasferisco all'interno della mia tabella in sqlserver 2005 express, il problema che quando clicco sul tasto importa la progressbar non parte, praticamente il processo di trasferimento dei dati non permette l'esecuzione della progressbar vi posto il codice che ho usato per trasferire i dati e l'invio della progressbar dove sbaglio?
Grazie in anticipo.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Public Class CaricaBanche
' file letto in input
Dim fileInput As StreamReader
' Dichiaro stringa di connessione database...
Private FILE_NAME = IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath.ToString).ToString & "\myConnectionString.txt"
Dim objDataReader As System.Data.SqlClient.SqlDataReader
Dim cmd As New System.Data.SqlClient.SqlCommand
Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
' mostro la dialog per aprire il file
OFD.ShowDialog(Me)
' imposto nella textbox il nome del file
txtFileInput.Text = OFD.FileName
' leggo il file e lo tengo nello stream reader
If Not String.IsNullOrEmpty(OFD.FileName) Then fileInput = New StreamReader(OFD.OpenFile())
End Sub
Private Sub CaricaBanche_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ProgressBar1.Maximum = 100
ProgressBar1.Minimum = 0
ProgressBar1.Value = 0
End Sub
Private Sub btnImporta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImporta.Click
If Not File.Exists(FILE_NAME) Then
MsgBox(FILE_NAME & " Stringa di connessione mancante.")
Return
End If
Dim sr As StreamReader = File.OpenText(FILE_NAME)
Dim sqlString As String
sqlString = sr.ReadLine()
Me.ToolStripStatusLabel2.Text = (sqlString) 'Questo è solo per verificare!
sr.Close()
Dim objConnection As New SqlConnection(sqlString)
Timer1.Start()
Me.Cursor = Cursors.WaitCursor
Me.ImportToDB(sqlString)
Me.Cursor = Cursors.Arrow
MessageBox.Show("OK FLUSSO CARICATO", "CONFERMA", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Sub ImportToDB(ByVal ConnString As String)
If Not File.Exists(FILE_NAME) Then
MsgBox(FILE_NAME & " Stringa di connessione mancante.")
Return
End If
Dim sr As StreamReader = File.OpenText(FILE_NAME)
Dim sqlString As String
sqlString = sr.ReadLine()
Me.ToolStripStatusLabel2.Text = (sqlString) 'Questo è solo per verificare!
sr.Close()
Dim objConnection As New SqlConnection(sqlString)
' apro la connessione
objConnection.Open()
Using objCmd As New SqlCommand("dbo.proc_BancaUpsert", objConnection)
' tipo stored procedure
objCmd.CommandType = CommandType.StoredProcedure
' ciclo il file
While Not fileInput.EndOfStream
Dim Row As MyRow = Me.GetRow(fileInput.ReadLine())
' genero il comando
' assegno i parametri alla stored procedure
objCmd.Parameters.Add("@Abi", SqlDbType.VarChar, 5).Value = Row.Abi
objCmd.Parameters.Add("@IstitutoCredito", SqlDbType.VarChar, 50).Value = Row.IstitutoCredito
objCmd.Parameters.Add("@Cab", SqlDbType.VarChar, 5).Value = Row.Cab
objCmd.Parameters.Add("@Agenzia", SqlDbType.VarChar, 50).Value = Row.Agenzia
objCmd.Parameters.Add("@IndirizzoIstituto", SqlDbType.VarChar, 50).Value = Row.IndirizzoIstituto
objCmd.Parameters.Add("@LuogoIstituto", SqlDbType.VarChar, 50).Value = Row.LuogoIstituto
objCmd.Parameters.Add("@Cap", SqlDbType.VarChar, 5).Value = Row.Cap
objCmd.Parameters.Add("@Prov", SqlDbType.VarChar, 5).Value = Row.Prov
' eseguo il comando
objCmd.ExecuteNonQuery()
' pulisco la collezione dei parametri
objCmd.Parameters.Clear()
End While
End Using
objConnection.Close()
End Sub
''' <summary>
''' scompone la riga in campi di una classe
''' </summary>
Private Function GetRow(ByVal Row As String) As MyRow
' splitto la riga per il carattere ;
Dim columns As String() = Row.Split(";"c)
' nuova istanza della riga dell "tabella"
Dim objRow As New MyRow
Dim pAbi As String = String.Empty
Dim pIstitutoCredito As String = String.Empty
Dim pCab As String = String.Empty
Dim pAgenzia As String = String.Empty
Dim pIndirizzoIstituto As String = String.Empty
Dim pLuogoIstituto As String = String.Empty
Dim pCap As String = String.Empty
Dim pProv As String = String.Empty
If Not String.IsNullOrEmpty(columns(0)) Then
pAbi = columns(0)
End If
If Not String.IsNullOrEmpty(columns(1)) Then
pIstitutoCredito = columns(1)
End If
If Not String.IsNullOrEmpty(columns(2)) Then
pCab = columns(2)
End If
If Not String.IsNullOrEmpty(columns(3)) Then
pAgenzia = columns(3)
End If
If Not String.IsNullOrEmpty(columns(4)) Then
pIndirizzoIstituto = columns(4)
End If
If Not String.IsNullOrEmpty(columns(5)) Then
pLuogoIstituto = columns(5)
End If
If Not String.IsNullOrEmpty(columns(6)) Then
pCap = columns(6)
End If
If Not String.IsNullOrEmpty(columns(7)) Then
pProv = columns(7)
End If
' assegno i valori ai campi (qui è gestito il valore NULL)
objRow.IDBanca = columns(0)
objRow.Abi = pAbi
objRow.IstitutoCredito = pIstitutoCredito
objRow.Cab = pCab
objRow.Agenzia = pAgenzia
objRow.IndirizzoIstituto = pIndirizzoIstituto
objRow.LuogoIstituto = pLuogoIstituto
objRow.Cap = pCap
objRow.Prov = pProv
Return objRow
End Function
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ProgressBar1.Value = 100 Then
ProgressBar1.Value = 0
End If
ProgressBar1.Value = ProgressBar1.Value + 1
End Sub
End Class
Mau67
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
mar 28 ott 2008 - 16:55
Devi impostare la proprietà interval del timer.
Es. Interval=1000
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mar 28 ott 2008 - 17:22
Ciao Mau67
Non vorrei farti perdere tempo ma proverei un'altro "accroccrio".
ProgressBar1.Maximum = 70000
ProgressBar1.Minimum = 0
ProgressBar1.Value = 0
Poi qui
nuova istanza della riga dell "tabella"
Dim objRow As New MyRow
Dim pAbi As String = String.Empty
Dim pIstitutoCredito As String = String.Empty
Dim pCab As String = String.Empty
sotto
Dim objRow As New MyRow
che se ho interpretato bene aggiunge una riga metterei
ProgressBar1.Value += 1
eventualmente seguito da un
Application.DoEvents()
Senza l'uso del Timer
Ciao
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mar 28 ott 2008 - 18:28
Grazie alex è perfetto ciao
Mau67
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mar 28 ott 2008 - 18:32
CIao
Prego
tra l'altro se è lo stesso file che ho io dovrebbe bastare ProgressBar1.Maximum = 62500
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !