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 ⏩

derilzemer

Hi,
Zitatvollständigen Zugriffspfad für die ControlSource des Bild-Steuerelements
damit meinst du sicherlich W:\AccessDB\fxs\bild.jpg, weil in frmErfassungUfoBilder in BildDateiName nur der das Bild ohne Pfad steht.
ZitatEs wäre günstiger, wenn du den Stamm-Zugriffspfad ebenfalls in einer Tabelle speichern würdest, dann brauchst du nicht mit Konstanten in den Abfragen oder im Code zu hantieren.
Da ist ja schon der Fall, der ist in tblVerlag in Spalte BilderOrdner BilderPfad: "W:\AccessDB\" & [Bilderordner] & "\". Da sehe ich ja aktuell auch meine Schwierigkeit, dass ich das nicht zusammenbekomme :(: Das muss ich ja irgendwie "verknüpfen", Feld BildDateiName in tblBilderZuSpiel und Feld BilderOrdner in tblVerlag.
Ich habe auch schon den eindeutigen Wert (BildMotivID) aus der Tabelle verwenden wollen, aber den bekomme ich im VBA gar nicht erst angeboten aus der Tabelle, lediglich BildDateiName, BildmotivID_F und BildZuSpielID. Mit den beiden anderen Werten habe ich auch versuchen wollen, aber immer das gleiche. Mit BildZuSpielID bekomme ich nur Value statt SetFocus als Auswahl, mit BildDateiName ebenso. Das liegt eben dann noch am Pfad.
Ich muss zum schnell Arzt, Untersuchungsergebnis besprechen. Bis später.

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

MaggieMay

Hi,
Zitat von: derilzemer am Februar 13, 2015, 16:43:50Da ist ja schon der Fall
Nein, mit Stamm-Zugriffspfad meinte ich genau das hier:BilderPfad: [b][color=red]"W:\AccessDB\"[/color][/b] & [Bilderordner] & "\"

Die Abfrage für das Deckblatt-Formular könnte folgendermaßen aussehen:SELECT tblBilderZuSpiel.BildZuSpielID, "W:\AccessDB\" & [BilderOrdner] & "\" & [BildDateiName] AS Bildname
FROM tblVerlag INNER JOIN (tblSpiele INNER JOIN tblBilderZuSpiel ON tblSpiele.SpielID = tblBilderZuSpiel.SpielID_F) ON tblVerlag.VerlagID = tblSpiele.VerlagID_F;

und der Aufruf dann so:
Private Sub imgBilder_DblClick(Cancel As Integer)
    DoCmd.OpenForm "frmDeckblatt", , , "BildZuSpielID=" & Me.BildZuSpielID, , acDialog
End Sub

Wozu du da ein Textfeld drüber gelegt hast, habe ich nicht verstanden, das halte ich für überflüssig.
Freundliche Grüße
MaggieMay

derilzemer

Hi,
jetzt geht es. Ich habe noch 2 Anpassungen machen müssen.
SELECT tblBilderZuSpiel.BildZuSpielID, "W:\AccessDB\" & [BilderOrdner] & "\" & [BildDateiName] AS Bildname
FROM tblVerlag INNER JOIN (tblSpiele INNER JOIN tblBilderZuSpiel ON tblSpiele.SpielID = tblBilderZuSpiel.SpielID_F) ON tblVerlag.VerlagID = tblSpiele.VerlagID_F;

Die \ waren natürlich erforderlich. Weiterhin habe ich dann im frmDeckblatt den Steuerelementinhalt auf Bildname umgestellt. Dann ging es auch.
Das Textfeld hatte ich praktisch nachgebaut wie ich es in der alten DB hatte. Also das war reines copy Problem.
Merci dafür.
Gruß Andreas
Grüße und Dank im voraus
Andreas

MaggieMay

Ja, die Backslashes. Ich hatte das aus deinem Beitrag kopiert weil ich zu faul zum Tippen war und da fehlten sie auch schon, merkwürdigerweise.

Aber wie gesagt, ich würde das so nicht lassen und das Startverzeichnis ebenfalls in einer Tabelle abspeichern.
Freundliche Grüße
MaggieMay

derilzemer

