Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Teddy
    Registrato dal
    Dec 2001
    Messaggi
    178

    [vb] Problema con Progress Bar

    Scusate ma è la prima volata che uso una progress bar.
    Ho creato una routine che carica una tabella da access su una combobox. Vorrei che la progress visualizzasse lo stato di caricamento.Ma non funziona ... cosa non va?

    codice:
     
    Private Sub loadcombo()
        
        prgLoadData.Visible = True
        prgLoadData.Min = datComuni.Recordset.BOF
        prgLoadData.Max = datComuni.Recordset.RecordCount
        
        Do While Not (datComuni.Recordset.EOF)
            CmbCitta.AddItem (datComuni.Recordset!comune)
            prgLoadData.Value = datComuni.Recordset.AbsolutePosition
            datComuni.Recordset.MoveNext
        Loop
        
    End Sub
    Grazie e ciao a tutti

  2. #2
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Private Sub loadcombo()

    prgLoadData.Visible = True
    prgLoadData.Min = 0
    prgLoadData.Max = IlNumeroDeiRecordTotali
    Numero=0
    Do While Not (datComuni.Recordset.EOF)
    Numero=Numero+1
    CmbCitta.AddItem (datComuni.Recordset!comune)
    prgLoadData.Value = Numero
    datComuni.Recordset.MoveNext
    Loop

    End Sub


    Aggiustatelo

    link
    homepage http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
    forum http://%77%77%77%2e%74%77%6f%72%6b%2...um/default.asp

  3. #3
    Utente di HTML.it L'avatar di sebamix
    Registrato dal
    Aug 2000
    Messaggi
    1,028
    Oppure
    codice:
    if prgLoadData.Value<prgLoadData.Max then 
    prgLoadData.Value=prgLoadData.Value+1
    doevents
    end if
    Così togli la variabile "Numero"
    Ricorda che la progressbar va in errore se value erroneamente va più sopra di max.

  4. #4

    Ci sono un paio di errori...

    Ci sono degli errori nel tuo listato, ho inserito le correzioni in grassetto:
    1) il valore minimo è 0, non puoi assegnargli il valore della proprietà BOF per 2 motivi: è di tipo booleano e indica semplicemente se ti trovi all'inizio del recordset.
    2) Inizializzi il valore della ProgressBar a 0
    3) per ogni record che leggi incrementi di uno il valore della ProgressBar


    codice:
    Private Sub loadcombo()
        
        prgLoadData.Visible = True
        prgLoadData.Min = 0
        prgLoadData.Max = datComuni.Recordset.RecordCount
        prgLoadData.Value = 0
        Do While Not (datComuni.Recordset.EOF)
            CmbCitta.AddItem (datComuni.Recordset!comune)
            prgLoadData.Value = prgLoadData.value + 1        
            datComuni.Recordset.MoveNext
        Loop
        
    End Sub

    Spero sia abbastanza chiaro, fammi sapere...
    Ciao!!
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    leggi quanto detto da boldan + ....

    e il valore max della progress bar deve essere uguale al numero di record che ottieni (RecordCount)


  6. #6
    Utente di HTML.it L'avatar di Teddy
    Registrato dal
    Dec 2001
    Messaggi
    178

    Re: Ci sono un paio di errori...

    Grazie Boldan! non avevo capito bene come impostare i valori della proprietà min e value.
    UNa cosa però ...
    Ciò che mi da errore è questo:

    codice:
        prgLoadData.Max = datComuni.Recordset.RecordCount
    Se faccio il debug mi segna come valore 1 e poi 501, ma i recordi sono 14654.

    Io penso che quando inizio il ciclo, ancora l'oggetto data non sia stato completamente caricato.
    Eppure il ciclo parte con la pressione di un tasto.
    Nel form load devo mettere qualche istruzione particolare per far caricare l'oggetto data?
    Questa è una mia opinione!
    Oppure sto andando fuori pista ...?
    Grazie!
    Grazie e ciao a tutti

  7. #7
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Non l'hai provato?

    Private Sub loadcombo()

    prgLoadData.Visible = True
    prgLoadData.Min = 0
    'al posto di IlNumeroDeiRecordTotali scrivi 14654
    prgLoadData.Max = IlNumeroDeiRecordTotali
    Numero=0
    Do While Not (datComuni.Recordset.EOF)
    Numero=Numero+1
    CmbCitta.AddItem (datComuni.Recordset!comune)
    prgLoadData.Value = Numero
    datComuni.Recordset.MoveNext
    Loop

    End Sub

    se funziona allora fai così:
    ricavi prima il numero di record e poi utilizzi la progressbar

    okay te l'ho aggiusto:

    Private Sub loadcombo()

    prgLoadData.Visible = True
    prgLoadData.Min = 0
    Numero=0
    Do While Not (datComuni.Recordset.EOF)
    Numero=Numero+1
    Loop
    num=0
    prgLoadData.Max = Numero
    Do While Not (datComuni.Recordset.EOF)
    num=num + 1
    CmbCitta.AddItem (datComuni.Recordset!comune)
    prgLoadData.Value = num
    datComuni.Recordset.MoveNext
    Loop

    End Sub






    link
    homepage http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
    forum http://%77%77%77%2e%74%77%6f%72%6b%...rum/default.asp

  8. #8
    Utente di HTML.it L'avatar di Teddy
    Registrato dal
    Dec 2001
    Messaggi
    178
    codice:
    'al posto di IlNumeroDeiRecordTotali scrivi 14654 
    prgLoadData.Max = IlNumeroDeiRecordTotali
    Mi sembra un po rozzo scrivere il numero dei record del listato.
    C'è una funzione o metodo che conta i record totali di una tabella?
    Grazie e ciao a tutti

  9. #9
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    questo l'hai provato?

    Private Sub loadcombo()

    prgLoadData.Visible = True
    prgLoadData.Min = 0
    Numero=0
    Do While Not (datComuni.Recordset.EOF)
    Numero=Numero+1
    Loop
    num=0
    prgLoadData.Max = Numero
    Do While Not (datComuni.Recordset.EOF)
    num=num + 1
    CmbCitta.AddItem (datComuni.Recordset!comune)
    prgLoadData.Value = num
    datComuni.Recordset.MoveNext
    Loop

    End Sub
    --------------------

    comunque nel db potresti mettere un campo id dove contiene il numero dei record totali, lo leggi e lo assegni a progressbar1.max

    l'esempio sopra ti conta tutti i record e poi assegna Numero a progressbar1.max

  10. #10
    Utente di HTML.it L'avatar di Teddy
    Registrato dal
    Dec 2001
    Messaggi
    178
    Caro steno,
    ho provato il tuo esempio, Grazie! ma la cosa non è fattibile ... non ti dico il tempo che ci vuole per contare tutti i record (visto che sono quasi 15.000)
    Dovrò optare per inserire il campo ID nel database ...
    Thanks!
    Grazie e ciao a tutti

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 © 2024 vBulletin Solutions, Inc. All rights reserved.