Neuigkeiten:

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

Mobiles Hauptmenü

Formular mit Vorfilter öffnen

Begonnen von Sonnensalat, Mai 31, 2016, 15:10:45

⏪ vorheriges - nächstes ⏩

Beaker s.a.

Hallo,
ZitatDen FS habe ich erstellt, weiß aber nicht was das "Eindeutig = Ja/Nein" bedeutet oder wie ich das einstellen soll
Im Tabellenentwurf bei den Eigenschaften des Feldes; -
Indiziert -> Ja (Duplikate möglich) für "ApparateArt_ID_FS" = mehrdeutig oder
Indiziert -> Nein (ohne Duplikate) für "Apparate_ID_FS" = eindeutig

hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Sonnensalat


MzKlMu

#32
Hallo,
so da bin ich wieder.
ZitatAlles in allem ist das vermutlich keine klassische Datenbank, da es so viele Ausnahmefälle geben MUSS.
Ich habe über das ganze Wochenende gebrütet.  ;D Und genau wegen der vielen unterschiedlichen Felder habe ich das ganze Konzept noch mal überarbeitet.
ZitatWäre mir lieb, wenn wir das nicht unnötig verkomplizieren müssen :)
Es ist auch nicht komplizierter geworden, im Gegenteil.
Ich habe alle Felder die nicht für alle gelten als Datensätze angelegt.
In einer weiteren Tabelle werden diese Datensätze (Merkmale) einem Apparatetyp zugeordnet.
Dann hat es eine weitere Zuordnungstabelle die die für den Apparat zutreffenden Felder dem Apparat zuordnen.
Das Datenmodell siehst Du im Bild. Diese 6 Tabellen decken den kompletten Anwendungsfall ab. Im Anhang findest Du auch ein Beispiel.
Die Zuordnungstabellen sind für die Apparateart Behälter (..ID 3), Reaktor (..ID 16) und Rührbehälter (..ID 17) gemacht. Die anderen Zuordnungen musst Du gemäß diesem Muster noch anlegen. Wenn Du das gemacht hast, kannst Du die restlichen Tabellen (in meinem Beispiel) die mit # beginnen alle ersatzlos löschen.

Mein Vorschlag ist wie ich finde enorm flexibel, da die Felder die von der Apparateart abhängig sind Datensätze angelegt sind. Hast Du eine neues Feld (=Merkmal), einfach als Datensatz anlegen, die Einheit für das Feld bestimmen und in der Zuordnungstabelle "tblMerkmalzuApparatArt" einer Apparateart zuordnen.
Du kannst auch die Merkmaltexte beliebig ändern.
Öffne das Formular "frmErfassung", der 1.DS ist ein Behälter. Im Ufo rechts daneben siehst Du die zugeordneten Merkmale. Du kannst jetzt die Werte eintragen. Da geht jeder beliebige Text.
Jetzt wechselst Du im Hafo zu einem neuen Datensatz. Als Apparateart wählst Du jetzt Reaktor oder Rührbehälter (es funktioniert im Moment nur mit diesen 3 Apparatearten (Behälter, Reaktor und Rührbehälter).
Dann klickst Du auf den Button "Zutreffende Merkmale anfügen" und Zack sind alle zutreffenden Felder als Datensätze zu sehen. Werte eintragen und fertig. Die Einheit (wenn es eine gibt) steht automatisch da.

Bitte beschäftige Dich damit. Der nächste Schritt für Dich wäre jetzt die Tabelle "tblMerkmalzuApparatArt" zu ergänzen.
Schaue Dir mal die Beziehungen an und die beiden Abfragen, die nur dem Verständnis dienen.

Die ganze DB ist mit diesem Datenmodell höchst flexibel und kann ohne irgend etwas an den Entwürfen ändern zu müssen um Apparate und Felder erweitert werden.

Es gibt noch weitere Verbesserungsvorschäge (auf meinem Vorschlag aufbauend) aber da gehen wir erst ran, wenn Du das alles verstanden hast.

Ich bin auch an anderen Meinungen von anderen User hier interessiert.

Beziehungsbild und DB anbei.
Gruß Klaus

Beaker s.a.

Hallo Klaus,
Nicht schlecht  :) - das ist echt flexibel.
Eine Frage hätte ich aber, - wie kommt denn das Feld "MerkmalArt"
(Bestimmung des Datentyps?) ins Spiel? Der Wert eines Merkmals ist
jetzt ja immer vom Typ Text (Feld "Eintrag"). Da muss man doch später
in Abfragen/Code tierisch aufpassen, damit man nicht ständig auf
Datentyp-Konflikte stösst. Oder was übersehe ich da?

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
das Feld hat im Moment noch keine rechte Bedeutung. Das habe ich nur eingeführt um die Einträge nach Text oder Zahl sortieren zu können. Also so, dass erst die Zahlenwerte kommen und dann die Texte. Der Datentyp des Eintrags ist und bleibt Text, hier müssen ja beliebige Werte eingetragen werden können.
Sollte es Felder geben mit denn ggf. gerechnet werden muss (z.B. Datum) so muss dann eine Datentypumwandlung in der Formel gemacht werden.
Gruß Klaus

