Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Benötige Hilfe bei einer von meinem Dozenten gestellten Aufgabe

Begonnen von Rebecca82, April 04, 2015, 21:21:20

⏪ vorheriges - nächstes ⏩

Rebecca82

Hallo zusammen,

ich heiße Rebecca und bin neu hier im Forum. Ich mache eine Umschulung zur Fachinformatikerin in Anwendungsentwicklung. Zur Zeit beschäftigen wir uns etwas mit Access und Datenbanken. Wir haben von unserem Dozenten die Aufgabe bekommen, eine Datenbank in Access zu erstellen. Es soll folgende Entitäten beinhalten: tblVeranstaltungen, tblVeranstaltungsort, tblTeilnehmer.

Ich habe dazu folgendes Diagramm gezeichnet:


Ich habe eine Hilfstabelle (tblTeilnahmen) hinzugefügt, um tblTeilnehmer und tblVeranstaltungen miteinander zu verbinden. Nun habe ich folgende Beziehungen:


Wie man erkennen kann, sollen Teilnehmer an einer oder auch mehreren Veranstaltungen teilnehmen können und eine Veranstaltung soll mehrere Teilnehmer aufnehmen können. Nur darf ein Teilnehmer nicht mehrmals für die selbe Veranstaltung eingetragen werden. Dieses Problem habe ich bereits gelöst.

Nun will ich aber, dass ein Teilnehmer zwar an mehreren Veranstaltungen teilnehmen kann, aber nur wenn diese nicht im gleichen Zeitraum stattfinden. Und genau hier bin ich mit meinem Latein am Ende. Access und Datenbanken sind völlig neu für mich. Daher benötige ich etwas Unterstützung von euch. Ich möchte noch erwähnen, dass ich auch über keinerlei SQL- oder VBA-Kenntnisse verfüge.

Wie könnte ich das umsetzen? Über eure Hilfe würde ich mich wirklich sehr freuen.

Grüße Rebecca

MaggieMay

Hallo Rebecca,

du kannst bei einer Anmeldung im Formular-Ereignis "Vor Aktualisierung" prüfen, ob es bereits eine Anmeldung gibt, deren Termin sich mit dem neuen überschneidet.
Hierzu könnte bspw. eine SQL-Abfrage wie die folgende zum Einsatz kommen:
Select v_id
From tblVeranstaltungen As v, tblVeranstaltungen As g
Where
g.v_ID = Forms![i]formname[/i]!tn_vIDREF
v.v_Start_Datum Between g.v_Start_Datum And g.v_Ende_Datum OR
v.v_Ende_Datum Between g.v_Start_Datum And g.v_Ende_Datum OR
v.v_Start_Datum < g.v_Start_Datum AND v.v_Ende_Datum > g.v_Ende_Datum

(ungetestet!)

Ich hoffe, das hilft dir weiter.
Freundliche Grüße
MaggieMay

Rebecca82

Hallo MaggieMay,

leider hat mir dein Vorschlag nicht wirklich weiter geholfen. Deinen Code-Abschnitt habe ich versucht anzupassen. Allerdings erhielt ich nur Fehlermeldungen. Das liegt eben daran, dass ich mich mit SQL überhaupt nicht auskenne.

Aber kann das für meine billige Datenbank nicht auch ohne SQL-Code o.ä. gelöst werden?
Hier nochmal ein paar Einzelheiten zum Aufbau:

Jeder Veranstaltung kann man ein Veranstaltungsort zuweisen.


In Teilnahmen wählt man Teilnehmer und Veranstaltungen aus:
Und genau an dieser Stelle möchte ich, dass man einem Teilnehmer nicht mehrere Veranstaltungen zuweisen kann, die im selben Zeitraum stattfinden.



Ich habe mir auch gedacht in tblTeilnahmen ein weiteres Feld hinzuzufügen, dass immer automatisch das Datum der ausgewählten Veranstaltung zugewiesen bekommt. Aber auch hier weiß ich nicht, wie ich das umsetzen soll.
Hättet ihr noch irgendwelche Vorschläge für mich?






MaggieMay

ZitatIch habe mir auch gedacht in tblTeilnahmen ein weiteres Feld hinzuzufügen, dass immer automatisch das Datum der ausgewählten Veranstaltung zugewiesen bekommt. Aber auch hier weiß ich nicht, wie ich das umsetzen soll.
Es spielt keine Rolle, ob du das Datum überflüssigerweise noch in einer weiteren Tabelle speicherst, du musst es so oder so an geeigneter Stelle überprüfen.

Du solltest dich also bemühen, meinen Vorschlag zu verstehen bzw. gezielte Rückfragen stellen.

