Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Progress Meter

Posted on 2004-04-27
12
Medium Priority
?
752 Views
Last Modified: 2008-03-10
Using MSAccess 2002

I want to be able to open a form "Customers", but as it is opening I want to display a progress meter (lots of data to load). The source code for the progress meter is below, however, I do not know how to modify the code so as to function properly. Need help...

Private Sub Read_Click()
    Me.Status.Caption = "Reading"
    Screen.MousePointer = 11
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim Counter As Long
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Customers", dbOpenSnapshot)
    rs.MoveFirst
    While Not rs.EOF
        CurrentRecordID = rs!CustomerID
        ProgressBarB.Width = (ProgressBarA.Width / rs.RecordCount) * rs.AbsolutePosition
        Me.Repaint
        rs.MoveNext
        For Counter = 1 To 750000: Next
    Wend
   
    If rs.EOF Then
        ProgressBarB.Width = rs.RecordCount
        Me.Repaint
        CurrentRecordID = ""
        Me.Status.Caption = "Done"
        ProgressBarB.Width = 0
        Me.Repaint
    End If
   
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Screen.MousePointer = 0
End Sub
0
Comment
Question by:CatDaddy2003
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
  • 2
  • +1
12 Comments
 
LVL 65

Expert Comment

by:rockiroads
ID: 10928955
I would say, you first need to set a min and max

min would be 1
max would be recordcount

when updating progressbar,you dont change the width but the value

e.g.
progressbar.min=1

rs.MoveLast
progressbar.max= rs.Recordcount
rs.MoveFirst


then in code do this

progressbar.value = ....
0
 
LVL 65

Expert Comment

by:rockiroads
ID: 10928968
I suppose you could add a counter in it as well

e.g.

dim lCounter as long


progressbar.min=1

rs.MoveLast
progressbar.max= rs.Recordcount
rs.MoveFirst
lCounter=1

    While Not rs.EOF
        CurrentRecordID = rs!CustomerID
        ProgressBarB.Value = lCounter
        Me.Repaint
        rs.MoveNext
        lCounter=lCounter+1
    Wend



I THINK THAT IS HOW IT SHOULD BE
0
 
LVL 54

Expert Comment

by:nico5038
ID: 10928980
Personally I use just two rectangles (one backgound and boxShow that's "moving") and this code:

    dblI = 0
    dblIs = Forms(strFormname).boxBack.Width / rsI.RecordCount
    rsI.MoveFirst
    While Not rsI.EOF
       dblI = dblI + 1
       Forms(strFormname).boxShow.Width = dblIs * dblI
       Forms(strFormname).Repaint
       DoEvents
       ....
      Wend

Clear ?

Nic;o)
0
What Is Blockchain Technology?

Blockchain is a technology that underpins the success of Bitcoin and other digital currencies, but it has uses far beyond finance. Learn how blockchain works and why it is proving disruptive to other areas of IT.

 
LVL 8

Expert Comment

by:dds110
ID: 10928982
So, what is the code doing?  Giving an error?  Hanging?  Nothing at all?

First thing that caught my eye was this line:

For Counter = 1 To 750000: Next

Why do you need a counter.  From what I can see this line doesn't do anything for you.  In addition, are you using the Progress Bar ocx control or some other control?
0
 
LVL 8

Expert Comment

by:dds110
ID: 10928996
Ah, disregard my comment.
0
 

Author Comment

by:CatDaddy2003
ID: 10929072
Let me start ALL OVER...

The code above works just fine. But, it is triggered from a command button "Read" on a form named "Progress Meter Form". What I need to be able to do is trigger the "Progress Meter Form" from the command button that is opening the form "Customers"...

Then display the form "Customers"...
0
 
LVL 65

Expert Comment

by:rockiroads
ID: 10929188
could you not put it in the Form_Load function of Customers?
0
 

Author Comment

by:CatDaddy2003
ID: 10929211
Let me do that, and I'll let you know what happens...
0
 

Author Comment

by:CatDaddy2003
ID: 10929265
What I did was Property: OnLoad: DoCmd.OpenForm "Progress Bar Form"

All that did was open both forms, "Progress Bar Form" and "Customers"
0
 
LVL 65

Expert Comment

by:rockiroads
ID: 10929716
ok, in the code for customers

first line in Form_Load

Minimise the window
I think its DoCmd.Minimize

then run your code

then when finished, restore window (DoCmd.Restore I think it is)

what you could do though perhaps, if above dont work, is use the timer of the customers form to display your progress bar instead of having a seperate form
0
 

Author Comment

by:CatDaddy2003
ID: 10933292
How do I use the "Timer to display the progress bar" instead of having a separate form?
0
 
LVL 65

Accepted Solution

by:
rockiroads earned 2000 total points
ID: 10933592
in the form_load you set the form's timerinterval

e.g.
Private Sub Form_Load()
     Me.TimerInterval = 3000  'every 3 secs
End Sub

then in the timer func, here I am displaying a msg
Private Sub Form_Timer()
    MsgBox "Hello"
End Sub


you can mod it so you can update progress bar
so when you reach end, terminate timer,progressbar and contine
0

Featured Post

Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
In earlier versions of Windows (XP and before), you could drag a database to the taskbar, where it would appear as a taskbar icon to open that database.  This article shows how to recreate this functionality in Windows 7 through 10.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

704 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question