MaggieMay

Hallo Klaus,

ich finde die Idee grundsätzlich gut, habe sogar selbst schon daran gedacht als ich die ersten Beiträge zu diesem Thread gelesen hatte, allerdings habe ich keine eigenen Erfahrungen mit einer solchen Lösung.
Freundliche Grüße
MaggieMay

DF6GL

#36
Hallo,

Zitat
so muss dann eine Datentypumwandlung in der Formel gemacht werden.


Das kann durch Mitführen eines entspr. Feldes in der Tabelle tbl_Einheiten geschehen, womit auch gleich eine Plausi-Prüfung bei/nach der Eingabe des Wertes möglich ist.


ZitatIch bin auch an anderen Meinungen von anderen User hier interessiert.

M. E. eignet sich eine solche generische DB sehr gut für die Fälle, bei denen jeder Datensatz eine unterschiedliche Anzahl von Attributen und dazu noch von unterschiedlicher Bedeutung aufweist.

Z. B. die Erfassung der vielschichtigen  und unterschiedlichen
IT-Strukturen (Hardware, Software, Lizenzen, Login-Daten, Mail-Accounts, Web-Sites usw., usw.) von beliebigen Kunden einschließlich deren Ansprechpartner/Mitarbeiter .
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

Sonnensalat

ZitatIch habe über das ganze Wochenende gebrütet.  ;D
Wow Klaus! ... wie du dich ins Zeug legst, ich bin echt sprachlos...

Die Zuordnung der Behälterart funktioniert, wenn auch etwas umständlich, aber einmal erledigt ist die Flexibilität wirklich unglaublich! Habe noch weitere Felder für die Zukunft geplant, das geht jetzt sehr leicht und ich muss nicht aufwendig für jeden Apparatetyp ein eigenes Formulardesign anlegen! Echt clever.

Sorgen bereitet mir aber nach wie vor der Datenimport, das wird jetzt definitiv sehr aufwendig, da ich aus den Bestandsdaten n-Exceltabellen erstellen muss (n= Anzahl ApparateTyp). Oder es gibt da einen Trick, den ich wie so vieles nicht kenne.  ;)

In der tblApparate die Felder Reparatur/Änderung, RepDatum bis BANF muss ich in ein zweites Ufo einbauen, da dort unendlich viele DS eingetragen werden müssen. Das dürfte die einzige Änderung am Datenmodell sein, die ich derzeit erkannt habe.  :)

ZitatSollte es Felder geben mit denn ggf. gerechnet werden muss (z.B. Datum) so muss dann eine Datentypumwandlung in der Formel gemacht werden.
Berechnungen sind für die DB nicht geplant.

Ich esse jetzt erstmal einen Salat in der Sonne und lasse das sacken.

Gruß Thomas



Beaker s.a.

Hallo Klaus,
Alles klar, waren meine Gedankengänge schon richtig.
Es fehlt dann aber noch das Kennzeichen D für Datumsfelder in der
Feldbeschreibung. Vielleicht sollte man die (auch wenn's nur drei DS
sind) auch in eine eigene Tabelle packen. Da könnte man vielleicht
auch gleich die Datentyp-Konstante von Access hinterlegen. Falls das
irgendwie Sinn macht?

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

#39
Hallo,
@ekkehard
es bleibt noch jede Menge Spielraum für Verbesserungen. Aber ich kann keine weitere Tabelle machen, sonst geht die Flexibilität verloren.
Die Artkennzeichen (T,Z,D) könnte man nutzen um Plausibilitätsprüfungen vorzunehmen. Aber da wollte ich erst mal warten, wie Thomas weiter macht.

@Thomas
ZitatDie Zuordnung der Behälterart funktioniert, wenn auch etwas umständlich,
das kann man mit einem Formular (Apparateart) mit Ufo (Merkmale) sehr viel einfacher über die Klartexte (mit Kombi) erledigen. Habe ich Dir eingebaut.
Weiterhin kann man auch weitere Komfortstufen einbauen. Z.B. mit einer Werkstofftabelle.
Klicke mal in einem Feld (Eintrag) in dem Werkstoff vorkommt doppelt.
Es öffnet sich ein kleines Formular in dem man einen Werkstoff per Klick wählen kann. Nach Klick wird der Werkstoff eingetragen und das kleine Formular geschlossen.

Weitere Anmerkungen:
- Der Status der DB gehört in eine eigene Tabelle, der DB Status hat ja mit einem Apparat nichts zu tun.
- Aktenstatus > eigene Tabelle
- Beriebsstatus > eigene Tabelle
- Alle Felder für die Rep. > eigene Tabelle
- Hersteller > eigene Tabelle
- Firma > eigene Tabelle

ZitatSorgen bereitet mir aber nach wie vor der Datenimport, das wird jetzt definitiv sehr aufwendig,
da stimme ich Dir zu. Das wird einige Arbeit bedeuten. Aber, wenn Du die neue Struktur verwenden willst, musst Du da durch. Da wird auch Handarbeit angesagt sein.

