Formular ID-gebunden öffnen
Moderator: Moderatoren
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Formular ID-gebunden öffnen
Hallo die Cracks,
Ich habe folgendes Problem.
BIsher habe ich mein Hauptformular, das mehrere Unterformulare enthält: Bank, Kommunikation, Ehrungen ...
Aufgrund dessen dass es mittlerweile so viele Ufos angesammelt, dass es mir den Bildschirm sprengt.
Nun möchte ich das ganze auf "Hauptformulare" umstellen, die per Schaltfläche geöffnet werden.
Das öffnen per Button habe ich hin bekommen, dank eines Makros aus dem Forum.
Wie jedoch mache ich es dass es ID-abhängig geöffnet wird.
Also öffne das Formular Kommunikation, solange die Daten dem Feld ID des Formulares entsprechen.
Ich habe folgendes Problem.
BIsher habe ich mein Hauptformular, das mehrere Unterformulare enthält: Bank, Kommunikation, Ehrungen ...
Aufgrund dessen dass es mittlerweile so viele Ufos angesammelt, dass es mir den Bildschirm sprengt.
Nun möchte ich das ganze auf "Hauptformulare" umstellen, die per Schaltfläche geöffnet werden.
Das öffnen per Button habe ich hin bekommen, dank eines Makros aus dem Forum.
Wie jedoch mache ich es dass es ID-abhängig geöffnet wird.
Also öffne das Formular Kommunikation, solange die Daten dem Feld ID des Formulares entsprechen.
Nur tote Fische schwimmen mit dem Strom
Re: Formular ID-gebunden öffnen
Aloha
Und zeig doch am Besten mal, wieviel Du bisher schon zusammen hast - 2-4 Zeilen in einen Code einzubauen ist erheblich leichter, als alle verwendeten Namen etc. erraten zu müssen.
Also Du meinst, Du hast in Deinem Hauptformular eine ID, die mit der Tabelle, auf der das Formular "Kommunikation" basiert, verknüpft ist?gerald3659 hat geschrieben:Also öffne das Formular Kommunikation, solange die Daten dem Feld ID des Formulares entsprechen.
Und zeig doch am Besten mal, wieviel Du bisher schon zusammen hast - 2-4 Zeilen in einen Code einzubauen ist erheblich leichter, als alle verwendeten Namen etc. erraten zu müssen.
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Re: Formular ID-gebunden öffnen
Erst mal danke für die schnelle Antwort
Zur Zeit verwende ich den unten stehenden Code für das Öffnen der Masken. Hierbei muss in Formulare Kontrollfeld unter Zusatzdaten der Name des Formulares eingestragen werden.
Jetzt frage ich mich wie ich hier eine Datenabfrage hinzufügen kann.
Um nicht zuviele Makros zu erhalten wollte ich dies mit "select case" machen, sofern möglich.
Die ganze Sache sieht so aus:
Tabelle Stammdaten
Tabelle Kommunikation
Tabelle Bank
Tabelle Zahlung
Tabelle Ehrung
Tabelle Funktion
Es steht zu erwarten, dass hier noch mehr hinzukommen.
Alle Tabellen enthalten ein Feld Mit_ID und sind mit dem Feld ID in Stammdaten verknüpft. Die Verknüpfung von Stammdaten zu Fremdtabelle = 1:n
Gruß
Gerald
Zur Zeit verwende ich den unten stehenden Code für das Öffnen der Masken. Hierbei muss in Formulare Kontrollfeld unter Zusatzdaten der Name des Formulares eingestragen werden.
Code: Alles auswählen
sub evCtl_OpenFrom(event as object)
DIM Tag AS String
Tag = event.Source.Model.Tag
oForm() = Split(Tag, ",")
ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(0)) ).open
ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(1)) ).close
end sub
Um nicht zuviele Makros zu erhalten wollte ich dies mit "select case" machen, sofern möglich.
Die ganze Sache sieht so aus:
Tabelle Stammdaten
Tabelle Kommunikation
Tabelle Bank
Tabelle Zahlung
Tabelle Ehrung
Tabelle Funktion
Es steht zu erwarten, dass hier noch mehr hinzukommen.
Alle Tabellen enthalten ein Feld Mit_ID und sind mit dem Feld ID in Stammdaten verknüpft. Die Verknüpfung von Stammdaten zu Fremdtabelle = 1:n
Gruß
Gerald
Nur tote Fische schwimmen mit dem Strom
Re: Formular ID-gebunden öffnen
Aloha
Davon ausgehend, dass der entsprechende Button sich auf Deinem Hauptformular befindet:
Zuerst brauchst Du die ID des aktuell ausgewählten Datensatzes ala
Dann brauchst Du Zugriff auf das Formular des geöffneten Dokuments ala
Die einfachste Vorgehensweise wäre jetzt sicherlich die Verwendung eines Filters
Wenn Du wie Du sagst alle anderen Tabellen über den FK "Mit_ID" mit der Stammdatentabelle verknüpfst, brauchst Du prinzipiell sogar nur dieses eine Makro.
Also im Gesamtkontext
Davon ausgehend, dass der entsprechende Button sich auf Deinem Hauptformular befindet:
Zuerst brauchst Du die ID des aktuell ausgewählten Datensatzes ala
Code: Alles auswählen
oMainForm = event.Source.Model.Parent
nID = oMainForm.getString(oMainForm.findColumn("ID"))
Code: Alles auswählen
newDoc = ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(0)) ).open
newForm = newDoc.Drawpage.Forms(0)
Code: Alles auswählen
newForm.Filter = """Mit_ID"" = " & nID
newForm.ApplyFilter = True
newForm.reload
Also im Gesamtkontext
Code: Alles auswählen
sub evCtl_OpenFrom(event as object)
DIM Tag AS String
Tag = event.Source.Model.Tag
oMainForm = event.Source.Model.Parent
nID = oMainForm.getString(oMainForm.findColumn("ID"))
oForm() = Split(Tag, ",")
newDoc = ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(0)) ).open
newForm = newDoc.Drawpage.Forms(0)
newForm.Filter = """Mit_ID"" = " & nID
newForm.ApplyFilter = True
newForm.reload
ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(1)) ).close
end sub
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Re: Formular ID-gebunden öffnen
Hallo DPunch
werde es morgen ausprobieren,
habe für heute schon Feierabend gemacht. Musste sein
Trotzdem Danke für die schnelle Antwort
Gruß
Gerald
werde es morgen ausprobieren,
habe für heute schon Feierabend gemacht. Musste sein
Trotzdem Danke für die schnelle Antwort
Gruß
Gerald
Nur tote Fische schwimmen mit dem Strom
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Re: Formular ID-gebunden öffnen
Hallo DPunch,
Als reines FIlter- und Anzeigeformular ist diese Lösung toll.
Ich nmöchte in diesem Formular jedoch Eingabgen machen und Änderungen durchführen können.
Wie kriege ich das hin?
Als reines FIlter- und Anzeigeformular ist diese Lösung toll.
Ich nmöchte in diesem Formular jedoch Eingabgen machen und Änderungen durchführen können.
Wie kriege ich das hin?
Nur tote Fische schwimmen mit dem Strom
Re: Formular ID-gebunden öffnen
Aloha
Wieso kannst Du denn jetzt keine Eingaben / Änderungen vornehmen?
Ich verstehe nicht, was Du meinst.gerald3659 hat geschrieben:Ich nmöchte in diesem Formular jedoch Eingabgen machen und Änderungen durchführen können.
Wie kriege ich das hin?
Wieso kannst Du denn jetzt keine Eingaben / Änderungen vornehmen?
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Re: Formular ID-gebunden öffnen
Nach Deiner Antwort habe ich es hier auf der Arbeit ausprobiert.
Funktioniert hier einwandfrei.
Aber wieso zu Hause nicht bei der Datenbank für die ich es au auch brauche?
WO liegt mein Fehler
Grobe Richtung ? Beziehungen?
Keine Ahnung
Gruß
Gerald
Funktioniert hier einwandfrei.
Aber wieso zu Hause nicht bei der Datenbank für die ich es au auch brauche?
WO liegt mein Fehler
Grobe Richtung ? Beziehungen?
Keine Ahnung
Gruß
Gerald
Nur tote Fische schwimmen mit dem Strom
Re: Formular ID-gebunden öffnen
Aloha
Lässt sich aus der Ferne natürlich schwer sagen.
Vielleicht unter Formular-Eigenschaften "Daten hinzufügen" / "Daten ändern" deaktiviert?
Nachtrag:
Wenn Du die Formulare zum Ändern / Hinzufügen verwendest, hilft die reine Filter-Lösung natürlich nur bedingt, da Du ja theoretisch als Mit_ID auch eine andere als die gefilterte eintragen könntest, bzw Du müsstest die Mit_ID für die aktuell geöffnete Instanz des Formulares kennen, um neue Eingaben zu machen.
Lässt sich aus der Ferne natürlich schwer sagen.
Vielleicht unter Formular-Eigenschaften "Daten hinzufügen" / "Daten ändern" deaktiviert?
Nachtrag:
Wenn Du die Formulare zum Ändern / Hinzufügen verwendest, hilft die reine Filter-Lösung natürlich nur bedingt, da Du ja theoretisch als Mit_ID auch eine andere als die gefilterte eintragen könntest, bzw Du müsstest die Mit_ID für die aktuell geöffnete Instanz des Formulares kennen, um neue Eingaben zu machen.
-
- *
- Beiträge: 19
- Registriert: Di, 14.12.2010 07:55
Re: Formular ID-gebunden öffnen
eine andere Frage,
siehtst Du eine Möglichkeit, wie ich beim erstellen eines NEUEN Datensatzes die ID aus dem Hauptformular in den verknüpften FK übertragen kann. In der Regel handelt es sich bei mir in den Formularen, in denen ich das anwenden mus um Tabellenkontrollfelder welche an die zu den Formular gehörenden Datenbanktabellen gebunden sind.
Tabelle Stammdaten -> Tabelle Kommunikation
PK = ID -> FK= Mit_ID
Wie kriege ich nun den PK in den FK beim erstellen eines neuen Datensatzes im Formular, das an die Tabelle Kommunikations gebunden ist, ohne es von Hand eintragen zu müssen.
Klar was ich meine?
Besten Dank für eine Auskunft schon im Vorraus
Gerald
siehtst Du eine Möglichkeit, wie ich beim erstellen eines NEUEN Datensatzes die ID aus dem Hauptformular in den verknüpften FK übertragen kann. In der Regel handelt es sich bei mir in den Formularen, in denen ich das anwenden mus um Tabellenkontrollfelder welche an die zu den Formular gehörenden Datenbanktabellen gebunden sind.
Tabelle Stammdaten -> Tabelle Kommunikation
PK = ID -> FK= Mit_ID
Wie kriege ich nun den PK in den FK beim erstellen eines neuen Datensatzes im Formular, das an die Tabelle Kommunikations gebunden ist, ohne es von Hand eintragen zu müssen.
Klar was ich meine?
Besten Dank für eine Auskunft schon im Vorraus
Gerald
Nur tote Fische schwimmen mit dem Strom
Re: Formular ID-gebunden öffnen
Aloha
Meine erste Idee dazu wäre, die Spalte mit der Mit_ID auszublenden und stattdessen ein verstecktes Feld zu verwenden, bei dem man als Default-Wert beim Öffnen die entsprechende ID einträgt.
So wäre es beim normalen Arbeiten damit unmöglich, die ID zu ändern, sie würde jedoch bei jeder Änderung / jedem neuen Datensatz automatisch eingetragen werden.
Wenn Du z.B. einfach mal ein Textfeld in Dein zu öffnendes Formular ziehst -> Sichtbar auf "Nein" -> Reiter "Daten" -> an Spalte "Mit_ID" binden.
Nennen wir es einfach mal "txtMit_ID" (Kontrollfeld -> Eigenschaften -> Name)
Im Makro dieses Feld noch ansprechen und den FK setzen:
Also im Gesamtkontext:
(ungetestet, da hier gerade kein OpenOffice zur Verfügung)
Diese Vorgehensweise würde natürlich die Arbeit mit dem Formular beeinträchtigen, wenn es nicht aus dem Hauptformular heraus geöffnet wird.
Keine Ahnung, ob das vorkommt bzw. relevant ist.
Ja, entspricht ja genau dem, was ich am Ende meines letzten Beitrags gesagt habe.gerald3659 hat geschrieben:Klar was ich meine?
Meine erste Idee dazu wäre, die Spalte mit der Mit_ID auszublenden und stattdessen ein verstecktes Feld zu verwenden, bei dem man als Default-Wert beim Öffnen die entsprechende ID einträgt.
So wäre es beim normalen Arbeiten damit unmöglich, die ID zu ändern, sie würde jedoch bei jeder Änderung / jedem neuen Datensatz automatisch eingetragen werden.
Wenn Du z.B. einfach mal ein Textfeld in Dein zu öffnendes Formular ziehst -> Sichtbar auf "Nein" -> Reiter "Daten" -> an Spalte "Mit_ID" binden.
Nennen wir es einfach mal "txtMit_ID" (Kontrollfeld -> Eigenschaften -> Name)
Im Makro dieses Feld noch ansprechen und den FK setzen:
Code: Alles auswählen
oTxt = newForm.getByName("txtMit_ID")
oTxt.DefaultText = nID
Code: Alles auswählen
sub evCtl_OpenFrom(event as object)
DIM Tag AS String
Tag = event.Source.Model.Tag
oMainForm = event.Source.Model.Parent
nID = oMainForm.getString(oMainForm.findColumn("ID"))
oForm() = Split(Tag, ",")
newDoc = ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(0)) ).open
newForm = newDoc.Drawpage.Forms(0)
newForm.Filter = """Mit_ID"" = " & nID
newForm.ApplyFilter = True
oTxt = newForm.getByName("txtMit_ID")
oTxt.DefaultText = nID
newForm.reload
ThisDatabaseDocument.FormDocuments.getByName( Trim(oForm(1)) ).close
end sub
Diese Vorgehensweise würde natürlich die Arbeit mit dem Formular beeinträchtigen, wenn es nicht aus dem Hauptformular heraus geöffnet wird.
Keine Ahnung, ob das vorkommt bzw. relevant ist.