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 ⏩

Sonnensalat

Hallo zusammen,

ich habe jetzt schon viel ausprobiert und recherchiert, aber ohne Erfolg. Ich bin mir sicher, es gibt eine einfache Lösung für das Problem(chen).

Ich habe vier verschiedene Formulare (Behälter, Pumpen, Maschinen und Hebezeuge), die alle auf die selben verknüpften Tabellen zugreifen. Beim Öffnen des "Pumpen-Formulars" sollen automatisch nur die entsprechenden Datensätze z.Bsp. "Pumpen" angezeigt werden und nicht alle zigtausend Datensätze. Die Datensatzherkunft ist in einer verknüpften Tabelle hinterlegt (tblFormulartyp).

Vielleicht ist die Info noch hilfreich:

Nach dem Öffnen mit dem automatischen Vorfilter, soll noch individuell gefiltert werden können.

Hat irgendwer einen Lösungsansatz?

Danke!

MaggieMay

Hi,

wenn du schon verschiedene Formulare hast, so kannst du die Datensatzquelle auch fest eintragen. Anders wäre es, wenn du ein Formular mit verschiedenen Datensatzquellen füttern willst - was natürlich die bessere Lösung wäre. Oder welchen Grund gibt es für die verschiedenen Formulare, die alle auf denselben Tabellen basieren, was unterscheidet sie?
Freundliche Grüße
MaggieMay

Sonnensalat

Hi,
die verschiedenen Formulare sind notwendig, da es in der technischen Datenbank knapp 100 Felder gibt. Also hauptsächlich wegen der Übersichtlichkeit und beim Ausdruck soll es im Idealfall nur eine DIN A4 Seite werden.

Vielleicht hilft eine Beziehungsübersicht im Anhang das zu verdeutlichen. :)

MaggieMay

Ok, zu dem Tabellenaufbau sage ich jetzt mal nichts... ;-)

Was genau steht denn in der Tabelle "Formulartyp"? Und wie öffnest du die Formulare, gibt es schon Code dazu?
Du könntest bspw. den Formulartyp vor dem Öffnen auslesen und als Openargs-Parameter beim Öffnen übergeben. Im Formularereignis "Beim Öffnen" oder "Beim Laden" kannst du den Parameter - sofern es sich dabei um den Namen einer gespeicherten Abfrage handelt - der Recordsource-Eigenschaft des Formulars zuweisen.

Was hältst du davon?
Freundliche Grüße
MaggieMay

MzKlMu

#4
Hallo,
ZitatOk, zu dem Tabellenaufbau sage ich jetzt mal nichts... ;-)
dann halt ich (wie immer).  ;D

ZitatIch habe vier verschiedene Formulare (Behälter, Pumpen, Maschinen und Hebezeuge),
Sind die alle in einer Tabelle, mit den jeweils zutreffenden Feldern?
Zitatda es in der technischen Datenbank knapp 100 Felder gibt
100 Felder in einer Tabelle, hatte ich noch nie. Wenn eine Tabelle mehr als 10-20 Felder hat, sind Zweifel am Datenmodell angebracht.

Wenn ich mir z.B. die Apparatetabelle ansehe (die leider nicht vollständig zu sehen ist, zu kurz und zu schmal), so besteht da jede Menge Optimierungsbedarf.
Z,B, bei den Litern. Mit einer weiteren Tabelle für die Art der Liter und einer Zuordnungstabelle (n:m Beziehung) werden die 7 Felder in der Tabelle schon gar nicht mehr benötigt. Wahrscheinlich gibt es noch viel mehr solcher Felder
Für die Apparate (Behälter, Pumpen, Maschinen und Hebezeuge) sollte es je eine Tabelle geben in der nur die zutreffenden Felder enthalten sind. Ggf. sind auch n:m Beziehungen anzulegen.
Die jetzige Tabelle enthält nur die Felder die für alle Apparate zutreffend sind (z.B. Anlagennr, Inventarnummer etc.)- Die einzelnen Detailtabellen bekommen einen Fremdschlüssel (ohne Duplikate) zu der für diesen Datensatz zutreffenden Apparate Grundfeldertabelle. Das ist dann eine 1:1 Beziehung.

