Neuigkeiten:

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

Mobiles Hauptmenü

Berichterstellung aus kombinierten Tabellen

Begonnen von CptObvious, September 09, 2011, 13:05:04

⏪ vorheriges - nächstes ⏩

CptObvious

Hallo Leute.

Ich müsste einen Bericht erstellen, der Daten aus mehreren Tabellen nimmt.

Zum einen wäre da die Tabelle "tbl_Stelle", die einzelne Berufe (ID, Name, Aufgabe_ID) beinhaltet. Nehmen wir als Beispiel den Redakteur.
Dann habe ich eine weitere Tabelle, tbl_Aufgabe_1, für alle möglichen Aufgaben verschiedenster Berufe. Sie beinhaltet:

  • Aufgabe_ID
    Aufgabe_Name
    Aufgabe_2_ID
Zum Beispiel News verfassen.

Die jeweiligen Aufgaben haben noch einen etwas längeren Text/ eine Erklärung. Das mache ich mit einer dritten und letzten Tabelle, tbl_Aufgabe_2:

  • Aufgabe_2_ID
    Aufgabe_2_Text
    Aufgabe_ID
Der Text dazu wäre: Recherche/ Bildersammlung + Layout + Zitate + Verfassung der News.

Oder so was in der Art. :p


Aufgabe_ID aus der tbl_Stelle steht n:1 mit Aufgabe_2_ID aus tbl_Aufgabe_2.
Aufgabe_ID aus der tbl_Aufgabe_2 steht n:1 mit Aufgabe_ID aus tbl_Aufgabe_1.



Jetzt zur Erklärung:
Ich muss das so handhaben, dass man einen Beruf auswählen kann, ihm Aufgaben zuteilen kann und daraus einen Bericht erstellen kann, der in etwa so aussehen sollte:

Beruf: Redakteur
       Aufgabe 1: News
              1.1 Recherche
              1.2 Zitate
              1.3 Bilder
       Aufgabe 2: News-Pflege
              2.1 Alte News ins Archiv verschieben
              2.2 Bilder aktualisieren
              2.3 Auf Fehler prüfen



Die Erklärungen habe ich so in Beziehung gesetzt, dass es passen sollte.

Ich hätte das gerne so :p:
Man kann aus einem Kombinationsfeld auswählen, welchen Beruf man selektieren möchte. Dann soll ausgewählt werden können, welchen "Oberpunkt" man möchte, z. B. s.o. News pflegen. Dann soll man wählen können, welche Unterpunkte er zu machen hat. -> Berichterstellung wie oben.


Wäre da so was möglich? Wie aufwendig ist das? Und die wichtigste Frage: Wie geht das, wenns funktioniert? :)
Oder kann man es noch ganz anders und einfach lösen?

Danke schonmal im voraus.


Grüße Obvious

Jonny

Hallo,
gehen tut fast alles und dein Problem läßt sich sicherlich auch lösen.
Wichtig wäre zuerst das Formular, der Bericht kommt zum Schluß.
Damit das Form aber überhaupt erstellt werden kann mußt du erstmal erklären wie deine Tabellen
verknüpft sind (Primärkey und Fremdkeys)

Gruß

Johann

database

Hallo,

deiner Schilderung ist ein Datenmodell zu entnehmen, dass nicht ganz passt.

Die Tabelle tblStelle darf keinen Fremdschlüssel einer Aufgabe enthalten!
Vielmehr müssen die Aufgaben mit der Stelle in Beziehung stehen und zwar mittels Zwischentabelle da für eine Stelle mehrere Aufgaben definiert werden können.
Jede Kombination Stelle/Aufgabe benötigt dann einen Bezug zu Tätigkeiten - hier ebenfalls über eine Zwischentabelle da für jede Kombination Stelle/Aufgabe mehrere Tätigkeiten definert werden können.
Das bedeutet, dassw du mit tblStelle, tblAufgaben, tblTaetigkeiten, tblStelleAufgaben und tblAufgabenTaetigkeiten das Auslangen finden müsstest.
Die Aufteilung der Tabellen in Aufgabe1 und Aufgabe2 ist einer Denormalisierung des Datenmodells gleichzusetzen und daher zu unterlassen.


CptObvious

Hallo,

erstmal danke für die zügigen Antworten. :)

http(:)//img600(.)imageshack(.)us/img600/1668/xycp(.)jpg
Aufgabe_ID bei tbl_Stelle habe ich erstellt, weil ich sonst keinen Bericht mit dem Assisstenten hätte erstellen können.


Man wählt zuerst den Beruf, dann die Aufgabe_ID von tbl_Aufgabe_1. Also den Oberpunkt "News". Dann aktualisiert sich ein weiteres Feld, das seine Informationen von Aufgabe_2_Text bezieht. Dort stehen dann die Unterpunkte von "News". Da kann man dann entweder >=1 auswählen. Wenn man den Oberpunkt zu "News pflegen" ändert, soll sich das untere Feld wieder aktualisieren und dann die Unterpunkte von "News pflegen" anzeigen, sodass man da wieder was auswählen kann. Und das ganze geht so lange weiter, wie viele Oberpunkte es halt gibt, oder man auswählen möchte.

@database, die Aufgaben sind aber unabhängig vom Beruf.

Ich habe eine Matrix zur Veranschaulichung erstellt:

http(:)//img710(.) imageshack(.)us/img710/1935/asdacnp(.)jpg

database

#4
Hallo,

ZitatAufgabe_ID bei tbl_Stelle habe ich erstellt, weil ich sonst keinen Bericht mit dem Assisstenten hätte erstellen können
Wenn das Datenmodell stimmig ist geht das schon - mit Sicherheit.
Wie gesagt - das Datenmodell ist nicht richtig aufgebaut.