Die von dir geposteten Screenshots bieten hier keinerlei neue Erkenntnisse.
Freundliche Grüße
MaggieMay

ebs17

ZitatAber kann das für meine billige Datenbank nicht auch ohne SQL-Code o.ä. gelöst werden?

Aber klar doch. Dafür wurden Dir Augen und Hände gegeben. Schaust eben alle Datensätze persönlich an und vergleichst und machst dann die resultierenden Aktionen.
Das hat auch schon funktioniert, als es noch keine EDV mit Anwendungen mit entsprechenden Prozeduren und Anweisungen gab.
Mit freundlichem Glück Auf!

Eberhard

Rebecca82

Zitat von: ebs17 am April 06, 2015, 09:51:46
Aber klar doch. Dafür wurden Dir Augen und Hände gegeben. Schaust eben alle Datensätze persönlich an und vergleichst und machst dann die resultierenden Aktionen.
Das hat auch schon funktioniert, als es noch keine EDV mit Anwendungen mit entsprechenden Prozeduren und Anweisungen gab.
Ich weiß was du meinst. Aber wie kann ich das anhand meiner Tabellen umsetzen? Ich weiß nicht wie ich das umsetzen soll. Das Prinzip habe ich ja verstanden. In tblTeilnahmen kann ich in der ersten Spalte einen Teilnehmer auswählen und in der zweiten eine Veranstaltung. Wie kann ich umsetzen, dass wenn ich für den selben Teilnehmer eine weitere Veranstaltung auswähle die im selben Zeitraum stattfindet, mir eine entsprechende Fehelermeldung ausgegeben wird? Wie kann ich das umsetzen (ohne SQL und ohne VBA)? Ihr seid hier Profis. Ich wisst wie die Datenbank aufgebaut ist und wie die Beziehungen zwischen den einzelnen Tabellen sind. Versucht mir das doch bitte anhand eines Umsetzungsbeispiels zu erklären. Anhand meiner Datenbank. Wenn an den Tabellen was angepasst werden muss, auch kein Problem. Sagt mir bitte nur was ich genau tun soll. Ich brauche ein richtiges Beispiel. Dann kommt auch der aha-Effekt.

DF6GL

Hallo,

ZitatIch weiß was du meinst.

Glaube ich nun wieder nicht... :'(  Aber das ist jetzt Nebensache.

Dein DB-Problem haben wir schon verstanden.

Wie kann ich umsetzen, dass wenn ich für den selben Teilnehmer eine weitere Veranstaltung auswähle die im selben Zeitraum stattfindet, mir eine entsprechende Fehelermeldung ausgegeben wird?

Indem Du mit der gezeigten Abfrage (SQL) die Situation (mit VBA-Code) ermittelst und entsprechend reagierst (Code schreibst)


ZitatAnhand meiner Datenbank....Ich brauche ein richtiges Beispiel.

Sollen wir jetzt die DB nachbauen?  Lad das Ding mal hier hoch (vorher komprimiert/repariert und gezippt).

ZitatDas liegt eben daran, dass ich mich mit SQL überhaupt nicht auskenne.
.

Wenn Du Dich mit Datenbanken beschäftigen willst, dann ist unumgänglich, sich zumindest in die Grundlagen/Prinzipien von SQL einzulesen/einzuarbeiten. SQL ist das Interface, mit dem in Datenbanken Daten manipuliert werden.  Das gleiche gilt für VBA, wenn es sich um die Steuerung (bzw. Erweitung) von Access-Anwendungen dreht. (Ansonsten wäre nachzufragen, ob Du nicht vielleicht den falschen Studiengang gewählt hast)

ZitatAber kann das für meine billige Datenbank nicht auch ohne SQL-Code o.ä. gelöst werden?

Nein.    Auch scheinbare "Nicht-SQL"-Funktionen benutzen benutzen SQL, zumindest SQL-Teile (z. B. den Where-Condition-Teil) .     Siehe oben.


Alles in allem kann Dir hier das selbständige Studieren(!) und Erlernen der besagten Grundlagen (wie wär es mit Büchern und/oder Tutorials? www.donkarl.com FAQ, www.dbwiki.net, etc. siehe u. st. Signatur.) nicht  abgenommen werden ..

Dabei käme dann auch der "Aha-Effekt"...  ;)

Rebecca82

Vielen Dank für deine Antwort und für die Links.  :) Dann werde ich mal beginnen mich tiefer in die Materie einzuarbeiten.

Lg Rebecca  ;)

MaggieMay

Freundliche Grüße
MaggieMay