Neuer DS durch Auswahl mehrerer Kombifelder

Hallo Leute,

ich habe offensichtlich gerade eine Denkblockade, darum wende ich mich an euch.
Ich habe 3 Tabellen für eine m:n Beziehung :
P_Stamm: BN als Primärschlüssel
P_S: P_S_ID als Primärschlüssel, BN und StN als Fremdschlüssel
S_Stamm: StN als Primärschlüssel

Verknüfpfung ist also :
BN(P_Stamm) 1 - n BN(P_S) und StN(P_S) n - 1 StN(S_Stamm)

Nun wollte ich ein Formular erstellen, mit dem ich im oberen Teil eine BN von P_Stamm auswähle und ein Endlosformular mit StN von S_Stamm zum auswählen, sodass in P_S automatisch Datensätze angelegt werden mit der selben BN und den StN die ich im Formular auswähle.
Als Bsp.:
Wenn ich „oben“ 1 auswähle (BN) und „unten“ 3,5,6,2839 und 12 auswähle (StN) dann sollen mir in P_S 5 Datensätze angelegt werden.

Tabelle_P_S: P_S_ID - BN - StN
1 - 1 - 3
2 - 1 - 5
3 - 1 - 6
4 - 1 - 2839
5 - 1 - 12

Die Frage ist: muss ich da mit VBA programmieren um die BN pro Datensatz einzutragen? Oder reicht eine simple Formular-Unterformularbeziehung und wie sieht die aus?
Mit 1-n Beziehungen ist es kein Thema neue Datensätze anzulegen.

MfG
Philipp K.

Hallo Leute,

ich habe offensichtlich gerade eine Denkblockade, darum wende
ich mich an euch.
Ich habe 3 Tabellen für eine m:n Beziehung :
P_Stamm: BN als Primärschlüssel
P_S: P_S_ID als Primärschlüssel, BN und StN als Fremdschlüssel
S_Stamm: StN als Primärschlüssel

Verknüfpfung ist also :
BN(P_Stamm) 1 - n BN(P_S) und StN(P_S) n - 1 StN(S_Stamm)

Nun wollte ich ein Formular erstellen, mit dem ich im oberen
Teil eine BN von P_Stamm auswähle und ein Endlosformular mit
StN von S_Stamm zum auswählen, sodass in P_S automatisch
Datensätze angelegt werden mit der selben BN und den StN die
ich im Formular auswähle.
Als Bsp.:
Wenn ich „oben“ 1 auswähle (BN) und „unten“ 3,5,6,2839 und 12
auswähle (StN) dann sollen mir in P_S 5 Datensätze angelegt
werden.

Tabelle_P_S: P_S_ID - BN - StN
1 - 1 - 3
2 - 1 - 5
3 - 1 - 6
4 - 1 - 2839
5 - 1 - 12

Je nachdem, von welcher Seite Du das ansiehst, benötigst Du ein HF mit Basis zu „P_Stamm“ und ein UFO darin, das ein Endlosform auf Basis von „P_S“ anzeigt. In diesem Endlosform können die Werte für „StN“ aus der Tabelle „S_Stamm“ per Kombi gewählt werden.

Wenn das HF auf Basis von „S_Stamm“ erstellt wird, dann werden im UFO „BN“ aus „P_Stamm“ per Kombi ausgewählt.

Solltest du über VBA lösen, z. B. Button Anfüge

Currentproject.connection.Execute „insert into P_S(BN, StN) Select " & forms!Hauptformular!AuswahlformularPStamm.form!P_Stamm &“, " &
& forms!Hauptformular!AuswahlformularSStamm.form!S_Stamm

danach das Formular mit der Anzeige der P_S-Daten aktualisieren

musst dich aber auch um die korrekte Datenanzeige im Formular mit den P_S-Daten kümmern (Filter)

Gruß EPa

Hallo Franz,

so hatte ich das schon ausprobiert, aber dann kann man im HF keinen Primärschlüssel auswählen. Es erscheinen zwar alle Informationen zu den BNs etc. , aber sobald ich auf eine BN klicke zum auswählen kommt nur ein Fehlersound und nichts passiert.

Ich habe schon überlegt, ob nicht sogar beide Formulare auf die Datenherkunft P_S zugreifen sollten, da ja mehrere Datensätze in P_S erstellt werden sollen, die die selbe BN besitzen als Fremdschlüssel.

