Gustav Brock
gustav at cactus.dk
Sun Jun 22 02:12:18 CDT 2003
Hi Doug
> I have an Access 97 database and am having a problem with a
> form/subform. The main form holds data for the parent record and the
> subform shows data for the child records for the parent; a typical
> design. The subform is based on a semi complex query that has some
> calculations in it that sum some cost fields for each record. There are
> several hidden calculated text boxes on the subform that perform further
> data aggregations for several fields from each record. I refer to these
> fields in controls on the parent form to show their value. Hopefully
> this description isn't too confusing.
> The problem is that the forms work correctly when the main form is first
> opened in design view and then switched to form view. When the form is
> opened in this fashion and a record selected from a selector combo box
> all fields function and calculate correctly. If the main form is opened
> directly to form view and a record selected the calculated controls
> contain "error". If I then switch the form to design view and back to
> form view it works correctly. There is very little code behind these
> forms and nothing on a form event except docmd.maximize on form
> activate. This is the first time I have run into this situation. Why
> would the form behave differently based on whether it was first opened
> in design view or directly into form view?
I think Susan is on the track. And if you dig the archives, Mr. Colby
once described something about the opening of a subform - that it
happens twice when opening a form with a subform.
Once I had a similar problem but that was a speed issue; the controls
on the parent were recalced too slow. A "manual" recalculation in the
Current event of the parent form solved it.
Here's a snip:
curSumLine = 0
curSumUsed = 0
'
Set rst = frmSub.RecordsetClone
With rst
If .RecordCount > 0 Then
.MoveFirst
Do Until .EOF
curSumLine = curSumLine + (!Sold * !Cost)
curSumUsed = curSumUsed + !Used
.MoveNext
Loop
End If
.Close
End With
'
Me!txtSumLine = curSumLine
Me!txtSumUsed = curSumUsed
However, if you update the records of the subform you'll have to have
similar code in the subform to recalc the textboxes on the parent
form.
/gustav