PDA

Vollständige Version anzeigen : Formular Textfelder aktualisieren nicht


dergrieche
30.05.2012, 12:25
Hallo liebe Community,

ich habe ein Formular in dem sich, aus drei Tabellen, drei ungebundene Listenfelder befinden.
Die Abhängigkeiten der Kombinationsfelder stellen bei mir leider aber momentan auch noch ein "ungewöhnliches" Problem dar. Wenn ich die Listenfelder als Kombinationsfelder nutze, werden die Abhängigkeiten entsprechend der DB-Realationen korrekt gefiltert.
Wenn ich diese Kombinationsfelder als Listenfelder nutzen will (das wäre mir lieber), läufts net -> leeres Listenfeld! -.-

Ich bin leider in VBA noch nicht so ganz unterwegs. Ich bin auch einer "learn-by-doing" typ. Daher würde ich mich sehr freuen, wenn ihr mir hier helfen könntet.

Ziele:
- wenn das Formular geöffnet wird, soll die erste Zeile im ersten Listenfeld "lst_type" markiert werden
- wenn der Anwender aus dem ersten Listenfeld "lst_type" einen Eintrag angeklickt hat, wird das zwei Listenfeld "lst_make" aktiviert. Dort soll wieder die Markierung auf der ersten Zeile sein. Natürlich soll die Liste im Sinne der Kombinationsfelderabhängigkeit gefiltert werden.
- wenn der Anwender aus dem zweiten Listenfeld "lst_make" einen Eintrag angeklickt hat, wird das dritte Listenfeld "lst_range" aktiviert. Dort wieder Markierung erste Zeile, wieder die Abhängigkeiten beachten.

- wenn auf dann wieder auf das erste LF geklickt wird, sollen alle wieder deaktiviert werden, sodass der Anwender sich "neu" durchklicken kann.


Ich habe aktuell die Felder zu jeweils zu aktivieren sind im Formular als solches deaktiviert und über den Befehl .Enable = True aktiviert, wenn das bestimmte Listenfeld ausgewählt wird.
Aber mehr krieg ich leider noch nicht hin :-(


Wie schon gesagt, würde ich mich sehr über eure Hilfe freuen :-)

dergrieche
30.05.2012, 12:29
Ach ja, ganz vergessen.

Die Listenfelder beziehen sich auf einen Datensatz. Die entsprechenden Textfelder im Formular zeigen immer nur einen Wert an, egal was ich im Kombi/ oder Listenfeld auswähle. Die sollen sich entsprechend der Auswahl im LF ändern.


lg :)

Atrus2711
30.05.2012, 12:59
Die FAQ kennst du schon?
http://www.donkarl.com?FAQ4.36
http://www.donkarl.com?FAQ4.12

dergrieche
30.05.2012, 13:19
Hi,

des mit dem Zeile klappt wunderbar, jedoch mit den Kombinationsfeldern nicht. Ich habe mich mit diesem Absatz über ne Stunde beschäftigt, erfolglos.

-.-

Atrus2711
30.05.2012, 13:28
zeig mal her...

dergrieche_
30.05.2012, 13:46
Hi,

habe mich vorhin erst hier angemeldet und kann nur von zu Haus aus auf mein Email-Konto zugreifen. Muss erst die Registrierung abschließen, um Sachen hochladen zu können. Ich würde ja gerne alternativ über eine upload
Seite dir das hochstellen, aber ich bin gerade auf der Arbeit, und da ist jegliche Seite gesperrt.

Ich wäre erst gegen halb 7 zu Haus. An Sonsten morgen.
Ich werde mich da jetzt weiter versuchen, learning by doing.


Danke für deine Unterstützung. Ich werde mich zurückmelden.


lg dergrieche

dergrieche
31.05.2012, 07:47
hallo,

ich habe mich gestern noch weiter dran versucht. Ein bestimmter Teil funktioniert auch schon. die textfelder zeigen nun das an, was ich in der Liste aufwähle, aber nur bedingt. wenn ich in der tblType, z.B. "Car" hinzufüge, wird im Formular immernoch Truck im Textfeld angezeigt (einfach mal selber ausprobieren, TestDB ist angefügt).

Wie soll das Formular funktionieren?
-> Der Anwender öffnet des Formular und soll, solange er nicht "new" oder "delete" drückt, auch nichts hinzufügen können. Er soll aber schon im Feld "remark" den Inhalt nach Auswahl eines Elementes in der Liste bei Bedarf ändern können.
Bei "new" soll alles andere vergraut werden und nur noch das Textfeld und der Comment (remark) beschreibbar sein. Dort muss ein neuer Datensatz erschaffen werden, wo der Anwender manuell z.B. "Car" eingibt. Nachdem er dann auf "Save" den Datensatz abgespeichert hat, soll das Element in der Liste aufgelistet sein. Und dannn beginnt er von vorn.


Nun will er z.B. eine "Business Company" hinzufügen, muss der Anwender sowieso zuerst das erste Kombifeld anklicken (seht ihr dann). Wie stelle ich es nun an, dass der Anwender lediglich eine neue Company anlegen muss, aber dennoch in Abhängigkeit der Auswahl aufs erste Kombifeld bezieht?
D.h. ich wähle z.B. Truck aus, komme zu Business Company und dort steht nicht mein gewünschter Eintrag, also will ich einen neuen hinzufügen. Gehe wieder auf "new" alles andere vergraut, und füge "Unternehmen Q" hinzu. Ist dann Unternehmen Q automatisch Truck zugewiesen??


Danke schon mal im voraus :-)

Atrus2711
31.05.2012, 09:42
Meinst du nicht, es wäre einfacher, wenn du die Listfelder erstmal nur abhängig voneinander machst, und dann im 2. Schritt jedem Listfeld ein eigene "Pflegeformular" spendierst, das dann vom Listfeld aus zugänglich ist?

dergrieche
31.05.2012, 09:52
Einfacher, definitiv. Aber diese Idee wäre halt der Plan A gewesen :-)
Wenn es nur "unschön" gelöst werden kann, dann nehm ich deinen Plan B natürlich gerne an.

Was sagst du zum Problem der Darstellung der Textfelder? Ich komm da nicht weiter :-( und wenn ich in der Tabelle manuell was eintrage, dann steht im Textfeld trotzdem Truck. Wenn ich Truck ändern will, ändert er nicht den neuen Datensatz, sondern den "echten" Truck-Eintrag -.-


lg

Atrus2711
31.05.2012, 10:01
Mir ist auch völlig unklar, warum du da mit einem Recordset Nebenläufigkeiten erzeugst. Du änderst direkt per Listfeld, und nebenläufig über Recordset....

dergrieche
31.05.2012, 10:03
? Hab ich nicht verstanden. Ich hab doch gesagt, ich bin kein Profi :-)
ich hab des ausprobiert, was irnwie auf den ersten Blick "geklappt" hat.

Wie schaut es denn richtig aus?

Atrus2711
31.05.2012, 10:07
Für einen Nichtprofi hast du aber gewaltig mit Code um dich geworfen.... da sollte man wissen, was man tut.... wo hast du den Code denn her?