Also wenn man es so machen würde, dass nur 1 Datensatz angelegt wird, benutzt man ja nur ein Formular mit P_S als Datenherkunft, in dem man die Kombifelder reinsetzt. Aber ich möchte ja dass mehrere Datensätze gleichzeitig mit der selben BN angelegt werden, ohne dass ich für jede Verbindung die BN extra auswählen muss.

MfG
Philipp K.

Hallo EPa,

ich dachte eigentlich, dass man wenn man mehrere Datensätze anlegt dann mit einer Schleife arbeiten muss, die dann immer wieder die selbe BN benutzt und dann im Recordset von den dazugehörigen STNs immer eins weiter geht und mit reinschreibt in die Tabelle.

Mit Tabelleneinträgen durch VBA habe ich mich bisher noch nicht beschäftigt.

MfG
Philipp K.

Hallo,

so hatte ich das schon ausprobiert, aber dann kann man im HF
keinen Primärschlüssel auswählen. Es erscheinen zwar alle
Informationen zu den BNs etc. , aber sobald ich auf eine BN
klicke zum auswählen kommt nur ein Fehlersound und nichts
passiert.

Ich habe schon überlegt, ob nicht sogar beide Formulare auf
die Datenherkunft P_S zugreifen sollten, da ja mehrere
Datensätze in P_S erstellt werden sollen, die die selbe BN
besitzen als Fremdschlüssel.

Verstehe das alles nicht… ??

Also wenn man es so machen würde, dass nur 1 Datensatz
angelegt wird, benutzt man ja nur ein Formular mit P_S als
Datenherkunft, in dem man die Kombifelder reinsetzt. Aber ich
möchte ja dass mehrere Datensätze gleichzeitig mit der selben
BN angelegt werden,

Warum denn??

ohne dass ich für jede Verbindung die BN

extra auswählen muss.

irgendwie verstehen wir uns und die Konstruktion miss…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

Hintergrund ist die benutzerfreundlichkeit der Datenbank.

Ich möchte ein Formular haben, in dem ich Bewerber zu Stellen bzw umgekehrt zuordnen möchte.
Das sollte am besten so aussehen, dass im oberen Teil der Bewerber ausgewählt wird und im unteren Teil ein Endlosformular, bei dem man mehrere Stellen zuteilen kann, da keiner Lust hat 20.000x in das selbe Popup-Formular zu springen um jede Verbindung zwischen Bewerber und Stelle einzutippen / auszuwählen.

Also pro StN im UFO soll ein neuer Datensatz in P_S angelegt werden, mit BN vom HF und den einzelnen StN aus dem UFO.

Ich hoffe das war verständlicher^^.

MfG
Philipp K.

Hi,

kommt immer drauf an, wie man arbeitet.

Es geht sowohl die Arbeit innerhalb einer Schleife als auch, wenns passt, die Selektion von mehreren DS über eine Abfrage.

Du kannst ja versuchen, ob du die Daten, die du anfügen willst, in einer normalen Auswahlabfrage darstellen kannst. Diese könntest du dann auch als Datenquelle für eine Anfügeabfrage verwenden.

Gruß EPa

Hallo,

nö, ist es nicht…

Verstehe das so, daß Du jedem Bewerber alle vorhanden Stellen zuordnen willst. Und das ist m. E. nicht gerade sinnvoll.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

ich möchte zu n Bewerbern m Stellen zuordnen. Die Tabellenstruktur ist dafür auch gegeben.
Aber anstatt ich nun das Formular, dass dafür da ist, dass ich eine BN raussuche und eine StN zuordne, nun 5x aufrufen muss, weil ich Bewerber 1 zu Stelle 3,4 und 5 und Bewerber 27 zu Stelle 4 und 149 (nur Testdaten), möchte ich es so haben, dass ich das Formular 2x aufrufe und dann einmal festlege BN 1 und im Endlosform drunter StN 3,4 und 5.

Und das mir das Formular dann in die Tabelle P_S schreibt:
P_S_ID - BN - StN
1 - 1 - 3
2 - 1 - 4
3 - 1 - 5
4 - 27 - 4
5 - 27 - 149

Also für jedes Feld im Endlosform sozusgen ein neuer Datensatz in P_S mit der BN und den verschiedenen Stellen.