Neue DB anbei.
Achtung in dieser DB sind die überflüssigen Tabellen gelöscht (wegen Platzbedarf zum Hochladen). Aber nicht in der Zuordnungstabelle erfasst. Das überlasse ich Dir.
Gruß Klaus

Beaker s.a.

Hallo Klaus,
Ich wollte dich nicht drängeln, oder gar kritisieren.
Mir geht es nur darum diesen Ansatz in Gänze zu verstehen, da er evtl.
auch mal für mich interessant wird. Werde den Thread auf jeden Fall weiter
verfolgen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Sonnensalat

Hallo!
ZitatDie Artkennzeichen (T,Z,D) könnte man nutzen um Plausibilitätsprüfungen vorzunehmen. Aber da wollte ich erst mal warten, wie Thomas weiter macht.

Ich habe auch schon darüber nachgedacht und in der Version 6 ein paar geändert, allerdings muss ich noch genau prüfen welche derzeit von T auf Z bzw. D geändert werden können. Es gibt auf jeden Fall ein paar "Merkmal"-Felder, die definitiv nur Zahlen enthalten.

Zitat- Der Status der DB gehört in eine eigene Tabelle, der DB Status hat ja mit einem Apparat nichts zu tun.
Das stimmt, er wird nach Abschluss des Projektes aber auch wieder gelöscht, er dient nur zur meiner persönlichen Info.
Zitat- Alle Felder für die Rep. > eigene Tabelle
Dazu wollte ich gerade was posten, aber du bist einfach zu schnell Klaus :D

Ich habe eine Befehlsschaltfläche im frmErfassung erstellt, die das neue frmErfassungUfoReparaturen öffnen soll, da dort unendlich viele DS eingegeben werden sollen und zwecks Übersichtlichkeit. Ich bin mir sicher, dass diesmal die Beziehungen stimmen. Er gibt mir aber eine Fehlermeldung bei Dateneingabe, dass die Tabellen nicht verknüpft sind. Muss man da mit VBA eine Datenweitergabe vom gewählten DS im frmErfassen hinzufügen, damit im neu geöffneten Ufo der entsprechende DS geöffnet wird?

ZitatAber, wenn Du die neue Struktur verwenden willst, musst Du da durch.
Ja, es macht schon jetzt Spaß mit deiner neuen Struktur zu arbeiten, danke vielmals!  :)

MzKlMu

#42
Hallo,
Du machst hier einen Denkfehler. Ein über ein extra Button geöffnetes Formular ist kein Ufo. Ein Ufo befindet sich immer auf einem Hauptformular und wird mit diesem automatisch geöffnet. Und in den Dateneigenschaften "Verknüpfen von/nach" werden die Schlüsselfelder eingestellt. Nur dann ist die automatische Weitergabe des Schlüsselfeldes möglich. Wenn Du den Rahmen des jetzigen Ufos (für die Einträge) anklickst kannst Du diese Verknüpfungseinstellungen in den Dateneigenschaften sehen. Auf dem Formular ist genügend Platz um das Rep.Formular als Ufo anzuordnen. Du brauchst keinen Button um das Ufo für die Reparaturen zu öffnen.
Außerdem nennst Du das Fremdschlüsselfeld in der Reparaturtabelle "ReparaturÄnderungID_F". Das ist unlogisch, denn dieses Feld verweist auf die Apparatetabelle und demzufolge sollte dieses Feld "ApparateID_F" heißen. Das kannst Du aus meinem Beispiel nachvollziehen.
Auf solche Kleinigkeiten solltest Du achten, es hilft beim späteren programmieren wenn man an den Feldnamen erkennt was sie bedeuten.

Ich habe Dir das mal eingebaut. Ich habe gerade einen Lauf.  ;D
Gruß Klaus

Sonnensalat

Ach verdammt, ich hatte es gerade hinbekommen, nur hat er die Einstellung es als Endlosformular darzustellen noch nicht angenommen ;D

Ich wollte es als neues Formular haben, da später ein gescheiter DIN A4 Ausdruck möglich sein soll. Aber ich vermute mal auch da kann man in den Druckeinstellungen das so einstellen, dass die Reparaturen auf einer gesonderten Seite ausgedruckt werden. Aber das ist aktuell noch nicht wichtig.

ZitatIch habe gerade einen Lauf.  ;D
Und du motivierst mich zum Mitlaufen  :)

Sonnige Grüße

MzKlMu

Hallo,
ein Formular ist zum Drucken ungeeignet. Zum Drucken verwendet man Berichte.
Und die wiederum werden unabhängig von einem Formular gestaltet.

Ein weiterer Vorteil der neuen Struktur ist die Vereinfachung der Berichte.
Es gibt nur einen Bericht (z.B. alle Merkmale) für alle Apparatearten.
Oder einen Bericht über alle erfolgte Reparaturen/Änderungen mit den Apparatedaten.
Gruß Klaus