Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Aus Formular heraus 2 Tabellen befüllen

Begonnen von derilzemer, November 26, 2016, 17:21:16

⏪ vorheriges - nächstes ⏩

derilzemer

Hallo,
ich habe ein "Hauptformular" (frmErfassung), womit ich eine Tabelle befülle (tblSpiele). Nun habe im Formualr eine Erweiterung um 2 Felder, vorgenommen, welche aufgrund der Logik aber sich in eine eigene Tabelle befinden (tblIdentKartensatz). Diese Tabelle hat die Felder "IdentKartensatzID, Spielnummer, SpielID_F und Verlag". Das Feld Verlag ist ein Kombi, Spielnummer ein Textfeld. Für das Kombi habe ich als Datensatzherkunft eine eine qry hinterlegt. Doch wie löse ich das mit dem Textfeld? Ich habe jetzt nicht adhoc was gefunden, was mir solch eine Situation als Beispiel aufzeigt, im Gegenteil ich lese dass man so etwas nicht macht bzw. es Problem gibt. Geht das überhaupt, wenn ja, wer kann mir da ein wenig Hilfestellung bieten?

mfG
A. Müller
Grüße und Dank im voraus
Andreas

DF6GL

Hallo,



http://www.donkarl.com/?FAQ4.15

dürfte weiterhelfen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

#2
Hallo,
Deine DB ist mir ja nicht unbekannt  ;D, daher habe ich da jetzt ein Verständnisproblem.

Kann es zu der Tabelle tblSpiele zu einem Spiel mehrere Datensätze in der Tabelle tblIdentKartensatz geben ?

Und wieso gibt es in dieser Tabelle noch mal die SpielNr und den Verlag als weitere Felder ? Die SpielNr steht doch bereits in der Tabelle tblSpiele und der Verlag ist über die Serien und den zur Serie gehörenden Verlag auch eindeutig bestimmt.
Und wenn, müsste für den Verlag (das Kombi) dieser als Fremdschlüssel geschrieben werden und nicht als Klartext, denn es gibt je eine Tabelle für den Verlag.
Gruß Klaus

derilzemer

Hallo Klaus,
ja es kann zu mehreren Einträgen für ein Spiel in der Tabelle tblIdentKartensatz kommen.

ZitatUnd wieso gibt es in dieser Tabelle noch mal die SpielNr und den Verlag als weitere Felder ? Die SpielNr steht doch bereits in der Tabelle tblSpiele und der Verlag ist über die Serien und den zur Serie gehörenden Verlag auch eindeutig bestimmt.
Und wenn, müsste für den Verlag (das Kombi) dieser als Fremdschlüssel geschrieben werden und nicht als Klartext, denn es gibt je eine Tabelle für den Verlag.
Die Feldbezeichnung kann x beliebig sein. Da es sich aber um eine Spielnummer handelt, habe ich diesen Namen "wieder" gewählt. Aber den kann ich jederzeit anpassen oder umbenennen. Dass ich den Verlag noch einmal verwendet habe liegt daran, dass ich ja den Verlag auswählen muss, von dem es ein identisches Spiel (Kartensatz) gibt. Da kann ich das aktuelle Feld Verlag nicht verwenden. Das aktuelle Feld hat z.B. Ass als Verlag und in dem neuen Feld in der Tabelle tblIdentKartensatz muss ich ja einen anderen Verlag auswählen können, z.B. Bielefelder. Von daher kann ich das nicht verwenden.
Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
ich verstehe es immer noch nicht, ist das ein identisches Spiel mit einer anderen SpielNr und einem anderen Verlag ?
Und ist dieses Spiel dann nicht in der Tabelle tblSpiele erfasst, bzw. müsste dort erfasst werden ?
In Deiner Datenbank willst Du doch alle Spiele komplett speichern, auch Duplikate wenn ich mich recht erinnere.
Bitte erkläre den Sinn mal genauer.

Und wie gesagt, das Kombifeld für den Verlag müsste aber das Schlüsselfeld des Verlags speichern und nicht den Verlag als Klartext.
Gruß Klaus

derilzemer

Hi,
der Kartensatz (die Quartette des Spiels), sind identisch mit dem Kartensatz eines anderen Spiels von einem anderen Verlag.
Originalspiel Nr. 58222 Verlag F.X. --> Nr. 1774 Verlag Tiger. Beide Spiele sind schon erfasst in der Tabelle Spiele. Ich will praktisch einen Verweis/Hinweis im Datensatz erzeugen von 58222 Verlag F.X. zum Spiel Nr. 1774 Verlag Tiger mit dem identischen Kartensatz, das vice versa. Das mit dem Kombifeld habe ich verstanden und würde ich so auch machen.

Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

