collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 118
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14472
  • stats Beiträge insgesamt: 72212
  • stats Themen insgesamt: 9746
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank  (Gelesen 6792 mal)

Offline Muven

  • Newbie
  • Beiträge: 5
Guten Tag,
ich sitze hier schon seit Monaten an einem Problem und bekomme es nicht gelöst.
Nun ist die Zeit abgelaufen und der Chef will Ergebnisse sehen.

Es geht wie so oft um eine Datenbank. Die Datenbank an sich ist fertig. Nun geht es aber um die Dateneingabe. Bei der Erstellung eines Datensatzes muss eine von rund 300 Tätigkeiten ausgewählt werden. Da niemand alle diese auswendig kennt, gibt es eine Zuordnung zu Kategorien in drei Ebenen:
Oberste Kategorie = root
Unterkategorie = knot
Eigentliche Tätigkeit = class
Gelöst ist dies mit drei Datenbanken: root, knot und class, welche die jeweiligen Tätigkeiten enthalten inklusive der Zuordnung der jeweils übergeordneten Kategorie, sofern vorhanden.
Beispiel:
Root:
Root   Bezeichnung
A   Beruf
B   Schule
C   Privat

Knot:
Root   knot   Bezeichnung
A   A   First-Level-Support
A   B   Second-Level-Support
A   C   Verwaltung
B   A   Unterricht
B   B   unbetreute Vorgänge
B   C   Freiwillige Aufgaben
C   A   Hobby
C   B   Haushalt
C   C   Kontakte

Class:
Root   knot   class   Bezeichnung
A   A   A   Telefonieren
A   A   B   Aufnahme von Störungen
A   A   C   Beseitigung von Missverständnissen
A   B   A   Beseitigung von Störungen
A   B   B   Schulung
A   B   C   Kaffee trinken
A   C   A   Bestellanforderungen
A   C   B   Akten ordnen
A   C   C   Kaffee kochen
B   A   A   Deutsch
B   A   B   Englisch
B   A   C   Mathe
B   B   A   Hausaufgaben
B   B   B   Nachholen versäumten Stoffs
B   B   C   für Klausuren lernen
B   C   A   Bibliothek verwalten
B   C   B   Schulhof säubern
B   C   C   Rektors Auto(s) waschen
C   A   A   Fernsehen
C   A   B   Joggen
C   A   C   Flirten
C   B   A   Einkaufen
C   B   B   Putzen
C   B   C   Tiere füttern
C   C   A   Bier trinken
C   C   B   Ins Kino gehen
C   C   C   Essen gehen

Ich denke damit dürfte das Prinzip klar sein.
Nun gibt es eine weitere Datenbank mit dem passenden Namen „Daten“. Hier kann man nun z.B. das Datum und die insgesamt mit der Tätigkeit verbrachte Zeit eintragen. Die Tätigkeit soll ausgewählt werden. Es geht dabei um ein Berichtsheft, bei dem alle Tätigkeiten mit bestimmtet Zeit abgearbeitet werden sollen. Und hier taucht das Problem auf: Wähle ich in einem Feld die eigentliche Tätigkeit „A“ aus, dann ist dieses Feld bei der Auslese nicht mehr eindeutig. Außerdem schmeißt er mir die ewig lange Liste aller Tätigkeiten um die Ohren. So soll nun eine mehrstufige Auswahl her, in welcher man erst root, dann knot und schließlich davon abhängig class auswählt. Also brauche ich schonmal drei Felder in "Daten". Das Ganze soll dann auch noch in einem Formular geschehen, sozusagen als Datenfüllmaske. Dies hatte ich ursprünglich mit von Formularfeldern-abhängigen Abfragen gelöst. Aber sobald man Daten in der eigentlichen Datenbank korrigieren möchte, fliegt einem das Ding um die Ohren, da er das Formularfeld nicht findet oder in diesem gerade was Falsches ausgewählt ist.
Ein (weiterer) Vorgesetzter schlug mir eine Lösung mit Unterformularen vor, doch daran bin ich gescheitert.

Super wäre, wenn die Auswahl auch in die andere Richtung funktionieren würde, aber das ist eigentlich unwichtig.