Edit: Es wäre auch mal schön zu wissen, worum es eigentlich geht. Bisher hast du nur von Oberfläche und Steuerelementen gesprochen. Aber was sind das eigentlich für Daten? Es sieht aus wie eine merhstufige Gliederungsstruktur...

dergrieche
31.05.2012, 10:14
Aus dem Buch "Access 2010 - Das Grundlagenbuch für Entwickler".

Des hab ich gestern von meinem "Mitpraktikanten" bekommen. Ein bisschen kenne ich mich in Access schon aus, aber nur grundlegende Sachen. Auf das generische Modell bin ich selber durch Nachforschungen gekommen, habs meiner Situation angepasst, läuft.

Natürlich bin ich nicht auf den Kopf gefallen und was ich im Buch lese, versuche ich natürlich umzusetzen und wenn man die Sachen logisch angeht, ist das die halbe Miete, .... aber nur die Halbe :-D

Jetzt sitz ich an der Benutzeroberfläche, ... Schritt für Schritt zum Ziel.

Atrus2711
31.05.2012, 10:16
das generische Modell bin ich selber durch Nachforschungen gekommen, habs meiner Situation angepasst, läuft.
Dann lass mal hören, worum es geht. Generische Datenmodelle habe ich auch schon aufgebaut. Aber keiner kann eine Datenbank verstehen, wenn er die abzubildende Wirklichkeit nicht kennt.

Worum gehts?

dergrieche
31.05.2012, 10:30
Es ist ein Fahrzeugkonfigurator.
Das Model, bei dem ich mir das abgeschaut habe, war sehr ähnlich.

Ausgangsmodell:
tblType - ganz allgemein die Typen der Transportmittel -> Truck, Schiff, usw.
tblObject - das gezietle Transportmittel mit name
tblValue - die Verbindung von der properties der allgemeinen Bezeichnung der Eigenschaften und der "value" der genauen Eigenschaft.

Daraus habe ich also entnommen, dass wenn ich mehrere Tabellen zwischen der tblType und der Object modelliere, dass das lediglich eine verbindung von denen untereinander ist. die eigentlich verbindung wieder zurück is ja über die tblProperties.

Bei mir:
tblType - Truck, Bus, Auto, was auch immer ... von mir aus Schuhe ^^
tblMake - Unternehmen A, Unternehmen B, usw.
tblRange - Baureihe A, Baureihe B, usw.
tblObject - die Namen der Fahrzeuge
tblValue - Namen der Achsen, Federung, Kabine, Achsenkonfiguration
tblProperties - Allgemeine Bezeichnung: Achse, Achsenkonfiguration, usw.


Das Model soll für eine Fahrzeugkonfiguration sein. Ich möchte am Schluss, dass ich zB. Truck, Scania, Baureihe 123 auswähle. Dem entsprechend führt mich das zu einem direkten Modell. Dieses Modell hat seine "Komponenten" wie Typ (Sattelzug oder Chassis), Achsenkonfiguration, Gewicht, Federung, Lenkung, usw. usw.
Ich hatte zuerst eine traditionelle Modellierung, aber bei einer neuen "Komponente" wäre es viel zu aufwendig des später zu ändern.


Das Formular was ich gerade bearbeite ist ein mittel zum Zweck. Nach dieser Filterung, soll man direkt zum Fahrzeugkonfigurator, welcher als "Suchmaske" oder eher gesagt als "Ersteller" einer Fahrzeugkombination steht.
Sagen wir, ich brauche nen bestimmten Truck, also sage ich zuerst, Truck, dann Unternehmen, dann Baureihe -> anschließend kann ich für diese Richtung einen Truck im konfigurator erstellen und ihn abspeichern. Somit steht dieser Truck mir in der Tabelle zur Verfügung.


So soll des ausschauen :-)
weitere Fragen?


ps: bzgl. den Codes. ... ich hab nur Felder aktiviert über VBA, ... hauptsächlich, mehr hab ich doch gar nicht gemacht? :-)

Atrus2711
31.05.2012, 10:41
Hm, ich beginne zu verstehen. Aber eins ist mir noch unklar:

Als Konfigurator bist du doch der, der aus den überhaupt denkbaren Kombinationen eine Kombination "zum Leben erweckt". Da kommt dann ein Object raus, z.B. die neue Actrus-Linie von Perpedes-Renz, die bestimmte Eigenschaften hat (Leistung, max. Achslast, etc). Deine Rolle wäre also die des "Perpedes-Chefs", der dann zu seinen Ingenieuren sagt: baut mir das!

Aber du wählst in deiner DB aus Vorhandenem aus. Als Konfigurator schaffst du doch neues. Das, was es schon gibt, ist doch nur für einen Selektor relevant. Denn der schafft nix Neues, sondern sucht das Passende.

Was also bist du?

dergrieche
31.05.2012, 10:47
Das Produktmanagemend hat natürlich schon seine genauen Vorstellungen welche Kombinationen gewünscht sind und welche nicht. Die brauchen aber ein Verwaltungstool/ Planungstool. Der Konfigurator ist ein Mittel zum Zweck, Entschuldigung, falls ich mich undeutlich ausgedrückt habe.

Meine direkte Rolle ist lediglich das Tool zu erstellen. Ingenieur werd ich noch, dauert noch ein bisschen.

Alle vorgegebenen Kombinationen die aus dem Portfolio herausgehen, werden in dieser DB enthalten sein. Dann fragst du dich, wieso auch mehrere Unternehmen -> weil wir Kooperationen mit anderen haben, die ggf. auch bei uns aus "Interesse" abgebildet werden.

Ab jetzt nenne ich es Selektor :-)
(bin essen) bis gleich

ps: Percedes-Renz .... genial, den merk ich mir :-D

Atrus2711
31.05.2012, 12:39
Eine völlig leere Datenbank ließe sich damit aber dann nicth füllen, denn dann gibts nichts zu wählen und nicht auszuwählen...?

Atrus2711
31.05.2012, 12:52
Hier mal ein Ansatz. Es ist recht viel Code, aber es sieht so aus wie dein Ansatz. Das Anlegen neuer Sätze geht erstmal nur durch den Button Neu, der einen leeren (!) Satz anlegt, und anschl. bearbeiten dieses Satzes. Unschön, aber durch die Sperren erstmal so gewollt.

Mit einem Formular, das jeweils eine Stufe "pflegt", könnte das aber auch fast ohne Code gehen. Dafür sieht es dann ein bisschen anders aus.

dergrieche
31.05.2012, 14:47
Hi,

danke für deine TestDB.
Bei mir erstellt er aber keinen neuen "leeren" datensatz, sondern kopiert den, den ich angeklickt habe. Den kann ich dann aber natürlich im textfeld bearbeiten. Ist auf jedenfall eine Variante, aber kann zu Fehlern und Dopplungen führen? Bike darf nur einmal drin stehen.

