Microsoft Knowledge Base Email Alertz

This article shows you how to create a sample Visual Basic for Applications function that populates (or fills) controls on a report that is based on a table or a query when you preview or print the report. The sample function fills a newly created

Search KbAlertz

Advanced Search

Receive Microsoft Knowledge Base articles by E-Mail?

Every night we scan the Microsoft Knowledge Base. If technologies you're interested in are updated, we'll send you an e-mail. You only get one e-mail a day, and only when new articles are added.

Click here to create a
FREE account
Already have an account?
[Click here to Login]











Microsoft Knowledge Base Article

This article contents is Microsoft Copyrighted material.
©2005-©2007 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks

Article ID: 291533 - Last Review: January 31, 2007 - Revision: 6.4

How to use Visual Basic to fill text boxes on a report in Microsoft Access

This article was previously published under Q291533
This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).

Moderate: Requires basic macro, coding, and interoperability skills.

For a Microsoft Access 2000 version of this article, see 210136  (http://kbalertz.com/Feedback.aspx?kbNumber=210136/EN-US/ ) .
For a Microsoft Access 97 version of this article, see 143280  (http://kbalertz.com/Feedback.aspx?kbNumber=143280/ ) .

SUMMARY

This article shows you how to create a sample Visual Basic for Applications function that populates (or fills) controls on a report that is based on a table or a query when you preview or print the report. The sample function fills a newly created text box on a report with a value from the QuantityPerUnit field in the Products table of the sample database Northwind.mdb. The report is based on the Current Product List query of the Northwind database.

NOTE: This article explains a technique demonstrated in the sample file, RptSmp00.mdb. For additional information about how to obtain this sample file, click the following article number to view the article in the Microsoft Knowledge Base:
231851  (http://kbalertz.com/Feedback.aspx?kbNumber=231851/ ) ACC2000: Microsoft Access 2000 sample reports available in Download Center

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. The following example calls a Visual Basic for Applications function in the OnFormat property of a report to fill an unbound control on the report. As an alternative, you can call the function from the ControlSource property of the unbound control. To create the example, follow these steps.

CAUTION: If you follow the steps in this example, you modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file and follow these steps on a copy of the database.

  1. Open the sample database Northwind.mdb.
  2. Use the Report Wizard to create a new report that is based on the Current Product List query with the following options:
    • Include both fields.
    • Add no grouping levels.
    • Sort by ProductName.
    • Use the default Layout setting.
    • Select Corporate style.
    • Name the report Fill Report.

  3. Open the Fill Report report in Design view.
  4. Add the following text box to the detail section of the Fill Report report:
       Text box
       ----------------------------
       Name: Quantity
       ControlSource: <leave empty>
    					
  5. Type the following sample code in a new or existing module.NOTE: The sample code in this article uses Microsoft Data Access Objects. For this code to run properly, you must reference the Microsoft DAO 3.6 Object Library. To do so, click References on the Tools menu in the Visual Basic Editor, and make sure that the Microsoft DAO 3.6 Object Library check box is selected.

    Function FillRep()
    Dim rs As DAO.Recordset
    Dim db As DAO.DATABASE
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("Products", dbOpenDynaset)
    
    rs.MoveFirst
    rs.FindFirst "[ProductID]=" & Reports![Fill Report]![ProductID]
    
    ' Use this line if the function is called from report
    ' detail section's OnFormat property event procedure.
    Reports![Fill Report]![Quantity] = rs![QuantityPerUnit]
    
    ' -or- use this line if the function is called from the
    ' ControlSource property of the unbound control.
    FillRep = rs![QuantityPerUnit]
    End Function
    
    					
  6. Set the OnFormat property of the detail section of the report as follows:
    =FillRep()
    NOTE: You can also call the FillRep() function from the ControlSource property of the unbound Quantity text box as follows:
       Name: Quantity
       ControlSource: =FillRep()
    						
    If you use this method, add a comment (') in front of this line of code in step 5:
    Reports![Fill Report]![Quantity] = rs![QuantityPerUnit]
    
    					
  7. Preview the report. Note that the Quantity text box on the report is filled by the Visual Basic for Applications function.

APPLIES TO
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Keywords: 
kbreport kbprogramming kbhowto KB291533
       

Community Feedback System

Very often, it takes hours to solve a problem. Very often, you've looked high and low, and have tried a lot of solutions. When you finally found it, chances are, it was because someone else helped you. Here's your chance to give back. Use our community feedback tool to let others know what worked for you and what didn't.

Please also understand that the community feedback system is not warranted to be correct, it's simply a system that we've built to let people try and help each other. If something in a feedback response doesn't make sense to you, or you're not comfortable making changes that the feedback talks about (like registry edits), please consult a professional.

Thank you for using kbAlertz.com Feedback System.

-- Scott Cate