MfG
Philipp K.

Hi EPa,

meinst du damit, dass ich eine extra Tabelle erstellen soll, die beim klicken auf „Fertigstellen“ z.B. mit den Daten befüllt wird und dann per VBA an die eigentliche Tabelle angefügt wird?

Wie sieht das mit dem VBA aus?
Pseudocode:
beim Klicken auf Button_Fertig mache:

  1. die BN in Variable a
  2. Anzahl der Einträge im Endlosform auslesen und dann in Variable b
  3. Schleife mit for i = 1 to b DO [Eintrag in Tabelle_blub]
  4. Füge alle Datensätze von Tabelle_blub in Tabelle_echt ein
  5. Lösche alle Datensätze von Tabelle_blub

So müsste das gehn von der Logik her oder?

MfG
Philipp K.

Hallo,

wenn ich das richtig verstehe, dann nimm das HF mit Datenherkunft Bewerber und dem Ufo mit Datenherkunft Bewerberstellen (sorry, habe Deine Tabellennamen nicht mehr im Kopf.)

Im HF wählst Du den Bewerber aus und im UFO ordnest Du nacheinander die Stellen ihm zu.

Anschliessend kommt der nächste/andere Bewerber dran, der ebenfalls seine Stellen zugeordnet bekommt.

Wo ist denn da das Problem?

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hi Franz,

das habe ich schon probiert, aber das klappt nicht, weil das Feld BN vom Typ Autowert ist und wenn ich dann noch die Datenherkunft auf Bewerber setze, dann würde das bedeuten, dass ich dem aktuellen Datensatz von Bewerber eine andere schon bestehende Zahl zuordnen würde.

Dann würde wenn ich das Zuordnungsformular öffne und eine BN auswähle die Datenbank versuchen den Autowert des aktuellen Datensatzes zu überschreiben, also von access her schon unmöglich. Und wenn ich beim öffnen des Formulares direkt auf den neuen Datensatz gehe dann würde mir das Formular ja einen neuen Datensatz in Bewerbertabelle anlegen statt Bewerber_Stellen.
Also habe ich überlegt, dass das HF auch Bewerber_Stellen als Datenherkunft haben müsste. Vielleicht mach ich mal bald ein paar Bilder und verlink die hier^^

MfG
Philipp K.

Hallo,

das habe ich schon probiert, aber das klappt nicht, weil das
Feld BN vom Typ Autowert ist und wenn ich dann noch die
Datenherkunft auf Bewerber setze, dann würde das bedeuten,
dass ich dem aktuellen Datensatz von Bewerber eine andere
schon bestehende Zahl zuordnen würde.

Da machst Du was verkehrt.

Dann würde wenn ich das Zuordnungsformular öffne und eine BN
auswähle die Datenbank versuchen den Autowert des aktuellen
Datensatzes zu überschreiben, also von access her schon
unmöglich. Und wenn ich beim öffnen des Formulares direkt auf
den neuen Datensatz gehe dann würde mir das Formular ja einen
neuen Datensatz in Bewerbertabelle anlegen statt
Bewerber_Stellen.
Also habe ich überlegt, dass das HF auch Bewerber_Stellen als
Datenherkunft haben müsste.

Nein.

Vielleicht mach ich mal bald ein

paar Bilder und verlink die hier^^

Verlink mal Deine DB…

Nochmal zum Prinzip:

Tabelle „tblBewerber“:

BID (Autowert, PK)
B_Nachname (TExt)
B_Vorname (Text)
.
.
.

Tabelle „tblStellen“:

SID (PK, Autowert)
S_Bezeichnung (Text)
.
.
.

Tabelle „tblBewerberstellen“:

BSID (Autowert)
BS_BID (FK, Long)
BS_SID(FK,Long) —> BS_BID + BS_SID als zusammengesetzten Primärschlüssel definieren
BD_BewerbungDatum (Datum/Uhrzeit)
BS_Bemerkung (Text)
.
.

Beziehungen:

S_ID --1:n-- BS_SID; BS_BID --n:1-- BID

Formular mit Datenherkunft zu tblBewerber und darin UFO (Endlosform) mit Datenherkunft tblBewerberstellen. UFO-Verknüpfung über BS_BID und BID.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hi Franz,