Zitatdie Aufgaben sind aber unabhängig vom Beruf.
Stimmt, daher habe ich auch die Lösung über die Zwischentabelle vorgeschlagen.
Damit hast du ein Tabelle zur Verfügung, in der du JEDEN Beruf mit JEDER beliebigen Aufgabe kombinieren kannst.
Die Beziehung zwischen Beruf und Aufgabe besteht dann ausschließlich nach deiner Auswahl - was nichts an der Beziehung
der beteiligten Tabellen ändert, da besteht technisch gesehen schon ein großer Unterschied.

Dass du abhängige Kombifelder verwenden willst ist ja gut und schön und überhaupt gar nicht verwerflich.
Damit das auch funktioniert muss das Datenmodell nicht extra denormalisiert werden sondern die Schlüsselspalten an der richtigen Stelle existieren.

Wenn du Bilder hochladen willst, solltest du dich als Benutzer des Forums registrieren - das geht schnell und kostet nichts.
Du ersparst uns dadurch auch nicht funktionierende Links und die lästigen Downloadpages  ;)
Ausserdem hast du durch die Registrierung Zugriff auf alle Ressourchen des Forums - auch kein Fehler  ;D

CptObvious

http://img600.imageshack.us/img600/1668/xycp.jpg
http://img710.imageshack.us/img710/1935/asdacnp.jpg


Hallo. :)
Da bin ich wieder und das registriert.

Habe oben nochmal die Links gepostet.

@database, kannst du mir erklären wieso ich 5 Tabellen brauche?
tbl_Stelle <- ID und Berufname, oder?
tbl_Aufgabe <- Aufgaben ID und Aufgabenname, wie oben?
tbl_Tätigkeiten <- Erklärung ID und Erklärung-Text
Diese 3 sind mir klar, nur wozu brauche ich tbl_StelleAufgaben und tbl_AufgabenTätigkeiten?

Wie setze ich die Beziehungen?


Tut mir Leid, dass ich dir das so aufdringe, aber ich bin jetzt nicht so der Access pro. :/

database

Hallo,

wie gesagt ... als registrierter Benutzer kannst du Bilder in den erlaubten Formaten hier direkt im Forum hochladen und würdest uns den Zugriff auf irgendwelche Up-/Downloadpages ersparen.

Zitattbl_Tätigkeiten <- Erklärung ID und Erklärung-Text
Warum nicht Taetigkeit_ID und TaetigkeitBezeichnung ?
IN SPALTENNAMEN UNBEDINGT SONDERZEICHEN, UMLAUTE, RESEVIERTE WÖRTER UND LEERZEICHEN VERMEIDEN! Ein Minus-Zeichen ist ein Sonderzeichen
ZitatDiese 3 sind mir klar, nur wozu brauche ich tbl_StelleAufgaben und tbl_AufgabenTätigkeiten
Da es m.E. sein KÖNNTE, dass zu verschiedenen Stellen gleiche Aufgaben existieren und unterschiedlichen Aufgaben gleiche Tätigkeiten zuordenbar sind, stellt dieses so genannte m:n - Beziehungen dar.
Da man mit solchen Beziehungen nicht arbeiten kann, muss eine m:n - Beziehung in 2x 1:n aufgelöst werden.

Die Tabellen würden für diese Aufgabe dann wie folgt aufgebaut sein:

tbl_StelleAufgabe
-----------------------
StAufg_ID        AutoWert ----> Primärschlüssel (optional)
Stelle_F           Zahl / Long Integer  ----> Fremdschlüssel zur tbl_Stelle
Aufgabe_F       Zahl / Long Integer  ----> Fremdschlüssel zur tbl_Aufgabe


tbl_AufgabeTaetigkeit
----------------------------
AufTaet_ID       AutoWert  ----> Primärschlüssel (optional)
Aufgabe_F        Zahl / Long Integer  ----> Fremdschlüssel zur Tabelle tbl_Aufgabe
Taetigkeit_F     Zahl / Long Integer   ----> Fremdschlüssel zur Tabelle tbl_Taetigkeit


Da ich nun davon ausgehe, dass du mit relationalem Datenbankdesign nicht sonderlich vertraut bist (was ja keine Schande darstellt!) empfehle ich dir hierzu:

http://www.dbwiki.net/wiki/Access_Anf%C3%A4nger:_Grundlagen_des_Datenbank-Designs

sowie die Links #1 und #1a in der Signatur von DF6GL eingehend durchzuackern!

HTH

CptObvious

Hallo,

danke database, du warst eine riesen Hilfe.

Hab jetzt aber noch weitere Fragen :p

Ist es möglich, unter dem Formular einen Button zu erstellen, der aus dem im Formular ausgewählten, einen Bericht erstellt? Möglichst ohne das selbst in vb zu schreiben.

database

Hallo,

ZitatMöglichst ohne das selbst in vb zu schreiben
Es gibt Mittel und Wege - mit Makros, wovon ich aber nur abraten kann.

Ich würde mich eher dahinterklemmen und mich mit VBA zumindest den Grundlagen auseinandersetzen.
Um mit Access wirklich effizient entwickeln zu können kommst du du früher oder später ohne VBA nicht aus.

CptObvious

Hallo, ich kenn mich relativ gut mit C und PHP aus, denke dass ich das irgendwie hinbekomme.

Kennst du eine Seite, die halbwegs so ein Thema anspricht, oder könntest du mir eine Hilfestellung bieten, bitte?



Riesen danke nochmal.  :D

database

Hallo,

sieh mal in den Links #2 und #4 in meiner Signatur nach ;)