#6
Hallo,
Du brauchst nur eine Tabelle in der die SpieleID als Fremdschlüssel 2x aufgenommen wird. Dann kannst Du einfach die Schlüsselfelder kombinieren.
Also einfach 2 Felder SpielID_F und DupSpiel_ID_F. Mehr braucht es nicht. Die Spieletabelle bleibt unverändert. Du kannst so jedes erfasste Spiel mit jedem anderen Spiel ohne weitere Felder in Zusammenhang bringen.
In einem Fremdschlüsselfeld 58222 und im anderen 1774. Die Verlage sind ja im Originaldatensatz erfasst.
Dann weißt Du welches Spiel doppelt oder mehrfach vorhanden ist.

Im Beziehungsbild sieht das dann so aus (ich habe noch die Version 9 der DB).

Die 2 Spieletabelle ist nur virtuell vorhanden. Access ergänzt die zum 2.x aufgenommene Tabelle mit _1.
Gruß Klaus

derilzemer

Hallo Klaus,
hmm, da habe ich mal wieder ein Verständnis Problem. Das bedeutet, die Tabelle sollte so aussehen (siehe Bild).
Um aber die Beziehung wie bei dir im Bild herzustellen, muss ich die Spieletabelle in den Beziehungen 2mal adden, oder?
Hab da gerade ein kleines Delta was das Brain angeht :-(. Ich teste das mal und schau, ob ich damit klar komme.
Aktuell bin ich bei Version 2.0.0 :). Kleinigkeiten eben noch. Hab da noch so eine weitere Kleinigkeit, welche ich aber wohl in einem eigenen Thread fragen muss.

Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
Zitatmuss ich die Spieletabelle in den Beziehungen 2mal adden, oder?
ja, das ist richtig. Habe ich oben auch geschrieben.
Du musst nur aufpassen, wenn Du dann eine Abfrage machst, mit der Duplikattabelle und den Spieletabellen. Die von Access erstelle Verknüpfung in der Abfrage ist falsch. Da sind 2 Verknüpfungen drin vom PS zum FS. Eine wieder löschen, die 2. Tabelle aufnehmen und dann die Verknüpfung machen wie im Beziehungsbild.

Die Abfrage sieht dann so aus wie im Bild. Das die 2.Verknüpfung ohne RI angeziegt wird ist normal.
Das Bild ist nicht das Beziehungsbild, sondern das Bild der Abfrage.
Gruß Klaus

derilzemer

