Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Unterformular wechseln per Funktion
zurück: KEINE Fragen als Thema in diesem Forum eroeffnen ! weiter: Access Tipps & Tricks / FAQ (sortiert) Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
03. Jul 2007, 14:07
Rufname:

Unterformular wechseln per Funktion - Unterformular wechseln per Funktion

Nach oben
       Version: Office 2003

Hallo zusammen,

bisweilen kommt es vor, daß in einem Formular, das mit einem Unterformular verknüpft ist, der Inhalt des Unterformularcontainers gegen ein anderes Unterformular zur Laufzeit ausgetauscht werden soll. Hierfür habe ich folgende Funktion zusammengebastelt:
Code:
Option Compare Database
Option Explicit
Public bolLinkSubForm As Boolean    'Global durch Public ersetzt by Willi Wipp

' Author : Christian Coppes
' Version: V1.3
' Last Modified: 29.06.2007
'
'  Update link to a subform (name in "strSubform")
'  strChild and strMaster = Indices which should be linked
'  between main form and subform.
'  Name of the subform and name of the subform-container must be identical,
'  if strSubForm is left
Public Sub linkSubForm(frm As Form, strSubFormContainer As String, _
                       strChild As String, strMaster As String, _
                       Optional strRecSource As String, _
                       Optional strSubForm As String)
On Error GoTo Fehler
    bolLinkSubForm = True
    Application.Echo False
    If strSubForm = "" Then strSubForm = strSubFormContainer
    ' necessary following MS-instructions
    frm(strSubFormContainer).LinkChildFields = ""
    ' necessary following MS-instructions
    frm(strSubFormContainer).LinkMasterFields = ""
    frm(strSubFormContainer).SourceObject = strSubForm
    If (strChild <> "" And strMaster <> "") Then
        frm(strSubFormContainer).LinkChildFields = strChild
        frm(strSubFormContainer).LinkMasterFields = strMaster
    End If
    If strRecSource <> "" Then
        frm(strSubFormContainer).Form.RecordSource = strRecSource
    End If
    Application.Echo True
    bolLinkSubForm = False
    Exit Sub
Fehler:
    Application.Echo True
    Select Case Err.Number
      Case Else
        MsgBox "Error in linkSubForm: " & vbCr & Err.Description & vbCr & _
               " Number: " & Str(Err.Number)
        Resume Next
    End Select
End Sub
Zusätzliche Erläuterungen:

Die globale Variable "bolLinkSubForm" ist als Hilfe gedacht, um außerhalb dieser Funktion festzustellen, ob sie schon fertig ausgeführt wurde oder nicht. Der Grund: Durch die Änderung des Unterformulars werden auch die entsprechenden Form-Events ausgelöst, so daß es auch zu Endlosschleifen kommen kann, je nachdem, wo man diese Funktion startet. Um das zu verhindern, kann man einfach diese Variable abfragen und testen, ob die Funktion schon fertig ist.

Um die Anzeige zu beschleunigen, wird vor der Ausführung die Bildschirmaktualisierung abgeschaltet und am Ende wieder eingeschaltet. Sollte es während der Funktion zu Fehlern kommen, wird sie ebenfalls wieder eingeschaltet. Trotzdem kann es auch mal vorkommen, daß die Einschaltung nicht ausgeführt wird (etwa, wenn man den Code durch den Debugger schickt), so daß in dem Fall ein "Application.Echo True" im Direktfenster ausgeführt werden muß. Oder man belegt eine Taste damit (Hallo Willi... Mr. Green ).

Gruß

Christian
Willi Wipp
Moderator


Verfasst am:
03. Jul 2007, 16:45
Rufname:
Wohnort: Raum Wiesbaden


Re: Unterformular wechseln per Funktion - Re: Unterformular wechseln per Funktion

Nach oben
       Version: Office 2003

Hi Bitsqueezer,

danke fuer Dein schoenes Beispiel.
Habe mir erlaubt das Global durch Public zu ersetzen und das Code-Format etwas anzupassen. Wink
Ich denke es ist beides gleichwertig, aber Global wird in der Online-Hilfe (A02) nicht mehr gefunden Wink

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 03. Jul 2007, 17:11, insgesamt einmal bearbeitet
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
03. Jul 2007, 17:08
Rufname:

AW: Unterformular wechseln per Funktion - AW: Unterformular wechseln per Funktion

Nach oben
       Version: Office 2003

Hallo Willi,

danke für den Hinweis, ist mir noch gar nicht aufgefallen.
Obwohl ich das Schlüsselwort "Global" für selbsterklärender halte, aber wenn MS das nicht mehr verwendet, macht's ja keinen Sinn mehr.

