Neuigkeiten:

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

Mobiles Hauptmenü

Formular mit extrem vielen Datenfeldern ... welcher Lösungsansatz?

Begonnen von derilzemer, Februar 01, 2015, 11:25:34

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
eines vorweg, wie von Franz auch schon angemerkt, ein Register ist hier fehl am Platz, weil es durch ein korrektes Datenmodell gar nicht mehr viele Felder gibt.

Im Anhang mal ein Beispiel nur mit den 3 Tabellen Spiele, Quartette und Karten.
Bitte Beziehungen ansehen. Ich habe auch mal ein Formular gemacht, bitte ansehen, Erklärungen sind mir jetzt zu lang. Das ist weitgehend selbsterklärend.

Was mir noch unklar ist, sind die Bilder. Eventuell sind die in ähnlicher Weise zu erfassen wie die Karten. Die Felder A-G sind in jedem Fall falsch, hier wäre noch eine weitere Tabelle erforderlich.

Ebenso unklar ist auch der Verlag, wieso gibt es in mehreren Tabellen einen Fremdschlüssel zum Verlag ?
Zusatzkarten, Serie, Rueckseite, Bilder, Kartenformat da hat doch nicht jeder einen eigenen/anderen Verlag ?
Ist es nicht so, dass das Spiel aus einem Verlag kommt ?

Bitte erklären.

DB Vorentwurf anbei.

Bei Fragen bitte melden.
Gruß Klaus

derilzemer