Hallo Klaus,
ich habe mal gebastelt, aber irgendwie bin ich mal wieder falsch unterwegs :(. Ich habe die Tabelle tblIdentQuartette erstellt,
IdentQuartettID (Felddatentyp AutoWert) PrimKey
SpielID_F (Felddatentyp Zahl)
IdentQuartettID_F (Felddatentyp Zahl)
Danach habe ich in den DB Beziehungen gemäß Bild die Tabellen entsprechend eingebunden. Die Abfrage ist nun das Dilemma, was mich mal wieder vor Grenzen stellt. Ich will ja ein UFO erstellen im Erfassungsformular, darin via 2 Kombifelder die Spielnummer und den Verlag vom identischen Quartett auswählen. Dazu noch ein Feld für das Erscheinungsjahr. Aufgrund dessen dachte ich müsste die doch so aussehen, was aber nicht geht. Im Bild2 ist die Abfrage. Hier der SQL davon

SELECT tblIdentQuartette.IdentQuartettID, tblSpiele_1.SpielNr, tblSpiele_1.VerlagID_F, tblSpiele_1.Ausgabejahr
FROM tblSpiele INNER JOIN ((tblIdentQuartette INNER JOIN tblSpiele AS tblSpiele_1 ON tblIdentQuartette.IdentQuartettID_F = tblSpiele_1.SpielID) INNER JOIN tblVerlag ON tblSpiele_1.VerlagID_F = tblVerlag.VerlagID) ON tblSpiele.SpielID = tblIdentQuartette.SpielID_F;


Nun stehe ich da wieder wie ein Ochs vorm Berg :(

Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

#10
Hallo,
ZitatIch will ja ein UFO erstellen im Erfassungsformular, darin via 2 Kombifelder die Spielnummer und den Verlag vom identischen Quartett auswählen. Dazu noch ein Feld für das Erscheinungsjahr.
Das ist doch überflüssig. Das identische Spiel ist doch auch in der Spieletabelle, also ist doch alles zum Spiel bekannt, wozu willst Du den Verlag und das Erscheinungsjahr noch mal extra auswählen ? Das macht doch keinen Sinn.
Siehe Zitat von Dir:
ZitatOriginalspiel Nr. 58222 Verlag F.X. --> Nr. 1774 Verlag Tiger. Beide Spiele sind schon erfasst in der Tabelle Spiele.
Die Beziehung von der virtuellen Tabelle (..._1) zum Verlag muss raus.

Ein Ufo das über die SpielID und SpielID_F verknüpft ist. Die IdentQuartettID_F wird per Kombi ausgewählt fertig, mehr brauchst Du nicht.

Zum Verständnis machst Du mal folgendes :
- In die Tabelle tblIdentQuartette 2 IDs aufnehmen (also einen vollständigen Datensatz).
Das nachfolgende bezieht sich ausschließlich auf die Abfrage:
- Tabelle tblVerlag wieder entfernen
- Dann diese Tabelle wieder neu aufnehmen, es ist dann eine vollständige Verknüpfung mit RI von tblSpiele zu tblVerlag zu sehen.
- jetzt noch mal die Tabelle tblVerlag dazu, es entsteht eine Tabelle tblVerlag_1
- falsche Verknüpfung löschen (wie bei der Duplikattabelle)
- neue Verknüpfung erstellen von VerlagID der Tabelle tblVerlag_1 zu VerlagID_F zur Tabelle tblSpiele_1
- jetzt das Feld Verlag der Tabelle tblVerlag in die Abfrage ziehen
- dann das Feld Verlag der Tabelle tblVerlag_1 in die Abfrage ziehen.
- das Gleiche auch für das Erscheinungsjahr/Ausgabejahr nur aus den beiden Spieletabellen.

Jetzt abfrage ansehen.


Gruß Klaus

derilzemer

Hallo Klaus,
that works :(. Jo, da muss ich wirklich kein UFO machen, kann es über das normale Erfassungsformular lösen. Mir fehlt da einfach das lösen über Logik, da hänge ich immer wieder, wird wohl auch nicht mehr wirklich besser werden. Ich bau das jetzt mal im Formular ein. Sollte noch mal was sein, würde ich mir erlauben da noch einmal nachzuhaken. Danke und Gruß

Andreas
Grüße und Dank im voraus
Andreas

derilzemer

Hi,
ein Nachtrag noch. Ich dachte deswegen an ein UFO, weil es eben auch mehrere identische Quartette geben kann. Von daher
wäre eine Lösung über ein Endlosformular angedacht. So muss ich bei mehreren Identischen Quartetten n Felder im Formular definieren, oder sehe ich das etwa falsch?

Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
natürlich musst Du ein Ufo machen, habe ich oben auch extra geschrieben.
Zitat von: MzKlMuEin Ufo das über die SpielID und SpielID_F verknüpft ist. Die IdentQuartettID_F wird per Kombi ausgewählt fertig, mehr brauchst Du nicht.
Mit n Feldern im Formular ist das nicht möglich, dass muss ein Ufo als Endlosformular sein.
Du hast ja nur 2 Felder zum ausfüllen, eins geht automatisch und eines wählst Du aus. Wo willst Du da n Felder hernehmen, das siehst Du in der Tat falsch.
Gruß Klaus

derilzemer

Hallo Klaus,
das mit n-Felder meinte ich nur, wenn ich kein Ufo nehmen würde. Dann hätte ich im HF einige Felder definieren müssen, was ja keinen Sinn macht. Ich hatte deine Aussage "überflüssig" auch auf das UFO bezogen. Also alles gut erst mal. Leider habe ich jetzt ein Problem festgestellt (vermute mal du wirst mich schlagen .... du wohnst zum Glück ein wenig weg).
Die Abfrage sieht aktuell wie auf dem Bild aus. Führe ich die Abfrage aus, dann habe ich immer nur den angelegten Datensatz zur Ansicht.
Ich muss ja später im Ufo aber die Möglichkeit haben, dass ich aus allen SpielNr in tblSpiele eine auswählen kann. Ergo denke ich mal, die Abfrage ist doch so wie ich sie gemacht habe falsch, oder?

Gruß Andreas


Grüße und Dank im voraus
Andreas