Newsgroup: it.comp.appl.access
Titolo: Creare Barra di Progressione

Devo creare una barra di progressione da legare ad una funzione che popola 
con un codice casuale il campo ID della tabella tblConcorrente e lavora su 
circa 10.000 record.
A seconda delle situaizoni impiega tra i 5 e i 7 minuti, questo perchè 
ricerca codici duplicati e li rigenera per mantenere l'univocità all'interno 
del campo.
Vorrei creare\adattare una Barra di Progressione ma ... non ne ho mai fatta 
una ... questo è il primo caso in cui ne ho l'esigenza e anche se ho dato 
una veloce controllata agli esempi del SC non so bene da dove cominciare.
Potete darmi una mano per cortesia?
Grazie.
-- 
**********
EmMeCi
********** 


Usa la barra di stato
Dim art As DAO.Recordset
Dim imax As Long
Dim ret As Variant
Dim i As Long
Dim OraInizio As String
OraInizio = Format(Now, "hh:nn")
Set art = CurrentDb.OpenRecordset("Select * from articoli order by codice")
With art
    .MoveLast
    .MoveFirst
    imax = .RecordCount
    i = 1
Qui fai quello che vuoi...
 ret = SysCmd(acSysCmdInitMeter, "numero Articoli " & i & " di " & imax & "
Codice " & art!codice & "  Inizio: " & OraInizio, imax)
 ret = SysCmd(acSysCmdUpdateMeter, i)
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 una ... questo č il primo caso in cui ne ho l'esigenza e anche se ho dato


 wrote in message
news:07Kcf.22$
rQ4...@news.it.colt.net

A me pare che 5 minuti per popolare 10000 records siano troppi.
Se il campi ID è chiave primaria no serve controllare nulla
basta gestire l'errore nel caso usi DAO oppure nulla del tutto
in caso di SQL(query INSERT).
Per la barra di progressione direi che nel SC trovi miriadi
di demo sulla barra...!!!
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao Alex, purtroppo ID non è chiave primaria perchè di default lo trovo 
valorizzato a 0 (è comunque un campo di tipo testo).
Non posso nemmeno metterlo in chiave primaria.
Questo è il codice con cui popolo tale campo:
Private Sub CambiaPSW_Click()
On Error GoTo Err_Sostituire
Dim MiaTabella As Recordset
Dim VCode As String
Dim Psword As String
Dim K As Integer
    MessaggioOK = "ATTENZIONE SI STA PER ATTRIBUIRE UN CODICE VIRTUALE " & _
                  "A TUTTI I PARTECIPANTI, VUOI PROCEDERE ????? !!!!!"
    VCode = Me.VCode_Tipo.Value
    Call ProgressBar
   Set MioDB = CurrentDb()
   Set MiaTabella = MioDB.OpenRecordset("tblConcorrente", dbOpenDynaset)
   Do Until MiaTabella.EOF()
      MiaTabella.Edit
RiCalcola:
      Psword = MkPwd(5, VCode)
      If DCount("[ID]", "tblConcorrente", "[ID] = '" & Psword & "'") = 0 
Then
      MiaTabella!ID = Psword
      Else
      GoTo RiCalcola
      End If
      MiaTabella.Update
    MiaTabella.MoveNext
   Loop
    MiaTabella.Close
    Set MiaTabella = Nothing
    MioDB.Close
MsgBox "TERMINATO!"
Exit_Sostituire:
    Exit Sub
Err_Sostituire:
        MsgBox Err.Description
    Resume Exit_Sostituire
End Sub
e facendo un estratto di tale codice credo che il rallentamento derivi da 
questa porzione dati:
RiCalcola:
      Psword = MkPwd(5, VCode)
      If DCount("[ID]", "tblConcorrente", "[ID] = '" & Psword & "'") = 0 
Then
      MiaTabella!ID = Psword
      Else
      GoTo RiCalcola
      End If
... tu come mi consiglieresti di procedere invece per ottimizzare i tempi?
Ciao e grazie
-- 
**********
EmMeCi
********** 

[cut]
ho provato cosě ma non funziona ... dove ho sbagliato?
Private Sub CambiaPSW_Click()
On Error GoTo Err_Sostituire
Dim MiaTabella As Recordset
Dim VCode As String
Dim Psword As String
Dim iMax As Integer, ret As Variant, i As Integer
    VCode = Me.VCode_Tipo.Value
    iMax = DCount("[codConcorrente]", "tblConcorrente")
    ret = SysCmd(acSysCmdInitMeter, "Creazione Virtual Code Partecipanti in 
corso:", iMax)
    i = 1
   Set MioDB = CurrentDb()
   Set MiaTabella = MioDB.OpenRecordset("tblConcorrente", dbOpenDynaset)
   Do Until MiaTabella.EOF()
      MiaTabella.Edit
RiCalcola:
      Psword = MkPwd(5, VCode)
      If DCount("[ID]", "tblConcorrente", "[ID] = '" & Psword & "'") = 0 
Then
      MiaTabella!ID = Psword
      Else
      GoTo RiCalcola
      End If
      MiaTabella.Update
      ret = SysCmd(acSysCmdUpdateMeter, i)
      i = i + 1
    MiaTabella.MoveNext
   Loop
    MiaTabella.Close
    Set MiaTabella = Nothing
    MioDB.Close
    ret = SysCmd(acSysCmdClearStatus)
MsgBox "TERMINATO!"
Exit_Sostituire:
    Exit Sub
Err_Sostituire:
        MsgBox Err.Description
    Resume Exit_Sostituire
End Sub
grazie!
-- 
**********
EmMeCi
********** 

 = 0 Then
Togli il dcount, apri un rst e valuti se è pieno o no

-- 


[cut]
grazie MA, volevo comunque, prima di tentare il recordset (ottimo consiglio) 
risolvere il problema che ho esposto subito dopo in risposta sempre ad 
Alessandro Baraldi ... dove nel vba ho aggiunto i parametri per gestire una 
Progress Bar...che ovviamente parte ... mi mostra le prime due tacchette e 
poi ... il nulla fino al termine dell aprocedura quando questa scompare 
vergognosamente senza essersi popolata (riempita) ... o come meglio lo si 
puň definire!!!
Grazie!
-- 
**********
EmMeCi
********** 

     i = 1
ret = SysCmd(acSysCmdInitMeter, "Creazione Virtual Code Partecipanti in
corso:" & i, iMax)
e cmq lo devi mettere all'interno del ciclo do Loop altriemnti non ci passi
mai
Mnaca

-- 



ancora una volta ti dico che tu la chiami fuori dal ciclo quindi non puň
incrementarsi
Non č che funziona con tu la chiami da qualche parte e lei č in "ascolto".
La devi incrementare tu nel ciclo


[cut]
grazie, ho fatto come dicevi tu e ora funziona molto bene!
Buona giornata!
-- 
**********
EmMeCi
********** 

Riporto un estratto di codice
 ret = SysCmd(acSysCmdInitMeter, "Creazione Virtual Code Partecipanti in 
corso:" & " " & i & " " & "di" & " " & iMax, iMax)
      '***
      ret = SysCmd(acSysCmdUpdateMeter, i)
      i = i + 1
con il codice sopra riportato oltre alla progress bar vedo l'incremento 
numerico dei miei dati.
Ora vorrei inserire anche una percentuale progressiva, forse superfluo, ma 
più indicatori mostro e meglio è.
Cosa devo aggiungere al codice per poter creare anche questo incremento 
percentuale nella progress bar?
Grazie
-- 
**********
EmMeCi
********** 


i/imax & "%"



i = 1
iMax = 9822
Non ottengo 100% al termine della procedura ma 1 ... inoltre ho molti 
decimali ...
... scusami se ti stņ esaurendo, ma credimi, mi stai insegnando molto con i 
tuoi aiuti e ti ringrazio (seppur magra consolazione credo sia meglio di 
niente no?!!)
Ciao.
-- 
**********
EmMeCi
********** 

Risolto
100*(i/iMax)
ciao!
-- 
**********
EmMeCi
********** 

 Ciao.



nooooooooooooo non riferito ai tuoi insegnamenti, la magra consolazione č il 
mio ringraziarti!!!
;o)
ciao e ... gia che ci sei ... stň facendo impazzie Karl pochi post piů in 
alto ... tu cosa pensi debba fare per ... farla finita con il mio 
problema?!!!
-- 
**********
EmMeCi
**********