Ich hab mir wegen deiner Aussage da noch mal gedanken zu gemacht. Du hast Recht, dem Anwender ist es im Endeffekt egal, wie das Problem gelöst wird. Eben noch mal meine Betreuerin gefragt "nach ihrer Anwendersicht". Es ist für den Anwender (wie du schon sagstest), besser über ein Pflegeformular zu arbeiten. Ich würde die txtFelder "locken" damit nichts geändert werden kann. Immer wenn was geändert, neu oder geölscht werden soll, soll der entsprechende Button geklickt werden -> Pop-Up/ neues Formular und dort soll des gemacht werden, auch der Vorteil, dass der Anwender jede seiner Tätigkeiten bestätigen muss, reduziert die Fehlerquote.


*korrektur:
wenn ich das formular neu öffne und alles noch grau ist, dann auf NEU klicke, ist es ein leerer datensatz.
wenn ich aber mich vorher durchgeklickt habe, dann auf neu gehe, kopiert er den datensatz :-)

Atrus2711
01.06.2012, 08:33
wenn ich das formular neu öffne und alles noch grau ist, dann auf NEU klicke, ist es ein leerer datensatz.
wenn ich aber mich vorher durchgeklickt habe, dann auf neu gehe, kopiert er den datensatz :-)
So ist es. Der Button Neu speichert die aktuellen Textfeldinhalte als neuen Satz ab. Aber wenn die Textfelder noch gesperrt sind, kann man da natürlich noch nichts eingeben. Dann wird bisher halt ein Satz mit leeren Textfeldern gespeichert, der dann aber existiert und somit angeklickt und bearbeitet werden kann. Ein doppeltes Bike kann entstehen, wenn du den existierenden Bikesatz mit Neu erneut anlegst.

Schön ist das nicht. Aber ich hätte auch so nicht angefangen :D

Bike darf nur einmal drin stehen.
Das ist aber Sache des Datenmodells. Da würde ich auf die Bezeichnungen einen eindeutigen Index setzen, dann wird ein zweites Bike abgelehnt. Derm Formular darf/muss das egal sein.

Pop-Up/ neues Formular und dort soll des gemacht werden
Ja, das ist der übliche Weg. Der geht quasi ohne Code über die Eigenschaft "Bearbeitungsformular für Listenelemente". Da trägst du den Namen des Forms ein, das die jeweils relevante Tabelle (Type, Make, Range) pflegt. Diese Formulare sollten dann natürlich auch existieren ;)

dergrieche
01.06.2012, 09:51
ich hab eben gerade mal wieder einen absturz meiner DB gehabt.
ich hab lediglich zwei drei neue formulare erstellt und über vba den Befehl zur Öffnung des Formulares erstellt. auf einmal schließt sich meine DB einfach, nur weil ich ein element schließen will, oder ins VBA will -.-
sogar, wenn ich im frm_Selector auf das erste Listenfeld klicke, schließt sie sich auch!

=> WIESO???

zum glück hatte ich ne _sik datei :-D


Ich habe die DB nun etwas erweitert, schaue sie dir einfach mal an.
In der tblType, hab ich das txtFeld type_name auf indiziert ohne Duplikate gesetzt, dann vermeidet er die Doppeleinträge -> logisch. Aber bei tblMake und tblRange kann ich das nicht so machen, da dort ja "Doppeleinträge" erlaubt sein sollen. Truck oder Bus ... dort bewegt sich zB Percedes-Renz ja auch. deswegen muss ja in dem Feld zwei mal percedes-Renz stehen.

Wenn nun in dem frm_Selector die vorauswahl der Kombis gemacht wurde, steht der nächste Button zur Verfügung, der den Anwender zum direkten Autoselektor führt. Dort weiß ich ejtzt nicht genau, wie ich folgendes problem lösen kann. Wenn du dir die Tabellenstrukturanschaust, merkst du, dass durch die generik in der DB, die eigentlichen Trägertabellen nun Datensätze sind, also sind die Eigenschaften nun die Textfelder. Was mache ich, wenn ein Fahrzeug "optionen" haben soll?

Z.B. Truck hat unterschiedliche Federungen, die zur Auswahl im Selektor vorliegen sollen für den Anwender. Ich hab da schon einige Sachen drin stehen, schau es dir einfach mal an. Einige Bemerkungen habe ich ebenfalls in der DB.

Atrus2711
01.06.2012, 10:07
Hi,

ist ein netzwerk im Spiel? Access ist ziemlich empfindlich gegen Netzwerkausfälle, auch kurzzeitige. Da krachts gerne mal.
Ansonsten sind Abstürze so aus der Ferne schwer zu begründen... :eek: Importier mal alles in eine neue DB, das klärt manchmal interne Verschränkungen.

Die DB schau ich mir an.

Atrus2711
01.06.2012, 10:25
Hi,

ein indizierter Index kann auch mehrere Felder umfassen. Beim Hersteller ist der Firmennamen (ein Feld) sicher das einzige Indexfeld, denn es gibt nur einen Hersteller namens Perpedes-Renz.

Bei den Modellen hingegen ist es anders. Gängiges Beispiel: es gibt den Ford Focus, aber es spricht kein Naturgesetz dagegen, dass Peugeot morgen auch einen Focus rausbringt. Der Modellname alleine ist also nicht eindeutig, wohl aber Modell und Hersteller gemeinsam.

Was die Optionen angeht, steck ich nicht tief genug in der Fahrezugentwicklung. Deine generische Db soll ja die eingestellten Werte für die möglichen Größen aufnehmen. M.E. kann nur ein Object (= Fahrzeug) eingestellte Werte haben:Länge = 18,20 m, Gewicht=32 t, Tankinhalt= 400 l. Aber die hierarchische Eingliederung des Objects (in Type/Make/Range) könnte die möglichen Größen beeinflussen. Mal naiv gedacht: wenn es ein Bus ist, muss es eine Eigenschaft geben wie "Anzahl Passagiersitzplätze". Wenn es ein Truck ist, ist diese Eigenschaft irrelevant, dafür gibt es bei Trucks z.B. die Aussage "Ruhekabine j/n". Heißt: für alles, was Bus ist, wird die Passagieranzahl als mögliche Größe eingerichtet und für ein Bus-Object auch verlangt; für ein Truck-Object wird stattdessen die Ruhekabine erfragt.

Es müsste also irgendwo festgehalten sein, welche (gegliederte) "Fahrzeugklasse" zu welchen möglichen Eigenschaften führt. Diese möglichen Eigenschaften werden dann für ein Object erfragt und mit konkreten Werten belegt.

Im Anhang mal ein Beispiel, wie ich das mal gelöst habe. Da ging es um Details zu KFZ-Verträgen wie Haftpflichtversicherung, Leasing, Finanzierung, Garantien etc. Eine Haftpflichtvers. hat z.B. die Eigenschaft Deckungsumme, aber eine Finanzierung hat andere Eigenschaften. Je nach Vertrasgart werden im Ufo dann die relevanten Eigenschaften erfragt.

dergrieche
04.06.2012, 08:38
Hi Atrus,

ich hoffe du kannst mir erneut weiter helfen.
Ich habe mir deine Screenshots angeschaut, finde ich gut!
Weiß aber nicht, ob ich das so bei mir machen kann? Begründung im weiteren Verlauf.