Mit Access an sich habe ich schon etwas Erfahrung, aber mit dem SQL-Code der dahinter steht bin ich nicht vertraut. Sollte eine Lösung SQL-Code erfordern (wovon ich mittlerweile ausgehe), benötige ich eben eine kurze Anleitung mit wo, was, wie und wieso.

Also, vielen Dank an jeden, der sich die Mühe gemacht hat und sich nun durch diesen Text gequält hat und noch viel mehr Dank an alle, die auch nur versuchen mich vor meinem Chef zu retten ; )

Mit freundlichen Grüßen, Marvin

(bei Bedarf würde ich eine Beispieldatenbank anfertigen)
Mit freundlichen Grüßen,
Marvin aus dem Nordwesten

Auszubildender Fachinformatiker - Systemintegration
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #1 am: August 31, 2012, 20:24:50 »
Hallo,

die Tabellen (Datenbanken?) sind nicht normalisiert..



"ich sitze hier schon seit Monaten an einem Problem "  "bei Bedarf würde ich eine Beispieldatenbank anfertigen" 

und hast noch gar keine Datenbank?


tu das erst mal nach folgender Vorgabe:

tblRoot
RootID (PK, Autowert)
Root_Bez (Text)


tblKnot
KnotID (PK,Autowert)
Knot_Bez (Text)


tblClass
ClassID (PK, Autowert)
Class_RootID (Zahl, Long FK für tblRoot.RootID)
Class_KnotID (Zahl,Long FK für tblKnot.KnotID)
Class_Bez (Text)



tblAufwand
AWID (Pk, Autowert)
AW_ClassID (Zahl, FK für tblClass.ClassID)
Aw_Datum (Datum/Uhrzeit)
AW_Zeit (Datum/Uhrzeit, oder auch Zahl, Double im Fall von IndustrieStunden  (3,5 h == 3:30 )
AW_Notiz (Memo)



Alle Tabellen über die Schlüsselfelder 1:n verknüpft

Offline Muven

  • Newbie
  • Beiträge: 5
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #2 am: September 01, 2012, 15:23:18 »
Vielen Dank schonmal für die schnelle Antwort.
Eine Datenbank habe ich natürlich bereits angefertigt.
Da diese aber Daten enthält, die meiner Meinung nach nicht unbedingt den Betreib verlassen sollten, habe ich diese nicht mit hochgeladen.
Außerdem möchte ich das hier gelernte ja möglichst selbst auf diese übertragen ; )

Eine Beispieldatenbank habe ich hoffentlich korrekt nach deinen Vorgaben angefertigt und hiermit hochgeladen.

Mit freundlichen Grüßen, Marvin

[Anhang gelöscht durch Administrator]
Mit freundlichen Grüßen,
Marvin aus dem Nordwesten

Auszubildender Fachinformatiker - Systemintegration
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #3 am: September 01, 2012, 20:39:04 »
Hallo Muven,
Wo liegt denn jetzt noch das Problem?
Info zu abhängigen Kombifeldern findest Du hier
http://www.donkarl.com?FAQ4.36
hth

@Franz
Habe in der Anlage das Beispiel als .mdb (A2K)
eingefügt, falls Du Dir's anschauen möchtest.
gruss ekkehard

[Anhang gelöscht durch Administrator]
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Muven

  • Newbie
  • Beiträge: 5
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #4 am: September 01, 2012, 21:08:16 »
Guten Tag,
Die Tabelle tblAufwand soll mit Hilfe von einem Formular gefüllt werden, indem man die Daten einträgt.
Hier soll AW_ClassID ausgewählt werden. Die Liste die er ausspuckt ist mir so lang (zumindest in der Originaldatenbank)
So soll die Auswahl in drei Schritten geschehen. Erst soll man Root, dann Knot und dann schließlich Class auswählen,
sodass im erstem Kombinationsfeld Root alle Datensätze aus tblRoot aufgelistet werden, davon abhängig dann im zweitem Kombinationsfeld Knot alle Datensätze aus tblKnot angezeitg werden, die mit dem zuvor ausgewähltem Root zusammen hängen. Und zum Schluss soll man in drittem Kombinationsfeld Class dann die Datensätze aufgelistet bekommen, welche mit Knot und somit auch mit Root zusammenhängen. Der hier ausgewählte Datensatz soll in tblAufwand gespeichert werden.