Hi Maggie,
ZitatAber wie gesagt, ich würde das so nicht lassen und das Startverzeichnis ebenfalls in einer Tabelle abspeichern.
Hmmm, da scheine ich doch etwas nicht richtig zu verstehen, wenn du das sagst. In der tblVerlag ist lediglich das Verlagsverzeichnis fixiert, das stimmt wohl. Welchen Vorteil hätte ich noch durch umstellen, sprich den Pfad in eine Tabelle zu bringen? Wegen den Bezügen wie eben in dieser Anforderung, dass man weniger Klimmzüge machen müsste? Wenn ja, wie sieht die Lösung aus, dass man dann aber noch wie bei mir unterscheidliche Verlagsordner hat, den könnte man ja in der Tabelle mit definieren. Wie könnte das aussehen? Google ist da gar ncht ergiebig, wenn man z.B. nach "Bildpfad in Tabelle" sucht. Aber wie erwähnt, habe ich einen wirklichen Nutzeffekt, wenn ich das so umstellen würde?
Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
den Pfad in einer Tabbelle abzulegen hatte ich wieter oben schon mal vorgeschlagen. Hatte es aber wieder fallen lassen, da mir das für eine Heimanwendung ((und Einzelplatz) nicht notwendig schien. Aber es bietet natürlich auch Vorteile. So muss man nur den Tabelleneintrag ändern, wenn sich der Zugriffspafad mal ändern sollte. So muss man suchen, wo überall "W:\AccessDB\" verwendet wurde und muss es dann anpassen. Die einfache Anpassung wäre dann der Nutzeffekt. Allerdings, ist es ja so, dass der Eintrag aktuell nur in einer Abfrage benötigt wird.
Ich finde daher, Du kannst es auch so lassen.
Falls Du eine Tabelle verwenden willst, muss man den Eintrag mit DLookup aus der Tabelle holen, was im Prinzip natürlich auch kein Problem ist. Das ist aber in etwas der gleiche Programmieraufwand wie jetzt auch.

PS:
Ich habe noch eine neue Version in Arbeit. Darin wurde Serie und Verlag verbandelt (hat ganz andere Beziehungen zur Folge), kannst aber die Serie über den Verlag einschränken, außerdem noch die Geschichte mit den Schränken. Wird aber Sonntag.
Gruß Klaus

derilzemer

Hallo,
jo ich werde wegen dem Pfad keine Änderung vornehmen, da ich aktuell auch den wirklichen großen Effekt wie auch zukünftig nicht sehen kann. Von daher passt mir das so. Wegen der neuen Version ist schon okay. Bis dahin Grüße aus der Pfalz
Andreas
Grüße und Dank im voraus
Andreas

derilzemer

Hi,
ich würde gerne noch eine zukünftige "Vorstellung" von mir ansprechen.
Das Quartett im Spiel ist ja aktuell fein und sehr praktisch gelöst. Wenn ich jetzt ein wenig weiter vorraus blicke, dann ist da noch der letzte Punkt, der zukünftig durchaus in Betracht kommen könnte. Die Dokumentation der Einzelkarte. Das Grundlegende Thema hierbei ist, dass man ja unterschiedliche Kategorien hat (Auto, LKW, Motorräder, Schiffe, Flugzeuge etc.), ergo auch viele unterschiedliche Werte. Als Beispiel für Werte wären da z.B.
(Kategorie Auto) PS, KW, Zylinder, km/h, Gewicht, Preis, Baujahr, (Kategorie Schiffe) BRT --> Bruttoregistertonnen, Knoten, Breite, Länge, Stapellauf, Besatzung, (Kategorie Flugzeuge)  Schub, Spannweite, Gipfelhöhe, Reichweite....... und so liesen sich die Listen mit bis zu 20 Werte pro Kategorie weiterführen. Dies bedeutet doch, dass man hier etwas "dynamisches" einsetzen muss, was die Tabelle und deren Felder angeht, oder? Wie oder wo ist da der Ansatz in Access, solche Mengen an Datenfelder abzufangen? Muss man dann so etwas in einem Extraformular abwickeln, oder ist dies auch als Lösung mit Unterformular abzuwickeln wie ich es von euch in der Quartettlösung gezeigt bekommen habe? Wenn es hierzu ein Beispiel gibt, dann wäre ein Link dahingehend für mich von Interesse.
Gruß Andreas
Grüße und Dank im voraus
Andreas

MaggieMay

ZitatAllerdings, ist es ja so, dass der Eintrag aktuell nur in einer Abfrage benötigt wird.
Nein, so ist es ja nicht. Der Pfad wird an mehreren - und zukünftig möglichrweise auch noch an weiteren - Stellen benötigt.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
@MaggieMay
Ich denke, dass ich die DB kenne. Der Bilderpfad wird an einer Stelle (in der Abfrage für das Hafo) zusammengebaut. Und dieses eine Feld wird im weiteren Verlauf an verschiedenen Stellen verwendet. Aber nur in der Abfrage müsste geändert werden.

@Andreas
Die Doku einer Einzelkarte stellt kein Problem dar, das lässt sich mit 2 zusätzlichen Tabelle mit insgesamt 8 Feldern abdecken. Und trotzdem völlig dynamisch.
Eine Tabelle mit allen Eigenschaften (PS, Zylinder, Knoten usw. usw. völlig durcheinander), einem Feld für die Einheit (PS, KW, BRT) und einem Feld für den Fremdschlüssel für die passende Kategorie. Jede Eigenschaft eine Datensatz.
Dann eine Tabelle mit einem Fremdschlüssel zur Karte, einem Fremdschlüssel zur Eigenschaft und einem Feld für den eigentlichen Wert.
Bei Doppelklick auf eine Karte kann sich eine Formular öffnen, in dem man die Werte einträgt und auch sehen kann.
Null Probleme.
Gruß Klaus

derilzemer

Hallo Klaus,
das hört sich mal wieder mehr "easy going" an wie ich es mir vorstellen kann, wobei ich natürlich noch nicht die "nur" 8 Felder in den 2 Tabellen einordnen kann wenn ich von Werten >200 rede. Aber ich bin mal gespannt. Das wäre wirklich der letzte Step in der DB, den ich gerne haben würde. Ich würde mich mal hinsetzen und einen Überblick zusammenstellen, von welchen Daten/Werte und deren Kategorie ich da spreche. Aber wie erwähnt, das wäre dann wirklich das sogenannte Sahnehäubchen für mich.
Sicherlich werden sich viele Fragen, was das soll. Aber heute ist soviel möglich mit OCR Sanning etc etc. Ich schneide ja die Einzelbilder meiner Spiele auch nicht per pedes einzeln in Gimp aus und mache sie transparent. Das basiert alles auf Shell Scripts. Ich muss lediglich scannen, da habe ich noch keinen Surrogate für. Wie sonst könnte ich den ~60000 Einzelkarten Herr werden :)? Dann ist es letztendlich nur noch ein Thema von Speicherkapazität. Dies widerrum ist heute kein Thema mehr, zum Glück.
Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Halloo,
Zitatwobei ich natürlich noch nicht die "nur" 8 Felder in den 2 Tabellen einordnen kann wenn ich von Werten >200 rede.
8 Felder, egal ob 200 Felder, 500 oder 1000. Die Anzahl ist völlig wurscht, es bleibt immer bei den 8 Feldern in den 2 Tabellen.
Das ist einfach analog zu den Bildern.