genau so habe ich es doch schon die ganze zeit ~.~
Und du schreibst es schon zum 3. mal obohl ich schon 3x gesagt habe, dass es so nicht geht, weil es nicht möglich ist, dass mein Autowert-Feld eine andere BN zugewiesen bekommen kann, weshalb die Datenherkunft vom HF nicht die Bewerbertabelle sein kann.

MfG
Philipp K.

Hallo,

naja, dann versteh ich wiederum nicht, was Du eigentlich machen willst…

(BN= Bewerbernummer) Warum willst Du denn eine Bewerbernummer, die ein Autowert ist, überhaupt manuell bestimmen??

Die BN wird neu vergeben, sobald Du einen neuen Bewerber anlegst. Um die brauchst Du Dich nicht zu kümmern… Es sei denn, daß von woanders (Personalabteilung z. B) jeder Bewerber irgendeine (andere) Nummer verpasst bekommt. Dann darf eben die BN kein Autowert sein, sondern ein normales Feld (ob Zahl, oder Text ist egal) mit Index ohne Duplikate. Aber auch in diesem Fall kann die BN ein Autowert bleiben, es wäre halt ein Zusatzfeld (auch mit Index ohne Duplikate) für die „offizielle“ Bewerbernummer nötig.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

ich möchte keine Nummer dem Autowert-Feld zuordnen…

Ich möchte einfach in einem Formular oben ein Kombifeld haben, dass mir eine BN ausgibt auf Grundlage der Bewerber, die vorhanden sind, anstatt sich der User die Nummer merken und dort eintippen muss.
Darunter soll ein Endlosformular hin, dass Kombifelder besitzt für die Stellen die ich in der Stellentabelle habe, damit man sich ebenfalls die Nummern nicht merken und eintippen muss.

Das ganze soll darauf hinauslaufen, dass ich in der Zwischentabelle Bewerber_Stellen dann die BN immer mit drin habe (hier Fremdschlüssel) und die StN’s die „dazugehören“ (hier als Fremdschlüssel).

Hier die Bilder dazu:
http://www.bilderupload.de/bild.php/47604,tblpsBG6TG…
http://www.bilderupload.de/bild.php/47605,fmlpsECURZ…

Nur möchte ich halt, dass ich dann in dem Formular mehrere StN zuweise und nicht immer nur 1 und dass die Tabelle dann diese Neuanlagen erkennt.
Hast du dir sonst schon die andere Idee zu diesem Thema angeschaut? vielleicht verstehst du es dann besser.

MfG
Philipp K.

Hallo

ich möchte keine Nummer dem Autowert-Feld zuordnen…

Ich möchte einfach in einem Formular oben ein Kombifeld haben,
dass mir eine BN ausgibt auf Grundlage der Bewerber, die
vorhanden sind, anstatt sich der User die Nummer merken und
dort eintippen muss.

OK, dann stelle halt das/die Kombi/s entspr. ein:

Select BN, B_Nachname, B_Vorname from Bewerber order by B_Nachname

Gebundene Spalte:1
Spaltenanzahl: 3
Spaltenbreiten: 0cm;4cm;4cm

Darunter soll ein Endlosformular hin, dass Kombifelder besitzt
für die Stellen die ich in der Stellentabelle habe, damit man
sich ebenfalls die Nummern nicht merken und eintippen muss.

dito:
Select SNr, S_Bezeichnung from Stellen oder by S_Bezeichnung
Gebundene Spalte:1
Spaltenanzahl: 2
Spaltenbreiten: 0cm;6cm

Das ganze soll darauf hinauslaufen, dass ich in der
Zwischentabelle Bewerber_Stellen dann die BN immer mit drin
habe (hier Fremdschlüssel) und die StN’s die „dazugehören“
(hier als Fremdschlüssel).

Nur möchte ich halt, dass ich dann in dem Formular mehrere StN
zuweise und nicht immer nur 1 und dass die Tabelle dann diese
Neuanlagen erkennt.

M. E. ist das ein falscher Formularaufbau und nicht so umgesetzt, wie ich vorgeschlagen habe.

Das Endlosform muß sich auf die Zwischentabelle beziehen und das Hauptform auf die Bewerber-TAbelle…

Ansonsten klappt das nicht!

Hast du dir sonst schon die andere Idee zu diesem Thema
angeschaut? vielleicht verstehst du es dann besser.

Wir verstehen uns miss und Du es falsch… :wink:

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!