Dadurch hast Du in einer Abfrage nur die für den Apparat zutreffenden Felder, ganz automatisch. Auf dem Formular kannst Du die Apparatetypen mit den zutreffenden Feldern auf Registern anzeigen, ganz übersichtlich.
Auch für einen Bericht werden automatisch nur die zutreffenden Felder verwendet.
Bis jetzt lässt sich das alles ohne irgendeine Programmierung darstellen, alleine über das Datenmodell.

Ich bin sehr sicher, nach einem Umbau in ein normalisiertes Datenmodell gibt es keine Tabelle mehr mit mehr als 15-20 Feldern, eher noch weniger.

Gruß Klaus

Sonnensalat

Vielen Dank für euer schnelles Feedback!!!  :)


@Maggie
So in die Richtung habe ich auch gedacht und darüber recherchiert, wenn es aber mit einer Überarbeitung des Datenmodells auch ohne komplizierte VBA-Programmierung geht wäre mir das viel lieber ;)

@MzKlMu

Okay, irgendwie habe ich es mir schon gedacht, dass es noch Verbesserungspotential gibt :D

Nur zur Info, ich bin kein Access-Profi oder Informatiker und habe eine Access-DB von 2003 als Arbeitsvorlage bekommen. Ich habe das Datenmodell jetzt schon überarbeitet (waren vorher 4 nicht verknüpfte Tabellen). Ich möchte die gerne noch weiter optimieren, aber wenn man das zum ersten mal macht, hält man sie für gut genug solange alles funktioniert (bis auf ein paar gewöhnungsbedürftige Nebeneffekte). :D

Ich habe die DB mal ohne Feldwerte, komprimiert und gezippt hochgeladen, dann ist das ganze Ausmaß meiner "Stümperhaftigkeit" zu verstehen. ;)

MzKlMu

Hallo,
ich habe keine Möglichkeit ACCDBs anzusehen. Ich habe nur Access2003 und benötige eine MDB.
Du musst entweder konvertieren oder warten, bis jemand anders sich darum kümmert.
Gruß Klaus

Sonnensalat

Ihr seid schneller als meine Internetverbindung hier :D

MzKlMu

Hallo,
das ist natürlich nicht so ganz einfach, das umzustrukturieren.
Kannst Du bitte mal eine Liste machen (Excel) welche Felder der Apparate für welche Art zutreffend sind. Du hast ja viel mehr Arten als die 4. Als Matrix.
Es ist mir zu viel Arbeit das aus den Formularen auszulesen.

Nebenbei, eine Tabelle ist keine Datenbank, sondern schlicht und einfach eine Tabelle. Die Datenbank ist die Gesamtheit der Tabellen mit ihren Beziehungen untereinander.
Von daher die Bezeichnung "Apparatedatenbank" eher irreführend. Auch die Überschrift "Datenbanken:" im Formular trifft es nicht, eine einzelne Tabelle ist keine Datenbank.
Gruß Klaus

MaggieMay

Hi,
Zitatwaren vorher 4 nicht verknüpfte Tabellen
vielleicht sogar die bessere Wahl, wenn die verschiedenen Apparate kaum Gemeinsamkeiten haben?
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
das mit den 4 Tabellen (es müssten mehr sein, nach dem Beispiel) hatte ich ja schon vorgeschlagen. Allerdings sind auch hier Verknüpfungen/Beziehungen (1:1) notwendig.
Gruß Klaus

MaggieMay

Ohne Beziehungen geht gar nichts, das ist klar.  :D