Ich habe mir nun gedacht, da es Fahrzeuge schon gibt, dass ich einen SELECTOR anlege, der dann den Output liefert. Für die Fahrzeuge die erst noch eingetragen werden müssen, habe ich dann einen CONFIGURATOR.
Um Type, Make und Range zu pflegen habe ich mich nun für die Pflegeformulare entschieden.

Ich hab jetzt aber ein Problem mit der Umsetzung der SELECTOR/ CONFIGURATOR. Wie kann ich nun, da ich ggf. mehrere Optionen für eine Eigenschaft habe, das korrekt darstellen?
Wenn ich zB Tires (Räder) -> ein Fahrzeug kann unterschiedliche Bereifung bekommen, daher stehen meist 2 - 3 unterschiedliche reifen zur Verfügung. Diese stehen bei mir aktuell in EINEM Datensatz. Wenn ich für jeden Reifen einen neuen Datensatz erstelle, ... nun ja ... das ist nicht zielführend. Dann müsste ich ja für "alles" mehrere Datensätze erstellen. Wie löse ich des Problem?

Wie gesagt, kann man aus einem Datensatz über bestimmte Codes es ermöglichen mehrere Optionen in einem Datensatz zu speichern -> Gegenfrage: ergibt das Sinn? Man muss ja auch imemr die Vor- und Nachteile im Blick behalten.


Die kaputte DB ... funktioniert wieder -.-
Leider etwas zu spät, denn ich habe schon alles in eine neue Importiert und weitergearbeitet. Woran das liegt, weiß ich nicht. Es ist mir schon paar mal passiert, dass sie abgeschmiert ist. Aber die hat dann auch nie wieder funktioniert. ist ja jetzt auch egal, hauptsache des neue läuft ^^


Ich habe gerade versucht die DB anzuhänge, aber sie ist zu groß?? Die Größe der DB beträgt 545 KB -.-


Eintrag bearbeitet: Anhang hinzugefügt:
DB funktioniert wieder nicht -.-
Klicke im ersten Formular auf den button, und die DB schmiert einfach ab. Die LOG datei bleibt erhalten, da das Programm nicht korrekt schließt -.-
Die SicherunsDB hat jetzt auch das gleiche problem, obwohl die 5 Minuten vorher angelegt wurde!

Atrus2711
04.06.2012, 08:57
Wenn ich zB Tires (Räder) -> ein Fahrzeug kann unterschiedliche Bereifung bekommen, daher stehen meist 2 - 3 unterschiedliche reifen zur Verfügung. Diese stehen bei mir aktuell in EINEM Datensatz. Wenn ich für jeden Reifen einen neuen Datensatz erstelle, ... nun ja ... das ist nicht zielführend. Dann müsste ich ja für "alles" mehrere Datensätze erstellen. Wie löse ich des Problem?
Wenn das Object aufgrund seiner Einordnung in Type, Make und Range Reifen "zu haben hat", dann sind in meiner bisherigen Denke die möglichen Werte dafür "frei", d.h es gibt da keinen Wertvorrat. Wenn du da einen haben willst, brauchst du die möglichen Werte für eine Eigenschaft lediglich in einer neuen Detailtabelle abzulegen: Eigenschaften 1:n Eigenschaftenvorrat. Da stehen dann z.B. für die Eigenschaft Reifen die möglichen Reifendimensionen als Sätze drin. Aus diesen Werte kannst du dann auswählen, z.B. per Kombifeld. In meinen Bildern wären das dann also Kombifelder bei den eingestellten Geldbeträgen für Deckungssumme, Selbstbeteiligung etc.

Die DB guck ich mir an. Edit: bei mir läuft sie...

dergrieche
04.06.2012, 09:25
Das ist echt eigenartig :(
Woran kann das liegen, dass sie bei dir läuft und bei mir nicht? Die "alte" geht bei mir wieder, die neue die vor 10 Minuten noch einwandfrei funktioniert hat, schmiert ab. Das kann doch nicht wahr sein -.-

Das mit der Detailtabelle hab ich noch nicht ganz verstanden. ich fass das mal in meinen Worten zusammen, wie ich des bisher verstanden hab.

Ich erstelle eine Tabelle "die eine Detailstufe höher" ist als die Eigenschaften, weil die Eigenschaften (Properties) ja ziemlich allgemein gefasst sind. Aber stehen denn nicht in der Value schon die "Details" also die genauen Spezifikationen des Fahrzeuges drin?
Der Eigenschaftenvorrat ist also eine Tabelle, in der jetzt nur Reifen drin stehen? Nein, das wäre ja nicht im Sinne einer generischen DB. Der Eigenschaftenvorrat ist also eine Tabelle die an die Value angeknüft wird, in der ich den FK der Eigenschaftsvorrat Tabelle einfüge, damit dem Arugment "Reifen" mehrere Optionen angefügt werden können. Richtig? Dort stehen dann wieder Reifen, bunt gemischt mit Federungen untereinander in einer Tabelle, was aber egal ist, da sie über ihren PK, dem gezielten Reifen in der Value zugeschrieben sind.
-> Oder muss ich mit properties verknüpfen? Das wäre doch unlogisch. Da stehen doch lediglich die Allgemeinen Bezeichnungen der in der Value verknüpften Datein.

richtig oder falsch? :-)

Atrus2711
04.06.2012, 09:37
Bleiben wir bei den Reifen. Angenommen, es gebe überhaupt (in der gesamten Datenbank) folgende Reifentypen:

195/40 R17
195/40 R19
185/40 R 15

dann sind das die möglichen Werte für die Values, das ist schon richtig. Da es aber vermutlich nicht für alle Values Vorräte gibt (einige könnten echte Freitexte sein), würde ich die Values nicht als Fremdschlüssel-Verweis auf die Vorratswerte aufbauen, sondern die Klartextwerte des gewählten Satzes übergeben. Ein eingesetzter 195/40 R17 wird also mit diesem Wert 195/40 R17 in die Values kopiert, nicht mit seiner Kennziffer 1.

Das ist denormalisiert. Aber mit Absicht. Der Vorrat erleichtert lediglich die Eingabe der oftmals (aber eben nicht immer) gleichen Werte. Aber es ist halt nicht verboten, auch listfremde Werte einzutragen. Der Vorrat ist also nur eine Tipphilfe, keine strikte Einschränkung.

Woran kann das liegen, dass sie bei dir läuft und bei mir nicht? Die "alte" geht bei mir wieder, die neue die vor 10 Minuten noch einwandfrei funktioniert hat, schmiert ab. Das kann doch nicht wahr sein -.-
Access findet Wege :) Hast du mal neu importiert, komprimiert und retestet?

dergrieche
04.06.2012, 09:56
Genau. Nicht jede Value hat Vorräte, richtig. Bleiben wir wie du sagstest bei den drei Reifen. AAA (jetzt hats klick gemacht, ... glaub ich)
Vorweg:
Bedeutet Freitext, dass der Anwender den neuen Reifen vorher lediglich über ein freies Textfeld hinzugefügt hat?!

Wenn ich nun im Selector meinen Truck suche und dann zur Auswahl die drei Reifen habe, ich mich für den 195/40 R17 entscheide, ... wird doch lediglich aus der Eigenschaftsvorratstabelle der Wert entnommen der in beziehung zum Allgemeinen "Reifen" steht? Anders erlaubt mir meine Logik gerade nicht zu denken -.-
Der Wert muss ja irgendwo her kommen, er muss ja auch gepflegt werden können. -> Frage: werden also diese Werte allgemein angelegt und man kann drauf zugreifen oder nicht, wenn man will -> logische Schlussfolgerung sagt, die Vorratstabelle muss an die Properties, ok - verstanden. Und in der Value steht dann der Text, die Bezeichnung, welcher aus der Vorratstabelle der Eigenschaften ausgewählt wurde. Das ergibt natürlich wieder Sinn :-)

Gegenfrage: (da hats noch nicht klick gemacht)
Wird also jeder einzelne Truck mit jeder einzelnen Möglichkeit neu angelegt?
Zum Beispiel: ich wähle einen Truck, der hat - wie schon gesagt - drei unterschiedliche reifen zur Auswahl. Werden dann drei angelegt?, wegen den drei Reifen? Das wäre ja nicht zielführend. Es soll ja ein einziger Truck sein, der halt mit drei Reifen genutzt werden könnte. Man muss ja bedenken, dass es noch mehr als nur Reifen gibt, in denen es "Optionen" geben wird. Das heißt, wenn mehrere abgespeichert werden, dass exponentiell viele Trucks angelegt werden -> nicht erwünscht.


Edit:Habe alles bis auf die Formulare in dene bisher VBA genutzt wird importieren können. Wenn ich versuche auch nur ein einziges Formular mit VBA zu übernehmen, schließen sich die DBs wieder und die LOG bleibt bei beiden offen.

Atrus2711
04.06.2012, 10:29
Bedeutet Freitext, dass der Anwender den neuen Reifen vorher lediglich über ein freies Textfeld hinzugefügt hat?!
Freitext heißt: man tippt Beliebiges ein. Der Nachname von Personen ist z.B. ein typischer Freitext: da gibts keinen Vorrat, die Leute heißen, wie sie heißen.

ich wähle einen Truck, der hat - wie schon gesagt - drei unterschiedliche reifen zur Auswahl. Werden dann drei angelegt?, wegen den drei Reifen
Nein. Weil dein momentanes Object ein Truck ist, "hat" es grundsätzlich Reifen zu haben. Welche und wieviele davon, ist dann in den Values abgelegt. Für die Reifen (bei allen Objects!) gibt es Vorräte, denn egal ob es ein Truck, Bus oder Gabelstapler ist: alles was Reifen hat, kann sich nur aus den verfügbaren Reifengrößen bedienen.

Mal ein anderes Beispiel zur Illustration: du bist ein Versandhandel und willst Eigenschaften der Artikel abbilden. Jacken haben dabei eine Farbe und ein Material, Thermoskannen haben nur eine Füllmenge, Bücher haben einen Autor und ein Erscheinungsjahr. Bei den Farben könnte es meinetwegen eine Auswahl geben (rot, blau, grün) und bei den Füllmengen ebenfalls (500, 750, 1000 ml). Diese Vorgaben bilden - aus Sicht der Objektorientierung - Klassen. Aber die Klasse Jacke kann man nicht anziehen, und die Klasse Thermoskanne nimmt keinen Tropfen Kaffee auf. Nur Objekte - konkrete, "angewendete" Klassen - können das. Und bei dieser Anwendung (=Produktion) müssen die geforderten Eigenschaften mit Werten belegt werden. Die Thermoskanne steht nur im Lexikon, aber die auf dem Tisch hat eine Füllmenge von 750ml. Da die Klasse Thermoskanne keine Farbe erfordert, gibts keine Farbe anzugeben. Auch ein Autor ist der Thermoskanne fremd, weil sie kein Buch ist.

"Wer hat was zu haben" ist also die Struktur. Beim Erzeugen ist dann zu ergänzen: "und in welcher Ausprägung".

dergrieche
04.06.2012, 12:47
Schauen wir mal, ob ich es verstanden habe (ich glaube ich habs net kapiert)
So sieht das Model nun aus. Des rote erkläre ich gleich.

Wenn wir das so wie es jetzt ist betrachten, wird doch gesagt, dass jedes Objekt (also die Fahrzeugbezeichnung -> das Fahrzeug) eine Ebene tiefer gehen und dort das Fahrzeug genau abgebildet wird, ... welche Optionen, Radstände usw. usw.
Wenn wir also in der tblValue alle möglichen Optionen stehen haben, kann ich über den Selector sagen, dass er die daten aus Value holt und sie in ObjectStock speichert. So kann ich die Autos darstellen. ?!?!?!????
Wenn nun im genau diesen Fahrzeug eine Option geändert wird, bleibt das Fahrzeug im Endeffekt gleich, es ändert sich zB nur der Reifen von 190/40 R17 auf 190/40 R15, der Rest würde doch erhalten bleiben?

Wenn der Anwender sagt, es gibt jetzt noch einen vierten Reifen "200/45 R09" dann wird der einfach der Properties "Reifen/ Tires" zugewiesen und wird in der tblValue einfach als zusätzlicher Reifen eingetragen.
Frage: Es müsste doch aber vorher wieder durch die Struktur Type,Make,Range, Object gehen, damit klar ist, wo der Reifen steht???


Nun zu meinen roten Markierungen. tblObject und tblValue trennen. tblObject mit tblObjectStock verbinden und von dort aus auf tblValue und auf tblProperties. -> sinnlos?!!! oder? das ergäbe doch keinen Sinn?, weil doch dann doch wirklich jedes fahrzeug mit jeder option angelegt werden würde -> richtig?
Wollte nur eine fachliche Meinung zu diesem Gedanken, -> zu was das führen würde, wenn ich es so machen würde.


Und noch mal ein Danke bisher, dass du so geduldig mit mir bist ;-)

Atrus2711
04.06.2012, 13:03
Object und Value müssen verbunden bleiben.
Und Die ObjectStocks (= Objekt-Vorräte) sollten eher Property-Stocks sein. Da werden ja später nicht vorrätige Objekte drinstehen, sondern vorrätige "Standardwerte" für Properties.

Denke wir das mal für einen Truck durch:

Type = Truck. Damit steht schon fest, welche Eigenschaften später Truckfahrzeuge haben müssen: Liegekabine, Achsanzahl, Motorart etc.
Make und Range beschreiben das Fahrzeug lediglich genauer (Hersteller, Modellreihe).
Object ist nun ein echtes Fahrzeug: etwas, wo ich eine Beule reintreten kann (das wird dir bei der abstrakten Actos-Linie von Perpedes eher schwer fallen).
Das Object muss aber, da es ein Truck ist, bestimmte Truck-spezifische Eigenschaften "ausfüllen". Der Type Truck verlangt z.B. Achsanzahl, Motorart, Liegenkabine etc. Diese "type-abhängigen Pflichtangaben" werden jetzt für das Object erfragt: Liegekabine = ja, Achsanzahl = 3, Motorart = V8 Diesel. Ein anderes Truckobject kommt vielleicht ohne Liegekabine, mit zwei Achsen und 4er-Reihendiesel.
Eigentlich müssten die Eigenschaften alle händisch ausgefüllt werden. Es gibt aber "beliebte" Werte für manche Eigenschaften. Für Reifen kann man z.B. nicht jeden Werte angeben, sondern nur eine der nutzbaren Reifengrößen. Die müssen irgendwo liegen. Auch die Motorarten werden wohl nicht unendlich viele sein (sonst sind es keine Arten). Diese Werte stehen als mögliche Propertywerte zur Verfügung.
Die nutzbaren Reifen sind überall dieselben. Egal ob Trecker oder Fahrwerk einer 747: wo Reifen dransteht, muss es einer dieser Reifen sein: (Liste aufklapp). Für Typbezeichnungen und ähnliche "Nachnamen" git es hingegen keinen Vorrat.

dergrieche
04.06.2012, 15:10
kapiert.

Es hat sich noch eine Frage gerade ergeben. Was mache ich mit abhängigen Werten? Zum Beispiel haben wir unterschiedliche
- Hinterachsen. Jede Hinterachsen hat ein bis zwei Hinterachsübersetzungen.
- Radstände. Jede Achsenkonfiguration hat vorgegebene Radstände
- EURO Normen. Jeder Motor ist abhängig, ob er zB Typ 3, oder 4, usw. ist

Müsste ich da noch eine Tabelle teifer gehen und sagen. Properties ist allgemein gehalten, propertiesstock gibt mir die genauen details und noch tiefer sehe ich die abhängigkeiten?? oder -> kann ich einfach die zB Hinterachsübersetzungen ebenfalls in die propertiesstock reinhauen. sind im endeffekt ja auch nur genaue Werte wie die vorheringen nur, nur mit abhängigkeiten. schließlich wird der Truck sowieso in der Value gespeichert, und dort kann ja wiederum die Hinterachsübersetzungen als normaler Datensatz stehen, da er der einzige sein wird ?!?!

Atrus2711
04.06.2012, 15:32
Versteh ich nicht. Wenn ein Truck Achsen braucht, und es gibt folgende Achsen gemäß Vorratstabelle (A1, A2, A3), dann ist das doch mit abgedeckt?!

dergrieche
04.06.2012, 15:48
Ja, die Vorderachsen schon. Das ist korrekt.

Ein Truck hat eine Achsenkonfiguraiton = 4x2, 6x2, 6x4 oder 8x4 (8Räder, davon 4 angetrieben = 4 Achsen). Die Achsen sind selbstverständlich über die "Vorderachsne" abgedeckt in der Vorratstabelle, genau wie die Hinterachsen. Aber die Hinterachsen sind hahaha "hinten". Vom Motor bis nach "hinten" zu den Achsen ist leider nicht immer direkte Übertragung.

Das bedeutet, eine Motorumdrehung (Drehmoment) ist nicht gleich, dass die Hinterachse auch eine komplette Runde schafft. Also hat man "Übersetzungen" zB hat meine Hinterachse "XY" im produktportfolio das Angebot von zwei unterschiedlichen Hinterachsübersetzungen.
-> will ich die Achse "XY" mit einer 3,07 oder einer 3,8 Übersetzung. Das kann man sich aussuchen. ->>> Ein Drehmoment hat also bei 3,07 die Auswirkung, dass meine Hinterachse sich 3,07 mal um die eigene Achse dreht -> also 3,07 Runden schafft.


Daher weiß ich nicht, ib mein Gedanke bzgl. der Abbilung in der selben Tabelle korrekt wäre?! Oder muss ich echt noch einmal tiefer gehen??


EDIT:idee! -> die Hinterachsen kriegen im Feld "remark" gleich eine Übersetzung zugewiesen, so wählt man sich dann seine Achse aus.
was hälst du davon? Genau so kann man das dann auch für EURO Norm abbilden. Man wählt eine Euro Norm. und dem entsprechend einen Motor.

Atrus2711
04.06.2012, 15:56
-> will ich die Achse "XY" mit einer 3,07 oder einer 3,8 Übersetzung
Gegenfrage: was haben die denn dann noch gemeinsam?

Es ist letztlich eine Philosophiefrage: was ist ein "Artikel"? Ist die grüne Variante einer Jacke der gleiche Artikel wie die rote (wenn ja: wie unterscheiden die sich denn dann noch), oder sind das zwei Artikel (wenn ja: was haben die dann noch gemeinsam)? Beiderlei Ansätze sind denkbar. Du musst nur mit den Folgen leben.

Klingt wie: "Stellen Sie sich bitte eine Glaskugel vor. Sie muss aber nicht aus Glas sein, und sie muss auch nicht kugelförmig sein. Haben Sie?" :)

"Richtig" ist das Datenmodell dann, wenn es alles zulässt, was in Wirklichkeit auftreten kann und alles verhindert, was nicht vorkommen kann. Von den richtigen Modellen ist das gute dasjenige, das die wenigsten Redundanzen, Restriktionen und Fallstricke hat.

Solche "irrelationalen" Datenbanken wie deine hier haben eh ihre Tücken, z.B. was das Verhindern von ungültigen Werten angeht ("Gewicht: Fritz" -> darf nicht sein) oder das Zurechttypisieren der Textwerte (alle Values sind Text, aber mit Text ist schlecht rechnen).

dergrieche
04.06.2012, 16:04
Es ist genau das SELBE Produkt nur mit einer anderen Übersetzung. Es gibt mehrere gleiche Angebote für utnerschiedliche Zusammensetzungen, aber die Achse ist wie gesagt die SELBE :-)
Es sind 4 unterschiedliche Achsen für "hinten". Die Achse "XY" hat eine Übersetzung von 3,07 + 3,08. Die Achse "AB" hat die Übersetzung von 5,7 + 4,22 (alles nur Beispiele) aber genau so schaut des aus.

Das sollte das ja erleichtern. Genau wie bei den Motoren. Es stehen 4 Motoren zur Auswahl, 2 davon sind Euro 3, zwei davon sind Euro 4.


Über
Klingt wie: "Stellen Sie sich bitte eine Glaskugel vor. Sie muss aber nicht aus Glas sein, und sie muss auch nicht kugelförmig sein. Haben Sie?"

"Richtig" ist das Datenmodell dann, wenn es alle zulässt, was in Wirklichkeit auftreten kann und alles verhindert, was nicht vorkommen kann. Von den richtigen Modellen ist das gute dasjenige, das die wenigsten Redundanzen, Restriktionen und Fallstricke hat.
mach ich mir heute noch mal meine Gedanken. Aber des schaut (dank deiner Unterstützung) schon mal top aus, bisher. Aber wie gesagt, ich werde noch mal alles ganz genau überdenken.

Atrus2711
04.06.2012, 16:06
Dann mach dir doch mal gedanken, was eine Achse noch ausmacht außer der Übersetzung. Mit hinreichender Energie ist eine 40-Tonner-Hinterachse genau dasselbe wie eine Besenstielachse in der Seifenkiste, nur schwerer, stabiler und teurer... meinst du das Ernst? :grins:

Und ein E4-Motor ist immer noch dreckiger als der Gummimotor, mit dem ich vor 30 Jahren meine Balsholz-Flugmodelle durch die Gegend schnurbseln ließ....

dergrieche
05.06.2012, 05:41
Es geht ja auch nicht in den Deutschen/ Europäischen Markt ;-)
Ich muss ganz ehrlich sagen ich finde das sch****, aber das liegt wohl daran, dass wir jungen Leut noch zu naiv sind :-D

Die Achse kann eine Außenplanetenachse oder eine Hybridachse sein. Also ein unterschiedlicher "Typ". Wer die "AB" Achse bestellt, kann eigentlich nicht mehr zwischen unterschiedlichen Tonnagen auswählen, sondern nur bei der Übersetzung. Wenn er eine andere Tonnage will, wählt er eine andere (so ist es aktuell).

Jetzt hab ich mir ja auch Gedanken darüber gemacht, was wäre wenn. Wenn die nun die gleiche Achse anbieten, mit unterschiedlichen Tonnagen und sowohl als Außenplanet- und Hybridachse -> das geht nicht (Tonnagen ja, aber nicht unterschiedlicher Typ), weil das Produkt "Achse" ist eine zB Außenplanetachse. Du sagst ja auch nicht bei Percedes-Renz, dass du dir eine F-Klasse bestellst, aber gerne eine G-Klasse bekommst.
Was ist aber, wenn eine andere Tonnage sein soll? Aktuell gibt es nur zwei Tonnagen -> und das sind zwei unterschiedliche Achsen und ich denke, dass das auch so bleiben wird, frage aber nach.

Atrus2711
05.06.2012, 08:26
Gibt es vielleicht bei den (nennen wir es mal) Ausstattungen eine ähnliche Hierarchie wie bei Type/Make/Range?

Dem Type (bisher Truck/Bus/Bike) entspräche dann z.B. der "Equipment Type" Achse, Motor, Auflieger/Anhängerkupplungsart, etc.

Der Make (Hersteller) entspräche beim Equipment... tja, weiß nicht. Gibts den? Vielleicht auch ein Hersteller?

Der Range (Linie, Reihe) wäre wohl dann deine "Achsvariante": die 3,8 oder die 3,07er-Achse sind vom Eq-Type Achse, der V8 und der 4er-Reihendiesel sind vom Typ Motor etc.

Die Objects gibts dann in dieser Schiene nicht. Objects sind Fahrzeuge. Die Eq-Types können als Fahrzeug-Properties eingesetzt werden. Die Achse ist dann kein Textwert "3,8er Achse" mehr, sondern ein Bezug auf das Achse-Equipment "3,8".

Habt ihr eigentlich keine Informatiker im Haus? :mrcool:

dergrieche
05.06.2012, 08:46
Dazu enthalte ich mich bescheidener Weise :-D


Gibt es vielleicht bei den (nennen wir es mal) Ausstattungen eine ähnliche Hierarchie wie bei Type/Make/Range?



Jain. Man könnte, hat aber nicht. Ich persönlich finde, dass es sehr sinnvoll wäre, aber ich bin ja nur ein Praktikant, die haben ja nichts zu sagen ^^
Es wird beim Truck unterschied in:
- basic model (Applikation also zwischen Sattelzug oder Chassis, Homologationsgewicht also nach welchen Tonnagen und Achsenkonfiguration wie 4x2, usw.)
Wenn man diese drei Daten kennt, weiß man schon aaa, ok es handelt sich also um einen 4x2 Truck Tractor (Sattelzug) für 18Tonnen.

- nach dem basic model könnte man auf das basic vehicle brechen:
(Motor, Radstand (abhängig von Achsenkonfiguration), Kabine, Frame (Rahmen), Federung und Steuerung (links oder rechtslenker)

- nach dem basic vehicle kann man auf das Standard Equipment brechen:
Getriebe, Hinterachse, Tank, Bremsen, Hinterachsenübersetzung, Kabinenfarbe


Im Basic Model hat man KEINE Optionen. Wenn man anstatt Sattelzug einen Chassis will, ist es ein anderes Produkt. Beim basic vehicle hat man Optionen, jedoch ist es kein anderes produkt, sondern ein anderer "Typ". Und beim Standard Equipment, naja, erklärt sich von selbst, das hat irnwo jeder und man kann alles optionalisieren.

Warum ich da bisher keine Einschränkung gemacht habe?
Weil das Fahrzeug sowieso durch eine Fahrzeugkommision muss. Die setzt sich aus der Projektleitung, Qualitätsauditor, Produktmanagement und noch nen paar Leuten zusammen. Das Tool ist nicht für jemanden "der sich nicht mit der Materie" beschäftigt. Wenn zB eine Selektion vorgenommen wurde, wird das Output der Kommision vorgelegt, die sagen dann: Hey, so steht das nicht im produktportfolio, ändern/ nicht genehmigt. Derjenige, der dort was reinhaut, weiß worum es geht.

Wenn derjenige nun vom 4x2 Truck Tracor 18 Tonnen, usw. etc. den bauphasenplan einsehen will, wird er im Selector die erforderlichen informationen auswählen und gelangt zum Plan. -> Andere Selektion -> anderer Bauphasenplan.


Wenn ich das nun aber für die Trucksparte so eingrenze, ist das Tool nicht mehr flexibel genug für zum beispiel Bus oder Bike, wenn es dort diese Struktur nicht gibt! Die Freiheit soll ich lassen, da wie gesagt, sowieso das Fahrzeug zuerst durch eine Komission muss (so wurde es mir begründet).

Atrus2711
05.06.2012, 09:11
Ist die Hierarchie also nicht immer 3stufig? Dann könnte vielleicht eine Parent-Child-Hierarchie hilfreich sein, die sich z.B. in einem Treeview zeigen könnte.

So eine Hierarchie kann auch "ragged" sein, also unausgewogen, mit unterschiedlichen "Pfadtiefen". Am Ende eines Pfades, wo bei Windows Dateien stünden, wären bei dir dann die Objects.

Möglicherweise könnte ein zweiter Treeview die verfügbaren Eigenschaften oder "Eigenschaftsgruppen" herbeirouten. Und in den "Dateien" kommen dann beide Welten zusammen.

dergrieche
05.06.2012, 09:31
Die Hierarchie Type/ Make/ Range ist schon korrekt so. Die ist auch immer dreistufig.

Andere Sache ... Ich weiß nicht wie ich das "Selector" formular machen soll.
Dieses Formular sagt aus, wie das Produkt aussieht, was gesucht wird.
Also muss der ja auf Range zugreifen, damit er weiß, welches Object gemeint ist. blablabla -> Range, Object, Value, Property und PropertyStock muss in die Datensatzherkunft? Ein "object" ist ja im Endeffekt die Tabelle in der das Fahrzeug lediglich mit seinem "Namen" drin steht. Die eigentliche Zusammensetzung ist im Value. value zieht aus property und property aus propertystock. richtig?

die propertystock muss ich als kombinationsfeld darstellen, damit er mir die Inhalte der tbl anzeigt, damit ich auswählen kann. die werden dann in value gespeichert??? aber wenn ich protpery_name darstelle, stehen ja mehrere Einträge untereinander. des soll ja net sein. wenn ich ein freies Textfeld zur bezeichnung nehme, sieht es toll aus, aber ist es dann nicht eingeschränkt?? ich bin total durcheinander, weiß nicht wie ich das machen soll -.-


Ich hab dir noch mal die aktuelle Version angehängt. kannst du helles ins dunkel bringen? welchen gedanken hab ich nicht kapiert??

Atrus2711
05.06.2012, 09:37
Also muss der ja auf Range zugreifen, damit er weiß, welches Object gemeint ist. blablabla -> Range, Object, Value, Property und PropertyStock muss in die Datensatzherkunft?
Kommt drauf an, wie du das Object darstellen willst. Das (eine) anzuzeigende Object ist nur ein Datensatz. Aber außer dem Namen und den übergordneten Hierarchiebenen (Range,Make,Type) "hat" das Object keine skalaren ("tippbaren") Werte. Seine Eigenschaften sind nunmal Vektoren oder Tupel, also "Stapel" von Werten, nicht "Einzelwerte". Diese Wertestapel könntest du z.B. in einem Unterformular zeigen, in einem Treeview oder sonstwie.

Wenn du alles in einer einzigen Datenquelle zusammenlötest, zeigst du nicht mehr das (eine) Object, sondern seine "Atome", d.h. seine vielen Eigenschaften. Das Object zerfließt dabei in den Einzelteilen. Es ist ein Wald, aber er besteht aus vielen Bäumen.

Was willst du sehen? Mal doch mal eine Skizze, wie das aussehen soll.

dergrieche
05.06.2012, 09:59
Mir ist nicht klar, wie ich nun gewährleisten kann, dass der Anwender sich im Selektor/Konfigurator durchklicken kann.

Eigentlich würde ich ja im traditionellen Datenbankmodell jetzt aus jeder Trägertabelle ein Kombinationsfeld erstellen, welches die ID und den Namen beinhaltet, Namen anzeigen lassen und in der zusammengeführten Hauptträgertabelle die Werte einfließen lassen, sodass ein "Truck" im Konfigurator aus den vorgegebenen Werten einen Truck erstellt werden kann.
Im Selektor würde derjenige in der Auswahl die vorgegebenen Werte in der Hauptträgertabelle eintippen und ihn zum Output führen.

Hier ist das jetzt anders?!
Hier muss ich dafür sorgen, dass der Anwender im Endeffekt "oberflächlich" aus der Sicht des Anwenders genau das Gleiche macht. Jedoch passiert im Hintergrund was gänzlich anderes. Und ich weiß nicht genau, wie ich das, was passiert, so darstellen soll/ kann, damit es ordnungsgemäß "funktioniert".

Ich muss ja irgendwie über eine Eingabe des Anwenders dafür sorgen, dass der Truck im Konfigurator angelegt werden kann. aber wie? natürlich wird ein unterformular erstellt in dem er arbeitet, des is aber nur benutzeroberfläche, mir geht es gerade den Gedanken zu verstehen, wie ich aber die Funktionalität aufsetzen soll.

- Konfigurator:
Ich muss Werte darstellen, die der Anwender vorher eingetippt haben muss, damit es die Werte gibt, damit er wiederum etwas "zusammenstellen" kann. Er muss auswählen dürfen, welche Komponenten das Fahrzeug hat. Wie gewährleiste ich, dass er nun gezielt die Achse XY auswählen kann? => ich muss im Unterformular bezug auf die unterschiedlichen Tabellen nehmen und mehrere Kombinationsfelder von PropertyStock erstellen, in denen die Einträge zu sehen sind, damit der Anwender ja schon mal auswählen kann. Diese Felder sind gefiltert nach Property. Also wird da auch wirklich nur der Stock der ausgewählten property stehen. soweit so gut. aber wenn es jetzt wieder ums speichern usw. geht, schaltet mein hirn wieder ab -.-

- Selektor:
Bin ich mir noch nicht sicher, ob es eine einfach Suchmaske werden soll, sodass der Anwender ihm bekannte Werte eingibt und als Output alles ernscheint, was den kriterien entspricht, er sich dann sein Ziel aussucht und dann weiter arbeitet
oder (was zielführender ist, weil wie schon gesagt kein unwissender dran arbeitet)
ob ich es so anlegen soll, dass der Anwender den Selector vollkommen ausfüllt (der truck wird doch hier aus der value gezogen??) und dem entsprechend arbeiten kann.

Atrus2711
05.06.2012, 10:20
Der Konfigurator erzeugt Objects (Fahrzeuge). Mehr kann er nicht. Diese Fahrzeuge haben bestimmte Eigenschaften, deren Werte z.T. an Vorräte gekoppelt sind. Die "was gibts denn schon"-Suche kann sich da nicht auf Fahrzeuge, sondern nur auf Eigenschaften beziehen.

Der Selector sucht Fahrzeuge, anhand der Eigenschaften des Fahrzeugs. Da gehts also eher drum, die Suchkriterien geschickt aufzubauen.

Die Frage, ob ein gewünschtes Fahrzeug bereits existiert oder neugebaut (konfiguriert) werden muss, kann also nur entschieden werden, indem man erst Fahrzeuge sucht und bei leerem Ergebnis dann die Neukonfiguration startet.

In der Oberfläche können beide Teile gleich aussehen, aber das würde mich eher verwirren...

dergrieche
05.06.2012, 10:39
Mir ist klar, dass der Konfigurator erstellt und der Selektor sucht, den Unterschied hast du mir ja neulich schon erklärt :-)

ich weiß nur nicht, wie ich des nun umsetzen soll.

Bleiben wir zuerst bei Konfigurator:
er erstellt Objects - also erstellt er in der tblObjects lediglich einen Namen. in der Value erstellt er aus der PropertyStock welche in Verbindung mitd er Property stehen Einträge, welche mir das Fahrzeug genau beschreiben. richtig? Also müsste ich dafür sorgen, dass als Auswahl die Daten der Stock gegeben sind, dann diese Werte über die Verbindungen in der value abgespeichert werden. dann hab ichs kapiert :-)


Der Selektor:
Objects sucht im der value nach gegebenen kinfogurationen. richtig? :-)

Atrus2711
05.06.2012, 10:44
Du hast es verstanden. Bedenke aber, dass die Values nicht immer aus dem ValueStock stammen. Es gibt auch "freie" Values. Für das Gewicht wirst du wohl kaum eine Auswahl angeben können, denn das ist - aus eigener Erfahtung :) - stetig veränderbar, nicht gequantelt.