PS:
Ich kann auch aus der Pfalz grüßen, wo kommst Du denn her (ungefähr) ?
Gruß Klaus

derilzemer

Hi,
Rülzheim, bei Germersheim. Daher der Forumsname --> derilzemer ... äwe pälzisch :). Bin waschecht, also auch im Ort geboren, in den damaligen Geburtsstiften, die es von Ort zu Ort gab. Gehörte zu den letzten 5, welche 1964 da zur Welt kamen. Dann war Schluss ab 1965. Darauf bilde ich mir einfach mal was ein ;D.

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

derilzemer

Hi,
in der letzten DB hatte ich mir ja im Hauptformular, welches auf der tblSpiele gründete, ein Feld Pruefdatum. Dies war in der tblSpiele hinterlegt. Damit habe ich zumindest immer gesehen, wann am aktuellen Datensatz zuletzt Änderungen vorgenommen wurden.
Dazu war lediglich noch ein Stück Code für das Formular notwendig.
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me!Pruefdatum = Date
End Sub

Jetzt kann dies so ja wahrscheinlich nicht gehen, da ich ja auch mit Unterformularen im Formular arbeite (Quartette und Quartettbilder), oder bin ich da falsch in der Annahme? Ist da "lediglich" der Code anzupassen? Wenn ja, wie geht das.
Gruß Andreas
Grüße und Dank im voraus
Andreas

MzKlMu

Hallo,
das wird durch die Ufos etwas aufwendiger.
Was ist das Prüfdatum, wann Du das letzte mal etwas geändert hast ?
Egal wo ?

PS:
Wir wohnen gerade mal 30 km auseinander, ich wohne bei Ludwigshafen.
Gruß Klaus