Kommt natürlich auch daher, wenn man dauernd zwischen verschiedenen Programmiersprachen hin- und herhüpft... Smile

Gruß

Christian
Gast



Verfasst am:
04. Aug 2008, 16:49
Rufname:

AW: Unterformular wechseln per Funktion - AW: Unterformular wechseln per Funktion

Nach oben
       Version: Office 2003

Tut mir leid wenn die Frage nicht hierher passt, aber: was für Argumente muss ich dieser Funktion denn nun genau übergeben?
Mein Formular heißt Main, das Formular das ich einbinden will "Liegenschaften" und der Container heißt ebenfalls "Liegenschaften" - allerdings braucht die Funktion min. 4 Parameter, und ich als Access Anfänger kann nicht wirklich viel damit anfangen. Auch meine Basic Erfahrungen liegen schon einige Jahre zurück.

Bis auf die, für einen Anfänger, magere Dokumentation schein die Funktion aber klasse zu sein.
Willi Wipp
Moderator


Verfasst am:
04. Aug 2008, 17:57
Rufname:
Wohnort: Raum Wiesbaden

Re: Unterformular wechseln per Funktion (II) - Re: Unterformular wechseln per Funktion (II)

Nach oben
       Version: Office 2003

Hi Gast,

das waeren:
Code:
frm As Form:                       Verweis auf das "Haupt"-Formular
strSubFormContainer As String:     Name Unterformular-Steuerelement (frm)
strChild As String:                Name der Felder fuer Verknuepft Von
strMaster As String:               Name der Felder fuer Verknuepft Nach
Optional strRecSource As String:   Optionaler SQL-Code der Datenherkunft
Optional strSubForm As String:     Optionaler Name Unterformular (DB-Fenster)

'z.B.
    linkSubForm Me, "ufoControl", "DeineIDinUFo", "DeineIDinHFo", _
                "SELECT * FROM tblDeineTabelle", "frmUfo"

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Gast



Verfasst am:
05. Aug 2008, 07:52
Rufname:


AW: Unterformular wechseln per Funktion - AW: Unterformular wechseln per Funktion

Nach oben
       Version: Office 2003

Vielen Dank für deine Hilfe!
Und nochmals vielen Dank für die tolle Funktion
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Kann man die Funktion fctSendVar erweitern? 3 MICK 1300 05. Nov 2005, 21:17
jens05 Kann man die Funktion fctSendVar erweitern?
Keine neuen Beiträge Access Tabellen & Abfragen: iif Funktion 3 hp80 5808 03. Nov 2005, 20:45
lothi iif Funktion
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate löschen per Abfrage 2 DanielW 6779 21. Sep 2005, 15:51
DanielW Duplikate löschen per Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen per update verändern??? 5 segel12 1606 22. Aug 2005, 07:49
stpimi Tabellen per update verändern???
Keine neuen Beiträge Access Tabellen & Abfragen: Feldwert ergänzen per SQL 16 grub 2243 27. Jul 2005, 16:50
Willi Wipp Feldwert ergänzen per SQL
Keine neuen Beiträge Access Tabellen & Abfragen: eigene Funktion in einer Abfrage einbauen ? 1 magnum 5230 28. Mai 2005, 18:39
Gast eigene Funktion in einer Abfrage einbauen ?
Keine neuen Beiträge Access Tabellen & Abfragen: Funktion "Finden", "Teil" zum extrahiere 1 marwa 710 31. März 2005, 12:52
marwa Funktion "Finden", "Teil" zum extrahiere
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage in Unterformular 2 kassandra 1210 09. März 2005, 11:15
kassandra Parameterabfrage in Unterformular
Keine neuen Beiträge Access Tabellen & Abfragen: Unterformular über Kombinationsfeld aussuchen... 1 DJ1337 923 14. Feb 2005, 13:53
lothi Unterformular über Kombinationsfeld aussuchen...
Keine neuen Beiträge Access Tabellen & Abfragen: Unterformular öffnen 1 mike1967 1022 10. Feb 2005, 08:53
MirkoK Unterformular öffnen
Keine neuen Beiträge Access Tabellen & Abfragen: Wie mache ich per Abfrage 305 -> K3.05? 2 Maik_25 792 21. Jan 2005, 10:38
Maik_25 Wie mache ich per Abfrage 305 -> K3.05?
Keine neuen Beiträge Access Tabellen & Abfragen: in einer Wenn dann Funktion aufs Datum gruppieren 10 Gast 691 06. Jan 2005, 10:22
Skogafoss in einer Wenn dann Funktion aufs Datum gruppieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln