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
Utilizzare ProgressBar durante la connessione ad un database SQLServer...
venerdì 18 luglio 2008 - 13.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
ven 18 lug 2008 - 13:57
Salve, vorrei un aiuto per poter migliorare l'aspetto grafico del mio programmino vb 2008 express.
Ho creato la maschera principale del programma con un form che ha un bottone, questo se premuto connette l'applicazione ad un'istanza del database SQLServer 2005 Express Edition.
Il risultato della avvenuta connessione lo faccio stampare sulla status bar del form.
Ma come faccio se volessi impostare una progress bar in modo tale che questa avanzi mente l'applicazione si sta connettendo e scompaia nel momento in cui il programma si connette all'istanza sql?
Aiutamtemi vi prego, magari postando il codice da attuare.
Grazie mille.
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
ven 18 lug 2008 - 14:38
sullo status bar puoi inserire il progress bar!
«Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.» A.E.
Michele Crimi - Programmatore .Net
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
ven 18 lug 2008 - 16:31
>sullo status bar puoi inserire il progress bar!
>
Ciao, grazie per la risposta... ma... che risposta è :D?
Io volevo sapere come programmare la staus bar affinchè potesse avanzare durabte il tentativo di connessione al database.
Spero seia stato chiaro adesso ;) e spero potrai aiutarmi... grazie cmq!
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
ven 18 lug 2008 - 17:17
Ciao Marco,
Questa soluzione è solo pensata e stasera la testo:
Io metterei un Timer di 30 sec (tempo standard limite per le connessioni)
Apro la mia connessione
Ogni 2 o 5 secondi lancio un controllo sullo Stato della connessione
Intanto la Progress avanza con i valori del Timer
Una volta che ho una risposta True sulla connessione porto la Progress al valore massimo ed arresto il Timer.
Non ho idea se si possa "interagire" con la connessione ma io ho notato che a volte ci vuole più tempo altre meno.
Dimmi cosa ne pensi
Ciao
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
ven 18 lug 2008 - 17:28
L'idea non è male...Magari invece del timer...si potrebbe usare un thread diverso! o no? oppure un backgroundWorker!
che ne dici?
cmq l'idea del timer non è male!
«Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.» A.E.
Michele Crimi - Programmatore .Net
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
ven 18 lug 2008 - 17:36
Ciao,
Alex la tua soluzione mi sembra molto ovvia e credo sarà quella che effettuerò anche se la soluzione di Miky mi sarebbe piaciuta anche, solo che non so come usare il WorkProgress... :D
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
ven 18 lug 2008 - 17:50
Anche se la mia idea è quella piu pulita.Il timer diciamo che funziona ma è un po sporca.Programmativamente parlando!
«Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.» A.E.
Michele Crimi - Programmatore .Net
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
ven 18 lug 2008 - 18:51
>Ciao Marco,
>Questa soluzione è solo pensata e stasera la testo:
>
>Io metterei un Timer di 30 sec (tempo standard limite per le
>connessioni)
>Apro la mia connessione
>Ogni 2 o 5 secondi lancio un controllo sullo Stato della connessione
>Intanto la Progress avanza con i valori del Timer
>Una volta che ho una risposta True sulla connessione porto la
>Progress al valore massimo ed arresto il Timer.
>
>Non ho idea se si possa "interagire" con la connessione ma io
>ho notato che a volte ci vuole più tempo altre meno.
>
>Dimmi cosa ne pensi
>
>Ciao
Ehi alex questo è il codice che uso per la connessione al database... mi sapresti dire in che modo costruire il codice con il timer che mi faccia quello che dici tu m gari postandomil il giusto codice?
Grazie mille.
P.S. questo è il semplice codice che uso io:
Dim con As SqlClient.SqlConnection
Dim strconn As String
strconn = "Data Source=Marco_XP\SQLEXPRESS;Integrated Security=True;Connect Timeout=10;Initial Catalog=Prova;"
con = New SqlClient.SqlConnection(strconn)
con.Open()
ToolStripStatusLabel1.Text = "Connesso al database aziendale " & con.Database & ".mdf"
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 19 lug 2008 - 10:22
Mi viene da dire questo: se hai bisogno di una progressbar per la connessione al database vuol dire che hai una connessione molto lenta, il timeout è di solito fissato a 30 secondi, dopo la quale ottieni un bel messaggio di errore.
In genere la connessione "vera" ha bisogno di pochi secondi, vale la pena mettere un progressbar? io non lo metterei, al suo posto curerei di più l'efficienza della mia connessione :D
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
sab 19 lug 2008 - 11:20
wow bella risposta! eh eh hai perfettamente ragione!
Complimenti! :D
«Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.» A.E.
Michele Crimi - Programmatore .Net
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
dom 20 lug 2008 - 14:09
Ciao a tutti
Scusate, non sò voi ma io sia da casa che dall'ufficio ho grosse difficolta a connettermi via internet con qls sito Microsoft, ed anche la guida in linea di Visual Basic mi ha dato problemi.
Detto questo volevo fare 2 considerazioni con Cteniza.
L'utilizzo di alcuni controlli e/o "trucchetti" hanno lo scopo di migliorare l'aspetto grafico delle applicazioni (non si spiegherebbe altrimenti ad esempio l'utilizzo delle icone).
Naturalmente il tutto non deve andare a rallentare la nostra applicazione, dopodichè ognuno può personalizzare come meglio crede.
Considerando che anche la ProgressBar di Internet Explorer è un posticcio (vi passo il link appena lo ritrovo) ecco il codice che ho partorito
Dim counter As Integer
Dim con As SqlClient.SqlConnection
Dim strconn As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=myDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
con = New SqlClient.SqlConnection(strconn)
Me.ToolStripProgressBar1.Value = 5
Try
con.Open()
counter = 5
Timer1.Interval = 10
Timer1.Enabled = True
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If counter >= 50 Then
Timer1.Enabled = False
counter = 0
Else
counter = counter + 1
Me.ToolStripProgressBar1.Value = counter
End If
End Sub
Impostare la ToolStripProgressBar1.Maximum = 50
L'idea è quella di far partire la progressBar , avviare il test sulla connessione, e se non avvengono errori la progressbar termina il suo ciclo
In caso di errori sulla connessione il viene visualizzato il msg di errore e la PB non termina il suo ciclo.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
dom 20 lug 2008 - 14:16
Battute a parte, anzi no ne faccio un'altra in forma di domanda:
Visto che una progressbar ha bisogno del valore "max" per arrivare a fine corsa cosa fai, ti connetti, misuri il tempo e poi ti disconnetti, imposti max e ti connetti di nuovo ? (comunque non funzionerà) :D :D
Il problema del timeout è che il tuo programma che si connette "sa già" dopo pochi secondi che la connessione non andrà a buon fine, aspetti il timeout solo per avere la conferma ufficiale.
Quindi .. se hai bisogno di indicare che il tuo programma è in attesa della connessione meglio cambiare opportunamente il cursore (waitcursor).
Poi ovviamente è una questione di scelte, personalmente non metterei mai una progressbar dove non sono in grado di conoscere il valore massimo.
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
dom 20 lug 2008 - 14:57
Ciao Cteniza,
ho cercato in questi giorni e in tempi addietro se c'era un sistema per monitorare la connessione (i tempi) ma non ho trovato nulla.
Tu adesso mi confermi che è così.
Come dici tu basterebbe impostare la proprietà Cursor su WaitCursor, ma è anche vero che l'aspetto grafico è una scelta del programmatore.
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 !