Die mit zugesendete Variante hatte ich zunächst auch so umgesetzt, wie im erstem Beitrag beschrieben, allerdings wiederspricht diese dem 2. Beitrag.

Vielen Dank für eure Zeit,

MFG Marvin

Edit: Vielleicht noch wichtig: Ich verwende Access 2007
« Letzte Änderung: September 01, 2012, 21:11:42 von Muven »
Mit freundlichen Grüßen,
Marvin aus dem Nordwesten

Auszubildender Fachinformatiker - Systemintegration
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #5 am: September 01, 2012, 22:08:43 »
Hallo Marvin,
Ich schau's mir morgen noch mal an,
jetzt hab' ich keine Lust mehr.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #6 am: September 02, 2012, 09:41:41 »
Hallo,

-- Erstell  ein Einzelform mit Datenherkunft zu tblClass  ("frmClass")
-- Erstell ein Endlosform mit Datenherkunft zu tblAufwand ("frmAufwand")
-- Bau "frmAufwand"  mittels UFO-Steuerelement  in "frmClass" (im Detailbereich) ein. Verknüpfe das UFO über die Schlüsselfelder ("ClassID" und "AW_ClassID")
--Führe die Formular-Felder "Class_RootID" und "Class_KnotID" als Kombifelder aus, die ihre Listenfelddaten aus "tblRoot", bzw. "tblKnot" beziehen


D. h., im Hauptform ("frmClass")  werden für einen bestimmten "Class"-Datensatz die dazugehörenden (ID-) Werte aus tblRoot und tblKnot ausgewählt.
Im UFO ist dann der "Aufwand" ohne weiteres Zutun für diesen "Class"-Datensatz bearbeitbar.  Die angesprochene Vorgehensweise mit der Auswahlreihenfolge über die Kombis  ist eher ein Holzweg.


(Das Ganze gilt nur, wenn die Datenzusammenhänge in der Beispiel-DB korrekt sind, d. h. der Realität entsprechen. Das Feld "Knot_RootID" hat in Tabelle tblKnot nichts zu suchen...)


Die Access-Version ist hier (beim Tabellendesign) nicht so wichtig, wobei die in A2007 möglichen Mehrfach-Felder eher als "Geschmacksverirrung" zu sehen sind  ;)

