Gustav Brock
gustav at cactus.dk
Thu Mar 13 03:42:00 CST 2003
Hi Drew
> I know what you are saying about intentionally looking for an error. It
> gives me an uneasy feeling too, but there are some things that just
> absolutely require it.
Of course, and no problem with that.
However, I can't imagine why one would do as described in your
example - I've never designed a form to be used as both a main form
and a subform and indeed not at the same time - but, well, never say
never.
/gustav
> As far as your code, I'm pretty tired so I could be wrong on this, but I
> think I could trigger a false positive with your code. If you opened formA,
> then opened formB, then set the source object on a subform on FormA to
> FormB, you will now have FormB as a subform on FormA, but your function will
> say False, because FormB was the last form to be put into the form's
> collection AND it is also now a subform. (Actually, just tried it, and it
> did say false from the subform)
> I know, it wouldn't be a common occurrence, but the error method is
> guaranteed to be correct.
> Drew
> -----Original Message-----
> From: Gustav Brock [mailto:gustav at cactus.dk]
> Sent: Wednesday, March 12, 2003 1:17 PM
> To: Drew Wutka
> Subject: Re: [AccessD] How do I tell if a form is opened as a subform or
> not?
> Hi Drew
> I don't like at all coding where you rely on error generation. It may
> very well be quick and dirty code and some like that, but I try to
> use it as the last resort only.
> Previously I have posted this small function for the same purpose - it
> could have been for the benefit of Arthur "the static lover" as you'll
> see. It is not much larger than your code:
> <code>
> Private Function IsSubform() As Boolean
> Static booSubform As Boolean
> Static lngFormsCount As Long
> If lngFormsCount = 0 Then
> lngFormsCount = Forms.Count
> booSubform = StrComp(Forms(lngFormsCount - 1).Name, Me.Name,
> vbTextCompare)
> End If
> IsSubform = booSubform
> End Function
> </code>
> /gustav
>> I know, it's just one of my coding habits. I only use 'resume next' when
>> I
>> want to completely ignore errors. If I am expecting an error...to use it
>> (as in my example), or I am just handling unexpected errors, then I always
>> use On Error Goto...
>> Make sense? (your code is smaller....can't deny that!<grin>)
>> Drew
>> -----Original Message-----
>> From: Gustav Brock [mailto:gustav at cactus.dk]
>> Sent: Wednesday, March 12, 2003 11:13 AM
>> To: Drew Wutka
>> Subject: Re: [AccessD] How do I tell if a form is opened as a subform or
>> not?
>> Hi Drew
>> That was an awful lot of code to replace something like these two
>> lines:
>> <code>
>> Private Function IsSubform() As Boolean
>> On Error Resume Next
>> IsSubform = Me.Parent.hWnd
>> End Function
>> </code>
>> /gustav
>>> This is from my new MiniCalendar database....still in development...but
>>> the function works fine.
>>> Private Function AmIASubForm() As Boolean
>>> On Error GoTo ErrorHandler
>>> Dim varTemp
>>> varTemp = Me.Parent
>>> AmIASubForm = True
>>> Exit Function
>>> ErrorHandler:
>>> Err.Clear
>>> AmIASubForm = False
>>> End Function
>>> -----Original Message-----
>>> From: Bruce Bruen [mailto:bbruen at bigpond.com]
>>> Sent: Tuesday, March 11, 2003 6:58 PM
>>> To: AccessD
>>> Subject: [AccessD] How do I tell if a form is opened as a subform or
>>> not?
>>> Hi List,
>>> I am trying to use a form that may appear as a subform or on its own.
>>> If it's a subform then I want to maximise it in its parent control
>>> space, if not then it should be sized to fit the form.
>>> But how do I tell where it is being opened? The following doesn't work:
>>> On Error Resume Next
>>> If Not IsNull(Me.Parent.Name) Then
>>> boolIsSubform = True
>>> DoCmd.Maximize
>>> Else
>>> boolIsSubform = False
>>> End If
>>> On Error GoTo 0
>>> Ignore the fact that the docmd works on the parent, I am not worried
>>> about that at the moment, only that I don't know how to test the
>>> "subformedness".