[AccessD] How do I tell if a form is opened as a subform or not?

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".




More information about the AccessD mailing list