[AccessD] storing last item on the page

Susan Harkins ssharkins at gmail.com
Fri Nov 9 07:55:52 CST 2007


Thanks -- I'll see if anything here resolves this.

I'm interested in a collection because I think, it is an easier solution for 
the average user. Arrays can be difficult for the average user to apply to 
their own work. A collection, used in this manner, won't require any special 
attention from the user.

Of course, if I can't get it to work, how much easier can it be????????? ;)

Susan H.



>    You have not given any reason as to why you wish to avoid array based 
> solution. Apparently, you are keen to implement collection based solution 
> as an alternative.
>
>    In your second post, describing the unsuccessful attempt to work out 
> collection based solution, you stated  "I'm clueless -- I have no idea 
> what's happening here." It is observed that the following factors are 
> contributing to the problem:
>
>    1 - You have landed into an interesting pitfall typical of collections. 
> Whenever a collection's Add method is used, you have to be careful as to 
> what exactly is being added. If you use the syntax  col.Add Me.MyControl, 
> it becomes a collection of control objects. For making it a collection of 
> control contents, you have to use Value property of the control.
>
>    2 - Page Footer is the appropriate place to grab a value from last 
> record of detail section and add it to the collection. You are wrongly 
> using Page Header for this purpose.
>
>    3 - You are using Page Footer to assign a value (from collection) to 
> txtHeaderLast. In view of the nature of forward time flow during report 
> execution, the effect of such assignment materializes only on the next 
> page. This defeats the very purpose of building a collection of last 
> values in forced first pass of formatting. The proper place for making 
> such an assignment is Page Header (preferably its print event, as by then, 
> building up of collection during prior formatting pass, is complete).
>
>    Sample code in report's module, as given below, demonstrates collection 
> based solution. All the four controls (TxtHeaderFirst, TxtHeaderLast, 
> TxtFooterFirst, TxtFooterLast) are unbound. In the sample code, "Title" is 
> the name of control in detail section whose first and last values are 
> required to be displayed in page header as well as footer. You can 
> substitute the name of actual control in your report, suitably.
>
> A.D.Tejpal
> ------------
>
> Code in report's module
> '==================================
> ' Declarations section
> Private col As New Collection
> '---------------------------------------------------
>
> Private Sub PageFooterSection_Format(Cancel _
>                    As Integer, FormatCount As Integer)
>
>    Me.TxtFooterLast = Me.Title
>
>    If Me.Pages = 0 Then
>        col.Add Me.Title.Value, CStr(Me.Page)   ' (A)
>    End If
>
>    ' Caution - There is a potential pitfall here.
>    '                In statement (A), while adding items to
>    '                collection, Value property of the control
>    '                in question MUST be used. Otherwise,
>    '                it will become a collection of control
>    '                objects (not the contents as intended),
>    '                leading to weird results.
> End Sub
> '---------------------------------------------------
>
> Private Sub PageHeaderSection_Format(Cancel _
>                    As Integer, FormatCount As Integer)
>    Me.TxtHeaderFirst = Me.Title
>    Me.TxtFooterFirst = Me.Title
> End Sub
> '---------------------------------------------------
>
> Private Sub PageHeaderSection_Print(Cancel _
>                        As Integer, PrintCount As Integer)
>    Me.TxtHeaderLast = col(CStr(Me.Page))
> End Sub
> '---------------------------------------------------
>
> Private Sub Report_Close()
>    Set col = Nothing
> End Sub
> '==================================
>
>  ----- Original Message ----- 
>  From: Susan Harkins
>  To: Access Developers discussion and problem solving
>  Sent: Wednesday, November 07, 2007 18:11
>  Subject: Re: [AccessD] storing last item on the page
>
>
>  I'm not convinced an array is necessary -- I've seen that solution. Have 
> you
>  seen the collection solution I tried and posted late last night?
>
>  Susan H.
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com 




More information about the AccessD mailing list