Und noch ergänzend zu meinen anderen Fragen, mein letzter Wunsch (dann wäre das wirklich perfekt: ich bekäme alles umgesetzt und könnte loslegen - juhuuu :-) ).
Wie nachfolgend dargestellt, möge im Formular - je nach Auswahl eines Wertes in einer Kombinationsbox - ein anderes Unterformular angezeigt werden.
2020-09-26 access31.PNG
2020-09-26 access30.PNG
Das geht doch bestimmt auch, oder?
Mein Dank sei euch vorausgeschickt. Wie gesagt ist VBA überhaupt nicht meine Stärke :-/
Hallo,
was ist denn der Unterschied zwischen den beiden Ufos ?
Ich kann da keine Tabelle erkennen, die unterschiedliche Ufos erforderlich machen würde.
PS:
Du solltest in den Beziehungen unbedingt auch referentielle Integrität einstellen. Wenn das nicht geht, liegen bereits Fehler in den Daten und/oder in der Struktur vor.
Hallo
@MzKlMu ,
die beiden UFOs unterscheiden sich gänzlich, sind aber in dem Screenshot noch gar nicht enthalten. Um genau zu sein ist es ein UFo im UFo ... also dort, wo der grüne Text steht, soll entweder UFo_A oder UFo_B angezeigt werden.
Ein gutes Beispiel wäre, dass "Type A" für ein Dienstleistungsangebot steht, während "Type B" für ein Produktangebot steht und in dessen Folge im dem jeweiligen UFo völlig unterschiedliche, ergänzende Informationen zu pflegen sind oder erscheinen, die für den jeweils anderen Typ nicht relevant sind (wie gesagt, ist ein Beispiel).
@ref. Integrität: Ja, danke, da haben ich auch noch auf dem Schirm, mich damit zu beschäftigen. Soweit ich das bisher verstanden habe geht es "lediglich" darum, dass keine Daten gelöscht werden können, wenn in der Schwestertabelle dazu noch Datensätze vorliegen. Kann man da so (grob) vereinfacht sagen?
Hallo,
Zitat von: undefinedEin gutes Beispiel wäre, dass "Type A" für ein Dienstleistungsangebot steht, während "Type B" für ein Produktangebot steht und in dessen Folge im dem jeweiligen UFo völlig unterschiedliche, ergänzende Informationen zu pflegen sind oder erscheinen,
Das wäre dann aber anders aufzubauen. Du brauchst dann eine Tabelle in der die gemeinsamen Angebotsdaten stehen.
Dann 2 weiere Tabelle die jeweils zur Angebotstabelle in einer 1:1 Beziehung stehen.
Und dann würde ich die Ufos auf 2 Registerseiten legen, ein Register für die Dienstleistung und ein Register für die Produkte. Dann muss nix umgeschaltet werden.
Bez. RI.:
Diese stellt man immer
sofort nach der Erstellung der Tabellen ein. RI stellt die Datenkonsistenz sicher (bitte mal nachschlagen) und legt auch gleich die notwendigen Indizes an.
Wenn keine RI eingestellt ist, läufst Du Gefahr dass Du gerade in der Entwicklungsphase Datensatzleichen anlegst die Du dann nach einschalten der RI erst suchen musst, weil sich sonst RI nicht aktivieren lässt. Mit RI ist es auch leichter den logischen Aufbau der Tabellenstruktur zu prüfen. Also RI sofort aktivieren.
@MzKlMu :
Danke für den Hinweis zu RI - mache ich gleich.
Zum eigentlichen Formular-Thema:
Ja, so in etwa ist es auch: Ich plane - um im Beispiel zu bleiben - eine breite Tabelle, in der bspw. Spalte 1 bis 10 mit Infos zu Type A gefüllt werden, während Spalte 11 bis 20 für Info zu Type B sind (ja, ich weiß, dass man derart eigentlich nicht Tabellen und Datenbanken mit leeren Zellen vollmüllen sollen - für den Einsatz aber ein adäquates Mittel).
Also ja, ich plane eine Tabelle für die beiden Unterformulare (ich dachte mir, dass es womöglich schon deshalb besser wäre, um die Verbindung zum übergeordneten (Unter-) Formular zu vereinfachen).
Meinetwegen auch gern mit Reitern... Ginge es denn hier, dass ich dann den jeweils anderen Reiter "invisible" schalte? ... denn darum geht es ja: Der User soll nur jene Info-Felder sehen, die zu dem gewähltem Type passen.
Hallo Tom,
Nein, auf keinen Fall eine "breite" Tabelle. Mach es so, wie von Klaus
skizziert
Zitateine Tabelle in der die gemeinsamen Angebotsdaten stehen.
Dann 2 weiere Tabelle die jeweils zur Angebotstabelle in einer 1:1 Beziehung stehen.
Wobei du hier wohl "Anbebotsdaten" durch "Positionsdaten" ersetzen musst, -
die Angebotsdaten stehen ja im Kopf.
Die unterschiedlichen UFos bekommen dann als DS-Herkunft eine Abfrage
mit den Feldern der "Haupt"tabelle (1: ) und der entsprechenden "Unter"-
tabelle ( :1).
ZitatDer User soll nur jene Info-Felder sehen, die zu dem gewähltem Type passen.
Wenn das so wichtig ist, bediene die Objektherkunft des UFo-Controls mit
dem entsprechenden Formular nach Auswahl des Typs im Kombi.
gruss ekkehard
Hallo Ekkehard und Klaus,
ja, verstehe ... macht Sinn. Werde ich so umsetzen!
@Positionsdaten: Ich glaube nicht, sofern ich Deinen Hinweis richtig deutet... also es sind keine Artikel-Daten (also 1:n) oder so, sondern ebenfalls "Kopfdaten". Um im Beispiel zu bleiben, wenn:
- Type A = ein Dienstleistungsangebot wäre, ob bpsw. Nachtarbeit erlaubt ist, während bei
- Type B = Produktangebot, ob Teillieferungen erlaubt sind
... also völlig unterschiedliche Infos, die in dem jeweils anderen Kontext keinen Sinn ergeben, aber eben auch auf Kopf-Ebene.
@UFO's: soweit verstanden, denke ich :-)
Ich setze das mal um und melde mich dann hier nochmal :D
Hallo nochmal,
so, ich denke, ich habe das soweit sowohl die zwei weiteren 1:1-Tabellen als auch die Unterformulare; das erste "TypeA" ist auch schon eingebunden.
2020-09-27 access01.PNG
2020-09-27 access02.PNG
Und jetzt? Wie mache ich das?
Einfach einen zweiten UFo-Rahmen an dieselbe Stelle platzieren, den ersten UFo-Rahmen umbenennen in "ufAngebotTypeA", den zweiten "ufAngebotTypeB" benennen; darin das jeweils zugehörige UFo einbinden und in dem "ufAngebot" ein "AfterUpadate" (oder so ähnlich) auf die KombiBox "AngebotType" legen, der entweder "ufAngebotTypeA" oder "...B" visible und das andere entsprechend invisible schaltet? Wäre so das vorgehen?
Hallo Tom,
Zitatalso es sind keine Artikel-Daten (also 1:n) oder so, sondern ebenfalls "Kopfdaten". Um im Beispiel zu bleiben, wenn:
O.K., das hatte ich dann falsch verstanden, spielt aber keine Rolle, - UFo ist UFo.
Und nein, du brauchst keine zwei Rahmen (UFO-Controls) nur zwei (Unter)Formulare
mit den unterschiedlichen Feldern (Abfragen aus tblAngebote und tblAngeboteTypx).
In der Entwurfsansicht des HFo lässt du die Eigenschaft "Herkunftsobjekt" des
UFo-Contriols leer. Das Kombi für den Typ bekommt eine Ereignisprozedur für
das Ereignis "AfterUpdate"
Private Sub cboATyp_AfterUpdate()
Me.UFoControl.SourceObjekt = Me.cboATyp.Column(2)
End SubColumn(2) ist hier die unsichtbare dritte Spalte des Kombis, in dem der Name
des o.a. Unterformulars hinterlegt ist.
gruss ekkehard
Hallo Tom,
Man sollte keine Posts unter Zeitdruck schreiben, da fällt evtl. mal was
unter den Tisch.
Also zur Ergänzung. Beim vorgeschlagenen Vorgehen muss in die Tabelle
"tblAngebottypes" ein Feld für den Formularnamen. Geht aber auch ohne,
man kann die Formularnamen fest im Code verdrahten, und die Auswahl mit
einem "Select Case" steuern
Private Sub cboAType_AfterUpdate()
Dim sFrMName As String
With Me
Select Case .cboATyp
Case 1
sFrmName = "NameFormTypeA"
Case 2
sFrmName = "NameFormTypeB"
End Select
.UFoControl.SourceObjekt = sFrmName
End With
End Sub
Noch eine Anmerkung zum Datenmodel. Das Feld "_InfoXYZ" kann in die Tabelle
"tblAngebote", wo der Type ja durch den FK (AngebotTypeID_F) schon bestimmt
ist.
gruss ekkehard