[Anhang gelöscht durch Administrator]

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #7 am: September 02, 2012, 18:46:44 »
Hallo,
@Franz
Zitat
Das Feld "Knot_RootID" hat in Tabelle tblKnot nichts zu suchen...)
Das ist mir beim rumtesten da rein gerutscht. Ich war da irgendwie auf diese
3-stufige Abhängigkeit fixiert  :-[
@Marvin
Mit Franz' Beschreibung solltest Du das jetzt aber hin bekomme; - falls nicht,
melde Dich.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Muven

  • Newbie
  • Beiträge: 5
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #8 am: September 02, 2012, 20:35:06 »
Hi und vielen Dank für die Beschreibung,

allerdings scheine ich beim 4. Punkt was falsch zu machen ....
Wenn ich nun mit "frmClass" arbeite und in den Feldern Class_RootID und Class_KnotID etwas auswähle,
verändere ich damit den Datensatz mit der ID 1 in der Tabelle "tblClass".

Nochmals zur Mehrstufigen Auswahl: In "tblClass" befindet sich in der Originaldatenbank ungefähr 300 Datensätze,
in "tblKnot" ungefähr 40 und in "tblRoot" sind es um die 10.
Das ganze Bezieht sich auf einen Ausbildungsplan. Die Datenbank an sich dient als Berichtsheft.
Den Fortschritt der gesamten Ausbildung und in den einzelnen knoten soll errechnet werden.
Das habe ich alles hinbekommen. Es fehlt nur die Datenfüllmaske.

Ich poste hier das Ergebnis am Beispiel, sollte ich das heute Abend doch noch hinbekommen.
Die fehlerhafte Version befindet sich im Anhang.

MFG Marvin

[Anhang gelöscht durch Administrator]
Mit freundlichen Grüßen,
Marvin aus dem Nordwesten

Auszubildender Fachinformatiker - Systemintegration
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #9 am: September 03, 2012, 14:45:18 »
Hallo,


-- die Formulare sind nicht so aufgebaut, wie ich es beschrieben habe...

-- die Tabellenverknüpfungen sind vermutlich so nicht zu gebrauchen, wie sie definiert sind (Typ2 anstatt Typ1)

Weiterhin solltest Du zunächst wie vorher angesprochen, die Stimmigkeit der Datenbeziehungen in der DB prüfen. Erst wenn die ok sind, ist es sinnvoll, Formulare zu entwerfen.


Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #10 am: September 03, 2012, 21:59:27 »
Hallo Marvin,
Anbei Beispiel so wie von Franz vorgeschlagen (hoffe ich jedenfalls).
Änderungen:
Beziehungen auf Typ 1 umgestellt und RI auf Aktualisierung und Löschweitergabe erweitert.
Controls (ausser Label) neu benamst (<> Tabellenfelder)
RowSource des Kombis im UFo angepasst (filtert jetzt nach den Kombis im HFo)
Aktualisierung dieses Kombi im HFo-Ereignis "Beim Anzeigen" (Form_Current) eingefügt.
@Franz
Ist das jetzt so, wie Du es vorgeschlagen hast?
gruss ekkehard

[Anhang gelöscht durch Administrator]
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Muven

  • Newbie
  • Beiträge: 5
Re: Mehrstufige Auswahl im Formular mit Speicherung dieser in Datenbank
« Antwort #11 am: September 11, 2012, 16:43:38 »
Guten Tag,

vielen Dank nochmal für die Hilfe,
mit euren Methoden habe ich jetzt eine Lösung entwickelt, die den Anforderungen gerecht wird.

Ich habe nun die Formulare frmRoot, frmKnot, frmClass und frmAuswahl.
Selbstverständlich bezieht sich jedes Formular auf die zugehörige Datenbank.
Außerdem habe ich in den Formularen frmRoot und frmKnot jeweils ein Kombinationsfeld mit der Option "Kombinationsfeld zur Suche eines Datensatzes" erstellt. Hier lag der Fehler.
Das frmRoot habe ich dann von allen unnötigen Feldern befreit, sodass nur noch das Kombinationsfeld und das Unterformular frmKnot angezeigt werden. Im Kombinationsfeld im Formular Knot habe ich den SQL-String angepasst, sodass er nur Datensätze aus tblKnot raussucht, die im Feld "root" den identischen Wert wie das 1. Kombinationsfeld enthalten. Dieses Kombinationsfeld lasse ich bei Berührung aktualisieren.
So ist in tblKnot eine Spalte "root" nötig, die zeigt, welchem "root" der "knot" zugeordnet ist.
Die Abfrage von Formularfeldern funktioniert aber nur von geladenen Formularen. Da ein Unterformular anscheint nicht geladen ist, funktioniert eine solche Abfrage also nur vom Kombinationsfeld im frmRoot.
Nachdem auch frmKnot von unnötigen Feldern befreit ist, habe ich auch hier ein Unterformular mit Bezug auf frmClass erstellt.
Um in frmClass den Korrekten Datensatz auszuwählen, habe ich zwei Schaltflächen eingefügt, mit welchen man sich durch die Datensätze klicken kann. Das Textfeld für die Bezeichnung das Datensatzes habe ich behalten.
So musste ich verfahren da wie gesagt ich keine Daten aus Unterformularen aufrufen kann.

So funktioniert nun eine reibungslose und einfache Auswahl der Ausbildungskategorie.

Es mag sein, das dies nicht bestimmten Standards entspricht. Und mir wäre lieber gewesen ich hätte dies auf einer Website oder in SAP umsetzen dürfen.
Aber wenn nunmal eine Anforderung gestellt ist, dann muss ich diese erarbeiten, so unkonventionell sie auch ist.

Also, nochmals Danke,
mit Freundlichen Grüßen, Marvin
Mit freundlichen Grüßen,
Marvin aus dem Nordwesten

Auszubildender Fachinformatiker - Systemintegration
 

 


Advertisment / Werbung - Amazon Affiliate Links