Link to home
Start Free TrialLog in
Avatar of romerica
romerica

asked on

Create & Call upon activex progress bar Access 2007

I created a database, so far with one simple query which executes when i click on a button on a form.

I added an ActiveX Progress bar that i saw inside Access "Add-ins" and added it to the form but do not know how to bring it up, access it, or make it run.

Please help and provide step by step - Im new at this.Thanks!
Avatar of peter57r
peter57r
Flag of United Kingdom of Great Britain and Northern Ireland image

You can only modify the setting of the progress bar when you have control of the process.
If you start a long query running then you don't get control again until it has finished.



^
Yes, you have to update the progressbar after each operation (10% done, 20% done, 30%done, ...ect)

Since you only have one operation (one query), this is meaningless.

BTW, trying to do this on a timer (The query takes about 10 seconds to run), is notoriously unrelaible, so don't even consider it.

;-)

JeffCoachman
Avatar of romerica
romerica

ASKER

Right now, its only one query.. this is just the beginning.
Just for giggles, how would i call upon to open and update this activex progress bar control?
ASKER CERTIFIED SOLUTION
Avatar of Jeffrey Coachman
Jeffrey Coachman
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I agree with Jeff that ActiveXes in Access are a potential trouble spot.

But here is an example anyway.
The code is in the form timer event.
db21.mdb
I still cant figure anything out. I added the coding per the KB article with no luck, and i dont know how to integrate the code from peter57r.

I want it to initiate once one of the buttons is clicked. ie. 1) User chooses a date 2) User clicks a button 4) Progressbar appears 5) Query appears.

Right now only the first button 401K works and is tied to a Macro which executes a query when clicking that button.

I am currently in the process of adding a query that goes through several table and have been sitting here 8min now waiting for it to finish.
romerica,

Nobody can know what you mean by: "no luck", unless you tell us.

Can you :
1. Explain or post the cdode you used
2. State what happened
3. State what did not happen

Or simply post a sample of your database.

JeffCoachman
Remember to *first* test the sample as it is presented in the link, this works fine for me.
sorry, i think i just dont know where to put the code.. here is what i have (see code below) I will post 2 seperate codes

Im trying to attach it to "Private Sub BTN_401k_GotFocus()" b/c i want it to execute when i click the button to run the query as part of the macro.
So I copied and pasted MS artice stated above there but am not too sure if i have to change any names...

Does that make sence?

Whenever i did that, it came back with an error with a portion highlighted


I also dont know what the article is referring to as "module".
formview.JPG
errorbox.JPG
codebuilder.JPG
ReportChooser Form Code:
Option Compare Database
 
Private Sub Text8_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ocxCalendar.Visible = True
ocxCalendar.SetFocus
If Not IsNull(txtDateChooser) Then
   ocxCalendar.Value = txtDateChooser.Value
Else
   ocxCalendar.Value = Date
End If
End Sub
 
Private Sub ocxCalendar_Updated(Code As Integer)
 
End Sub
 
 
 
Private Sub BTN_401k_GotFocus()
Option Explicit
Function Meter()
   Dim MyDB As DAO.Database, MyTable As DAO.Recordset
   Dim Count As Long
   Dim Progress_Amount As Integer, RetVal As Variant
   
   Set MyDB = CurrentDb()
   Set MyTable = MyDB.OpenRecordset("Customers")
 
   ' Move to last record of the table to get the total number of records.
   MyTable.MoveLast
   Count = MyTable.RecordCount
 
   ' Move back to first record.
   MyTable.MoveFirst
 
   ' Initialize the progress meter.
   RetVal = SysCmd(acSysCmdInitMeter, "Reading Data...", Count)
 
   ' Enumerate through all the records.
   For Progress_Amount = 1 To Count
     ' Update the progress meter.
      RetVal = SysCmd(acSysCmdUpdateMeter, Progress_Amount)
      
     'Print the contact name and number of orders in the Immediate window
      Debug.Print MyTable![ContactName]; _
                  DCount("[OrderID]", "Orders", "[CustomerID]='" & MyTable![CustomerID] & "'")
 
     ' Goto the next record.
      MyTable.MoveNext
   Next Progress_Amount
 
   ' Remove the progress meter.
   RetVal = SysCmd(acSysCmdRemoveMeter)
        
End Function
 
End Function
 
Private Sub ProgressBar_GotFocus()
 
 
End Function

Open in new window

ProgressBar Form Code:
Option Compare Database
 
Private Sub Detail_Click()
Private Sub Form_Open(Cancel As Integer)
 
    Meter
 
End Sub
 
End Sub

Open in new window

romerica,

The code you posted is all over the place.

First, realize that what you have asked for here *requires* you to be familiar with VBA and coding.

So in this code:

Option Compare Database
 
Private Sub Detail_Click()
Private Sub Form_Open(Cancel As Integer)
 
    Meter
 
End Sub
 
End Sub

...You have wrapped a sub in a sub
Do you want the code to run on the click event of a button or on the Open event of the form?

It should look like this:
 
Private Sub Detail_Click()
     Meter
end Sub

Or this:

Private Sub Form_Open(Cancel As Integer)
    Meter
End Sub
 

The words:
Option Explicit
Option Compare Database

...will only appear once, ...at the top of all the code.

Perhaps another Expert can get you sorted out.
I would have to see a sample of this database

JeffCoachman