Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Prüfen, ob Formular UFo ist (A2k)

69 views
Skip to first unread message

Stefan Dase

unread,
Aug 8, 2005, 8:05:30 AM8/8/05
to
Hallo!

Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade als
UFo verwendet wird? So in der Art

If Me.IsSubForm Then
...
End If

Viele Grüße,
Stefan

Karl Donaubauer

unread,
Aug 8, 2005, 8:17:34 AM8/8/05
to
Hallo, Stefan!

Stefan Dase wrote:
> Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade
> als UFo verwendet wird? So in der Art
>
> If Me.IsSubForm Then
> ...
> End If

Du kannst die Parent-Eigenschaft des Formulares ansprechen:
Me.Parent oder Me.Parent.Name
und den resultierenden Fehler (2452) abfangen, wenn da kein
Elter ist.

--
HTH
Karl
*********
Access FAQ: www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA)


Gunter Avenius

unread,
Aug 8, 2005, 8:15:56 AM8/8/05
to
Hallo Stefan,

Stefan Dase schrieb folgendes:


> Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade
> als UFo verwendet wird? So in der Art

"Beim öffnen" [Ereignisprozedur] des Formulares welches als UFO
verwendet werden kann:

Private Sub Form_Open(Cancel As Integer)
On Error GoTo Fehler
If Me.Parent.Name = "" Then
'Fehler 2452
Else
'Formular ist ein Ufo
MsgBox "UFO"
End If
Fehler_Exit:
Exit Sub
Fehler:
If Err = 2452 Then
'Formular ist kein UFO
MsgBox "Kein UFO"
Else
MsgBox Err.Number & vbCrLf & Err.Description
End If
Resume Fehler_Exit
End Sub


--
Gruß
Gunter
_________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com

Henry Habermacher [MVP Access]

unread,
Aug 8, 2005, 8:23:38 AM8/8/05
to
Hallo Stefan

quoting Stefan Dase:

> Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade
> als UFo verwendet wird? So in der Art
>
> If Me.IsSubForm Then
> ...
> End If

Ja, das gibt es, auf dem Umweg, die Forms Collection abzuklappern und zu
schauen, ob das UFO dort drin vorkommt oder nicht. Falls nicht, ist es als
UFO geladen.
Alternative: Du kannst Me.Parent abfragen. Falls das zu einem Fehler kommt,
dann ist es kein UFO. Bei einem UFO wird als Parent das HFO zurückgegeben.

HTH
Henry


--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org

Karl Donaubauer

unread,
Aug 8, 2005, 8:33:04 AM8/8/05
to
Hallo, Henry!

Henry Habermacher [MVP Access] wrote:
> quoting Stefan Dase:
>
>> Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade
>> als UFo verwendet wird? So in der Art
>>
>> If Me.IsSubForm Then
>> ...
>> End If
>
> Ja, das gibt es, auf dem Umweg, die Forms Collection abzuklappern und
> zu schauen, ob das UFO dort drin vorkommt oder nicht. Falls nicht,
> ist es als UFO geladen.

> ...

Joo, das brachte mich noch drauf, dass ja ab A00 reicht:

If CurrentProject.AllForms(Me.Name).IsLoaded Then
MsgBox "Jappadappaduu, ich bin ich ein Hauptformular!"
Else
MsgBox "Wird schon wieder werden."
End If

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
+ Access-Entwickler-Konferenz (AEK8) 1./2.10.+8./9.10.2005


Olaf Rabbachin

unread,
Aug 8, 2005, 8:33:55 AM8/8/05
to
Hi,

Stefan Dase wrote:

> Gibt es eine Möglichkeit, per VBA zu prüfen, ob ein Formular gerade als
> UFo verwendet wird? So in der Art
>
> If Me.IsSubForm Then
> ...
> End If

Air-code:

public function IsSubForm(frm As form) As boolean
On Error Resume Next
dim strName As string
strName = frm.parent.name
issubform = (err.number = 0)
err.clear
End Function

..?

Bis dann,
Olaf [MVP]
--
Bitte keine emails auf NG-postings.

My .02: www.Resources.IntuiDev.com

Stefan Dase

unread,
Aug 8, 2005, 8:37:38 AM8/8/05
to
> If CurrentProject.AllForms(Me.Name).IsLoaded Then
> MsgBox "Jappadappaduu, ich bin ich ein Hauptformular!"
> Else
> MsgBox "Wird schon wieder werden."
> End If

*lach* Wie gut, dass bei allem Ernst auch noch genügend Zeit für ein
wenig Humor bleibt.

Habe es jetzt mit der Me.Parent.Name Eigenschaft gelöst, auch wenn ich
nach Möglichkeit Fehlerauslösenden Code zu umschiffen suche. Immerhin
ist es dann bei mir nur ein Einzeiler.

Vielen Dank und viele Grüße aus Bremen,
Stefan

Karl Donaubauer

unread,
Aug 8, 2005, 8:45:55 AM8/8/05
to
Stefan Dase wrote:
> > If CurrentProject.AllForms(Me.Name).IsLoaded Then
>> MsgBox "Jappadappaduu, ich bin ich ein Hauptformular!"

Da ist entweder ein "ich" zuviel oder ein Beistrich ("Komma"
bei euch) nach dem 2. "ich" zu wenig. Im Sinne von:
~ "Ich bin ich, Don Quijote, der Herr von La Mancha, ..." ~

>> Else
>> MsgBox "Wird schon wieder werden."
>> End If

> ...


> Habe es jetzt mit der Me.Parent.Name Eigenschaft gelöst, auch wenn ich
> nach Möglichkeit Fehlerauslösenden Code zu umschiffen suche. Immerhin
> ist es dann bei mir nur ein Einzeiler.

> ...

Wie schaffst du das in einem Einzeiler bzw. kürzer als das
True oder False mit IsLoaded?
Geht doch dann eben nicht ohne Fehler und Abfangen.
Deshalb habe ich die "fehlerlose" Variante noch nachgeschickt.

--
cu

Stefan Dase

unread,
Aug 8, 2005, 8:59:16 AM8/8/05
to
Hallo Karl!

> Wie schaffst du das in einem Einzeiler bzw. kürzer als das
> True oder False mit IsLoaded?

Private Sub Form_Current()
On Error Resume Next
Call Me.Parent.setRevisionID(Nz(Me!RevisionID, 0))
End Sub

Ok, sind zwei Zeilen. Aber so muss ich nix mehr auswerten und gut ist.
Passt natürlich nur bei diesem Spezialfall, da keine weiteren
Berechnungen erfolgen.

Viele Grüße nach Wien,
Stefan

P.S. + OT: Habe gerade unsere Bestellung für die AEK in Kopie bekommen.
Unsere Beschaffung ist offensichtlich so flexibel wie ein Eisberg.
Immerhin haben sie die Qualitätsanforderungen gem. ISO 9001/9002 nicht
mehr dazugeschrieben. ;-)

0 new messages