Hallo Klaus,
danke erst mal für das Beispiel. Das hat mich jetzt erst mal zum hinsetzen veranlasst, da es mit wenig Aufsehen, einfach, effizient, puristisch und sehr zweckdienlich daherkommt. Da sehe ich jetzt schon, dass ich wohl viel zu "abstrakt" bzw. falsch unterwegs bin. Wenn ich es richtig deute, dann ist die Tendenz eher zu mehr Tabellen mit so wenig Datenfeldern wie möglich. Das hat wohl was mit Erfahrung zu tun, die ich nun mal nach 6-8 Wochen nicht haben kann :(.
Okay zum Thema Verlag, ja ein Spiel hat einen Verlag und da hatte ich eben die folgende Meinung. Jeder Verlag hat aber seine eigene Rückseiten, Serien, etc. Von daher dachte ich, dass ich eben in den Tabellen den Verlag definieren muss.
Das mit den Bilder geht wohl in die Richtung von der Kartenerfassung, da hast du wohl recht. Lass mir doch mal ein wenig Zeit, damit ich das Konstrukt von dir besser verstehe. Unterformulare, so Dinge habe ich alles noch nie genutzt :(.
Gruß Andreas


Grüße und Dank im voraus
Andreas

MzKlMu

#17
Hallo,
ZitatWenn ich es richtig deute, dann ist die Tendenz eher zu mehr Tabellen mit so wenig Datenfeldern wie möglich.
nein, so nicht. Die Tabellen ergeben sich aus den Anforderungen der Normalisierung. Die Feldzahl spielt da zunächst mal keine Rolle. Ich habe Dir mal noch die Bilder eingebaut und da siehst Du wie das geht. Die Bildtabelle von Dir hat 18 Feldern und ist auf 5 Felder geschrumpft. Mit diesen 5 Feldern kannst Du alle Bilder erfassen, egal wie viele es zu einem Spiel gibt oder noch geben wird. Dazu habe ich noch eine Tabelle "tblBildmotive" eingefügt und mit dieser Tabelle kann man ein Bild einem Motiv (Deckblatt, Rückseite usw.) zuordnen.
Du kannst zu einem Deckblatt mehrere Bilder erfassen, sodass auch Varianten in der einen Tabelle erfasst werden können. Für Spiel 1 habe ich mal einige Bilder eingefügt.
Wenn ein Motiv nicht vorhanden ist, wird in der Tabelle "Bildmotive" einfach ein neues Motiv eingetragen und schon kann ich im Hauptformular eine Bild dazu ablegen.

Was den Verlag betrifft, so bin ich der Meinung der Verlag gehört als Fremdschlüssel in die Spieletabelle in der erfasst Du ja dann auch die Formate usw.

Oder erkläre das mit dem Verlag in den anderen Tabellen mal genauer.
Wenn Du nämlich erfassen willst, welcher Verlag z.B. welche Formate herstellt, so wäre ohnehin eine andere Struktur erforderlich. Das gilt auch sinngemäß für die Serien, Rückseite, Zusatzkarte. Da hat jeweils der Verlag nicht zu suchen. Oder überzeuge mich vom Gegenteil.  ;D

Im Anhang noch eine neue Version (02).
Gruß Klaus

derilzemer

#18
    Hallo zusammen,
    so es ist soweit, ich hänge :(. Ich hab die jetzt mal Step by Step erweitert, angepasst etc. Da habe ich dann 2 Dinge, welche ich nicht weiss, wie oder was.

    • Im frmBilderUfoSpiel habe ich jetzt 3 Bildelemente angelegt. Da wollte ich dann entsprechend Bezug auf das Feld BildDateiName machen und mir das Bild anzeigen lassen. Geht auch, jedoch kann ich da ja nur immer das Feld auswählen. Wenn ich also ein anderes Bild anzeigen lassen will, wie stell ich das am geschicktesten an? In meiner alten DB musste ich ja dafür eben ein eigenes Feld anlegen. Muss ich das hier genauso machen, dann muss ich die Tabelle erweitern, was ja so nicht angedacht war?
    • Im Formular habe ich die Felder Verlag, ID Haendler und Kategorie hinzugefügt. Aktuell werden da die ID (AutoWert) angezeigt, was aber beim eingeben eines Datensatzes natürlich nicht "komfortabel" ist, da ich mir all die Zahlen nicht merken kann. Soll ich nun den PK in tblVerlag, tblKategorie und tblHaendler umstellen? Da ich aktuell die Felder IDVerlag, IDKategorie und IDHaendler nutze (FK in der tblSpiele), kann ich ja die Variante mit Spalte binden nicht nutzen. Wie bewerkstellige ich so etwas?
    Datensatz ID 315, 495 und 1853 sind dann mal exemplarisch komplette Datensätze, also mit Karten, Bild etc.
    Geänderte DB hängt an. Das mit dem Schrank wäre dann der nächste Step, den ich machen würde, sofern das aktuelle Sinn macht. Die tblSpiele, ist die so okay, oder sagt ihr, die Felder sind schon zuviel? Aus meiner Sicht sind es aber Werte, welches das Spiel betreffen und nicht in eine extra Tabelle ausgelagert, sprich atomaisiert gehören.
    Gruß Andreas

Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
Mit den Bildern, das verstehst Du falsch. Es gibt je Datensatz ein Bild, also auch nur ein Bildsteuerelement. Beim Anzeigen wird dem Bild dann der Inhalt des Datensatzes zugewiesen. Was das Bild anzeigt ergibt sich aus dem Bildmotiv.
Füge mal bei der SpielID 1853 2 Bilder ein (mit Pfad und Dateiname).
Und schaue Dir den Code dazu an.
Du kannst je Spiel beliebig viele Bilder einfügen, jedes Bild mit einem Motiv, alles über ein Bildelement. Den Pfad zu den Bildern legt man zentral in einer Tabelle an, sodass in dem Feld BildDateiName nur der reine Dateiname gespeichert werden muss. Habe ich jetzt aber nicht gemacht.

Was die Felder Verlag, Haendler und Kategorie betrifft, so ist das relativ einfach. Die Fremdschlüssel werden über je ein Kombifeld gewählt. Das Kombi zeigt den Klartext an, aber die Zahl wird gespeichert. Die von Dir eingerichtete Beziehung der Kategorie war falsch. Es wird niemals eine Beziehung über den Klartext eingerichtet, sondern immer über die Schlüsselfelder. Ich habe das korrigiert.
Die Eigenschaften des Kombis (Spaltenzahl, Spaltenreihenfolge, Spaltenbreiten, gebundene Spalte) bestimmt was das Kombi speichert und was man sieht.
Schaue Dir  die obigen Einstellungen der Kombis genau an, damit Du verstehst wie das funktioniert, das ist wichtig. Die Zahlen sind bedeutungslos, die kriegt man in der Regel nicht zu sehen und muss man sich auch nicht merken.

PS:
Bitte bei jeder Änderung die Versionen hochzählen.

Neue Version (03) anbei.

Gruß Klaus

derilzemer

Hi,
ich kann nahher erst richtig schauen, da ich noch was mit meinem Bruder machen muss, aber ich bekomme beim öffnen des Formular schon diverse Parameterabfragen ums Auge geworfen, ich denke mal das ist so nicht beabsichtigt. Die kommen bei jeder Aktion, auch wenn ich z.B. einen Datensatz suche oder sonst irgendwie ein Quarttett anwähle.
Dann habe ich unter Abfragen ein mir nicht bekanntes Symbol, scheint eine Verknüpfung zu sein (hat mit der KategorieID_F zu tun). Kann man das einfach löschen?
Hier die Meldungen als Screenshot
http://quartettportal.de/producer/db/para.htm

Gruß bis später
Andreas

Grüße und Dank im voraus
Andreas

MzKlMu

#21
Hallo,
die Abfrage kannst Du löschen, hatte ich vergessen. Habe ich nur zu Aktualisierungszwecken benötigt.

Ich erhalte keine Fehlermeldung beim Öffnen der DB, die Meldungen kann ich daher nicht nachvollziehen.
Beschreibe mal genau die Schritte die zu den Rückfragen führen.
Gruß Klaus

derilzemer

Hi,
wenn ich frmErfassung öffne, dann kommt Parameterwertabfrage 1, nach betsätigung mit okay kommt Parameterwertabfrage 2 wie im Link. Dann ist das Formular offen. Geh ich dann in die Liste Spiel wählen, kommen die Abfargen immer wieder. Wenn ich frmErfassung erneut öffne und die Parameterabfrage dann nicht mit ok sondern mit abbrechen bestätige, dann startet er den Debugger.
Laufzeitfehler 2467:
In dem von Ihnen eingegebenen Ausdruck wird auf ein Objekt verwiesen, das geschlossen oder nicht vorhanden ist.

Gehe ich da auf Debuggen, dann springt er auf Liste21, das ist das Feld, weöches du heute wohl neu eingebaut hast. Ich hab dir die Screenshots im Web gepostet.
http://quartettportal.de/producer/db/para.htm

Gruß Andreas

PS: Zur Info, ich öffne die DB mit Access 2013. Ich habe die Datei noch nicht in das .accdb Dateiformat konvertiert. Es ist weiterhin eine mdb.
Grüße und Dank im voraus
Andreas

MaggieMay

Hallo Andreas,

der Fehler wird verursacht durch den Eintrag
[SELECT qryfrmErfassungUfoBilder].BildmotivID_F, qryfrmErfassungUfoBilder.[SpielID_F FROM qryfrmErfassungUfoBilder;]
in der Formulareigenschaft "Sortiert nach" im frmErfassungUfoBilder.
Wie auch immer der entstanden sein mag, ich würde ihn einfach entfernen.
Die Sortierung kann innerhalb der Abfrage stattfinden.
Freundliche Grüße
MaggieMay

derilzemer

Hallo,
Hab ich gelöscht und et voila, es geht. Danke dafür. Step by Step, aber es geht vorwärts.
Gruß Andreas

Grüße und Dank im voraus
Andreas

derilzemer

Hi,
das mit dem Laufzeitfehler etc. hat Maggie unterstützt. Das Thema ist gegessen, soweit ich das beurteilen kann.
Zitat
Mit den Bildern, das verstehst Du falsch. Es gibt je Datensatz ein Bild...Füge mal bei der SpielID 1853 2 Bilder ein (mit Pfad und Dateiname).Und schaue Dir den Code dazu an.
Ich ahnte es, was das falsch verstehen angeht ;). Hab ich jetzt verstanden, wie das funktioniert. Aber irgendwie funktioniert es noch "komisch". Ich kann adden über "Neues Bild hinzufügen", aber irgendwie refresht er nicht. Die Liste Bildmotiv wählen bleibt mal erst leer. Wenn ich dann aus dem Datensatz heraus und wieder rein gehe, dann sehe ich die neuen Bilder. Muss ich da in dem Ereignis AfterUpdate noch ein Me.Requery dazu?
Was oder wie mache ich das überhaupt, wenn ich eines der Bilder löschen will? Einfach den Pfad löschen, damit ist das Bild erst mal verschwunden. Aber in der Liste21, also in Bildmotiv wählen ist der Eintrag noch vorhanden. Und gibt es eine Möglichkeit, da es auch Bilder im Querformat gibt, dass Access dies dann dynamisch anzeigt? Jetzt presst er das in einen Rahmen 4,852x7,33, Bei einem Querformat ist das ja genau anders herum. Geht so etwas? In den aktuellen Eigenschaften kann ich dies nicht sehen.
ZitatDen Pfad zu den Bildern legt man zentral in einer Tabelle an, sodass in dem Feld BildDateiName nur der reine Dateiname gespeichert werden muss. Habe ich jetzt aber nicht gemacht.
Okay, wenn du von zentral redest, dann wirklich in einer eigenständigen Tabelle, oder in der Tabelle tblBildmotive? Die Konsequenz für mich bei rund 5000 Bildern ist da nämlich, dass ich die Bilder natürlich pro Verlag trennen muss. Der Pfad an sich wäre sagen wir mal W:\AccessDB\ und dann noch der Verlag, entweder ass\ oder fxs\ oder biele\ oder oder. Dazu wird wohl aber VBA nötig sein, wie sonst soll es möglich sein das richtige Verzeichnis zu finden? Grundsätzlich liegt ja beim Datensatz anlegen bzw. ändern der Verlag schon fest, was dann als Indikator genommen werden könnte, oder liege ich falsch?
Zitat
Es wird niemals eine Beziehung über den Klartext eingerichtet, sondern immer über die Schlüsselfelder........
Die Eigenschaften des Kombis (Spaltenzahl, Spaltenreihenfolge, Spaltenbreiten, gebundene Spalte) bestimmt was das Kombi speichert und was man sieht. Schaue Dir  die obigen Einstellungen der Kombis genau an, damit Du verstehst wie das funktioniert, das ist wichtig. Die Zahlen sind bedeutungslos, die kriegt man in der Regel nicht zu sehen und muss man sich auch nicht merken.
Das war ja meine Frage und auch Befürchtung, dass dies nicht korrekt ist :-(. So hatte ich es "früher" gelöst.
ZitatBitte bei jeder Änderung die Versionen hochzählen.
Zitat
Werde ich machen.

Danke für die Hilfe
Gruß und Gute Nacht
Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

#26
Hallo,
anbei eine neue Version.
ZitatIch kann adden über "Neues Bild hinzufügen", aber irgendwie refresht er nicht.
Ist in der neuen Version behoben. Es gibt auch einen Button zum Löschen eines Bildes.
ZitatUnd gibt es eine Möglichkeit, da es auch Bilder im Querformat gibt, dass Access dies dann dynamisch anzeigt?
ja, es muss nur Höhe und Breite vertauscht werden. In der Tabelle "tblBilderZuSpiel" habe ich noch ein Feld für das Bildformat eingefügt. Einfach mit 2 Zahlen. Im Formular ist dann eine Optionsgruppe zur Auswahl.

Für den Bilderpfad habe ich beim Verlag noch ein Feld eingefügt für ein Verlagskurzzeichen das als Ordnername dient. In der Abfrage für das Formular wird dann dynamisch der Bildpfad bestimmt. Füge mal ein Bildname ein (nur Name mit Endung) im entsprechenden Ordner. Dann wählst Du das Format. Das Bild sollte dann korrekt angezeigt werden.

Bitte mal etwas rumprobieren und auch mal den VBA Code ansehen.

Im Anhang die DB (04).

Ich habe zwar viel getestet, aber die DB kann trotzdem noch Fehler haben. Bitte auch mal ausgiebig testen.

PS:
Es wäre vorteilhaft, wenn Du die Beispieldb auf 3-4 Spiele mit je 2-3 Quartetts beschränken würdest. Mit vollständigen Daten. Das für einen außenstehenden leichter zu überblicken und auch das Testen wird einfacher.
Gruß Klaus

derilzemer

#27
Hi,
hab mal die beiden letzten Stunden damit verbracht das eine oder andere zu testen. Das funktioniert echt sehr gut und bisher ohne Auffälligkeiten. Ich habe jetzt noch die Serie als Kombifeld eingebunden. Da habe ich jetzt eine Farge dazu. Abhängigkeit zum Feld Verlag. Wähle ich z.B. den Verlag F.X.Schmid, dann soll er mir in den Serien auch nur noch dessen Serien anbieten. Ich habe deshalb in der tblSerie das Feld VerlagID_F eingebaut, jedoch noch keine Beziehung zur tblVerlag gemacht. Dies benötige ich doch, damit ich diese Selektion durchführen kann, oder?
Frage 2 betrifft meien Alptraum, Schrank. Ich habe 4 Tabellen angelegt und mal zueinander mit Beziehungen geschaffen. Das sah schon kacke aus :(. Wenn ich es richtig verstanden habe, dann muss doch das eigentlich genauso laufen, wie du das mit den Tabellen tblQuKarten und tblQuartette gemacht hast. Ergo habe ich jetzt eine tblSchublade und eine tblSchrank. In tblSchrank hätte ich einen FK zur tblSchublade, den PKSchrank, Feld Reihe und Position. tblSchublade außer dem PK Schublade noch einen FK zum PKSpiel in tblSpiel. So habe ich das jetzt mal abgebildet, ohne Rücksicht auf Verluste ;D. Wäre nett, wenn ihr mir dazu eine Aussagen treffen könntet bzw. euch das mal anschaut. Das Umsetzen ist dann noch eine ganz andere Geschichte mit Code und allem :(.
Angepasste DB 05 hängt an, wie gewünscht mit nur noch 36 Datensätzen. Etwas mehr muss es sein, wegen dem Test mit der Kombiabhängigkeit denk ich mal.

Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

#28
Hallo,
ganz kurz:
- Kann die gleiche Serie auch ein anderer Verlag haben, oder kommt eine Serie immer von einem Verlag ?
- Hat jedes Spiel eine Serie, oder kann ein Spiel auch mal ohne sein ?

Zu den Schränken, das ist falsch so.
Auch hierzu Fragen:
- Was ist die genaueste Position die Du für ein Spiel hinterlegen willst?
- Wie ist die Abfolge  Schrank - Schublade - Reihe - Position ?
- Die Position willst Du dann wissen ?

Gruß Klaus

derilzemer

Hi,
sorry war gestern abend laufen und war dann platt :-).
Zitat- Kann die gleiche Serie auch ein anderer Verlag haben, oder kommt eine Serie immer von einem Verlag ?
- Hat jedes Spiel eine Serie, oder kann ein Spiel auch mal ohne sein ?
Nein, die Serie ist immer Verlag spezifisch! Deswegen habe ich in der Tabelle Serie auch die VerlagID in der Spalte hinterlegt, welche aus der Tabelle Verlag resultiert. Und ja, es gibt auch Spiele ohne Serienzuordnung, z.B. speziell Verlag Ravensburger!
ZitatZu den Schränken, das ist falsch so. Was ist die genaueste Position die Du für ein Spiel hinterlegen willst?
- Wie ist die Abfolge  Schrank - Schublade - Reihe - Position ?
- Die Position willst Du dann wissen ?
Als ob ich es nicht geahnt hätte :(. Stell ich mich nur blöd an, oder ist es in der Tat etwas kompliziert?
Ich habe aktuell 3 Schränke, die haben Reihen (maximal 6), welche Schubladen beinhalten (maximal 5). Die Schubladen sind widerrum aufgeteilt in Reihe links, rechts und Mitte (es gehen als 3 Spiele nebeneinander). Und in den reihen, da sind die Positionen, 1-max. 30.
Die Folge aus meiner Sicht ist Schrank --> Reihe --> Schublade --> Position Nr. x links rechts oder Mitte. Reicht das als Angabe?
Hier mal ein Eindruck wie das aussieht .... http://quartettportal.de/producer/db/schrank.htm

Gruß Andreas




Grüße und Dank im voraus
Andreas