Einstellungen speichern / alternative zu My.Settings

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Einstellungen speichern / alternative zu My.Settings

    Nabend Leute
    Ich habe ein Programm gebastelt, welches spezifische Artikel von verschiedenen Firmen enthält.
    Es gibt einen Unterordner, der für jede Firma ein eigenes DataSet enthält. Dies wird nach einer Firmenauswahl zum Programmstart geladen.
    Nun möchte ich Firmenspezifische Einstellungen speichern. Bisher fallen mir nur zu speichernde boolean Werte ein (z.B. SearchEAN8, SearchEAN13).
    Da diese aber wie gesagt Firmenspezifisch sind, möchte ich sie nicht in den My.Settings speichern. Denn bei Firma1 möchte ich nach EAN8 suchen, bei Firma2 nicht.
    Da ich ja eh ein DataSet habe, dachte ich mir pflege ich eine DataTable ein. Jedoch bräuchte ich dann etwas wie eine "SingleLine DataTable". Gibts ja aber nicht (glaube ich).
    Also muss ich bei jedem Zugriff sicherstellen, dass immer der erste (und einzige) Eintrag meiner DataTable ausgewählt ist. Ist ja auch irgendwie doof.

    GIbt es hier eine Alternative?

    DerSmurf schrieb:

    Es gibt einen Unterordner, der für jede Firma ein eigenes DataSet enthält.
    :?: Schon diesem Konstrukt kann ich nicht folgen. Kannst Du das irgendwie mal bildlich darstellen? Dass unterschiedliche Firmen unterschiedliche "Eigenschaften" haben, ist verständlich. Aber was DU gerade in Deinem Programm machst, um eine Firma zu verarbeiten, verstehe ich inhaltlich nicht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Na. Stell dir vor es gibt Firma 1 und Firma 2.
    Dann gibt es Firma 1.xml und Firma 2.xml
    Beim Starten des Programmes, wählst du die Firma aus und die entsprechende XML wir geladen.

    @ErfinderDesRades
    Setzt du dann die bindingsource.position auf 0 wenn du auf deine settings zugreift, oder wie machst du das?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()

    @DerSmurf Wie wäre dies:
    Wenn die Inhalte der XML dieselbe Struktur haben, kannst Du auch für jede Firma einen Unterordner im Ordner Alle Firmen anlegen und hast einen Ordner mit identischer Struktur für jede Firma.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    DerSmurf schrieb:

    Setzt du dann die bindingsource.position auf 0 wenn du auf deine settings zugreift, oder wie machst du das?
    Das geht von selbst: Eine BindingSource hat immer einen aktuell gewählten Datensatz, und wenn nur einer verfügbar...

    Ansonsten würde ich das nicht "zugreifen" nennen, wenn ich ein Gui via BindingSource an eine DataTable binde.
    Zugreifen in meim Verständnis wäre, wenn ich codeseitig im dataset den einzigen Settings-Datensatz manipuliere.
    Dazu brauche ich aber keine BindingSource.
    Ah, nicht jede Firma hat ihr eigenes DataSet, sondern eigene tDS-Inhalte. Dann ist klar, was Du meinst. Diese Einzeiler-Settings setze ich auch häufiger ein. Immer in Kombination mit einer Sub nach dem Laden, die prüft, ob genau eine Zeile da ist. Wenn keine da ist, werden Standardsettings angelegt, wenn mehr als eine da ist, wird Alarm geschlagen, denn dann habe ich irgendwo beim Programmieren nicht aufgepasst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hmm, dann habe ich glaub ich einem Denkfehler.
    Ich habe eine Table mit drei booleans angelegt.
    Wenn ich hier nun aus den Datenquellen die Checkboxen auf die Form ziehe, wird kein TRUE gespeichert.
    Ziehe ich stattdessen ein DGV auf die Form klappt's.
    normal wird ein Wert ja erst aus dem Control in die DataSource übernommen, wenn der Datensatz gewechselt wird.
    Was ja nicht möglich ist, wenns nur einen Datensatz gibt (ich hoffe doch, es gibt ihn, oder?).

    Dann muss man vorm Speichern das Übernehmen erzwingen mit Control.Validate() und BindingSource.EndEdit.

    Oder das Binding wird bei Checkboxen falsch generiert. Es muss die Checked-Property gebunden werden, und andere Props dürfen nicht gebunden sein.
    Kann man im Designer nachgucken, Checkbox fokussieren, und im Propertygrid unter "Databindings" gucken.
    Da bist Du wohl bei dem Punkt, an dem ich auch mal war: ärgerlicher Nebeneffekt bei bestimmter DataColumns-Namensgebung
    Am besten selber verknüpfen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ah. Da war mein Denkfehler.
    Das DGV erzeugt die row wenn ich eine checkbox anklicke alleine.
    Wenn ich nur eine checkbox ohne DGV habe, sollte es eine row geben, in die gespeichert werden soll.
    Also erzeuge ich diese nachher bei der erstellen Erstellung meiner XML und es sollte laufen
    Das meinte ich mit:

    VaporiZed schrieb:

    Immer in Kombination mit einer Sub nach dem Laden, die prüft, ob genau eine Zeile da ist. Wenn keine da ist, werden Standardsettings angelegt, wenn mehr als eine da ist, wird Alarm geschlagen, denn dann habe ich irgendwo beim Programmieren nicht aufgepasst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.