Ich dachte nur es könnte sinnvoll sein, die Tabelle zu teilen, je nachdem welche Datenfelder zu welchem Zweck benötigt werden.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
ZitatIch dachte nur es könnte sinnvoll sein, die Tabelle zu teilen,
genau so sollte es auch meiner Meinung nach gemacht werden. Habe ich weiter oben auch genau so geschrieben.
ZitatFür die Apparate (Behälter, Pumpen, Maschinen und Hebezeuge) sollte es je eine Tabelle geben in der nur die zutreffenden Felder enthalten sind. Ggf. sind auch n:m Beziehungen anzulegen.
Die jetzige Tabelle enthält nur die Felder die für alle Apparate zutreffend sind (z.B. Anlagennr, Inventarnummer etc.)- Die einzelnen Detailtabellen bekommen einen Fremdschlüssel (ohne Duplikate) zu der für diesen Datensatz zutreffenden Apparate Grundfeldertabelle. Das ist dann eine 1:1 Beziehung.
Gruß Klaus

Sonnensalat

Hallo zusammen!

ZitatKannst Du bitte mal eine Liste machen (Excel) welche Felder der Apparate für welche Art zutreffend sind. Du hast ja viel mehr Arten als die 4. Als Matrix.
Ich versuche gerade zu verstehen was genau du meinst und wie die Matrix auszusehen hat. Meinst du es sollte mehr als die 4 Sammelbegriffe (Behälter, Pumpe etc) geben? Wenn ja dann habe ich es so verstanden:

1. Haupttabelle: Alle unterschiedlichen Apparatetypen (mehr als die 4 bisherigen)

2. Verknüpfte Tabelle: JEDER Datensatz aus der Haupttabelle hat IMMER folgende gemeinsame Felder: Inventarnummer, Apparatebezeichnung, etc.

3. Verknüpfte Tabellen: MEHRERE Apparatetypen aus der Haupttabelle haben IMMER folgende Felder gemeinsam: R&INr, Werkstoff IR, etc.

4. Verknüpfte Tabelle: EINZELNE Apparatetypen haben "restliche Felder" gemeinsam. (Detailbereich)

Oder sollte die Reihenfolge von Punkt 1 und 2 getauscht werden?

Ich hoffe ich bin nicht ganz auf dem Holzpfad mit der Überlegung.  :)

Gruß


MzKlMu

#14
Hallo,
Haupttabelle:
Die Felder die allen Apparaten gemeinsam sind.
ApparateArt:
Behälter, Reaktor, Wärmetauscher, Filter, Pumpe, Kompressor, Gebläse, Kältemaschine, Ölheizung, Eismaschine, Waage, Hydraulikaggregat, Abgaswäscher, Hebezeug (Einzahl, keine Mehrzahl)
Je eine Datensatz mit einen Feld für den Primärschlüssel (Autowert)

Jetzt erstellst Du für jede Art eine eigene Tabelle, die die Felder enthält die für dies Art zutreffend sind. Zusätzlich ein Fremdschlüssel für die Art und ein FS zur Haupttabelle. Der FS zur HT wird indiziert mit ohne Duplikate, dadurch ergibt sich die zwar seltene aber hier richtige 1:1 Beziehung.

Dann braucht es eine Tabelle in die alle Attribute aller Apparates kommen die eine Einheit (kg, Ltr, m, usw.) haben. In diese Tabelle kommt auch ein Fremdschlüssel zur Art. Du kannst so die Attribute Apparateart abhängig erfassen ohne irgendwelche Felder ausblenden zu müssen. In die Tabelle mit den Attributen muss noch ein Fremdschlüssel zu einer zu erstellenden Tabelle für die Einheiten.

Wie ich das mit der Matrix meinte findest Du im Anhang.
Die Exceltabelle kannst Du erweitern (bin auch nicht sicher ob ich alles drin habe).
Statt des X kannst Du auch die Maß/Mengeneinheit eintragen. Dann wäre das auch gleich mit drin. Wenn Du fertig bist die Exceltabelle wieder hier hochladen. Die Exceltabelle ist nur ein Hilfsmittel damit mir die Zusammenhänge klar sind bzw. werden.
Gruß Klaus