My.Settings in Datenbank persistieren

  • VB6
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    My.Settings in Datenbank persistieren

    Hallo zusammen.

    Ich würde gerne die My.Settings-Einstellungen in meiner Datenbank pro User persistieren. Bei Integer, Boolean etc. ist das ja ganz klar und ist
    auch einfach umzusetzen.

    Wie sieht es aber mit
    System.Drawing.Size -> wird z.B. für die Breite meines TreeView genutzt
    und
    System.Collections.Specialized.StringCollection -> wird für das Speichern gewählter Elemente einer CheckedListBox genutzt
    aus, welche Feldauswahl im DataSet müsste ich hierfür wählen?

    Die Sachen sollen nach Änderung in die Datenbank geschrieben und beim Programmstart auch wieder geladen werden.
    Bilder
    • unbenannt.png

      187,74 kB, 1.708×670, 81 mal angesehen
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Mit ComplexConverter: alles in einen String und zurück?
    kannst du beliebige Dinge in einen String verwandeln, und diesen String auch zurückverwandeln in die vorherigen beliebigen Dinge.
    Üblicherweise speichere ich ComplexConverter-Strings in die Settings - aber ebensogut kann man diesen String in eine DB speichern.

    Es gibt aber Einschränkungen:
    Die Struktur der Daten muss immer identisch sein. Wenn du mal 3 Forms offen hast, mal nur eines, und willst von die Forms und deren aufsitzenden Controls Eigenschaften persistieren - dann musste Hirnschmalz hinzunehmen, um das iwie zu lösen.
    danke, schau' ich mir mal an.
    pro Form oder pro Setting gäb es da ja dann einen Datensatz - das sollte sich also nicht überschneiden.
    also z.B. für jedes Control einer Form, welches ich persistieren würde (wäre auch eine derbe übertreibung, man muss nicht alles persistieren) würde ich einen Datensatz anlegen wollen.

    Aktuell sind's für solch "komplexe" Sachen aber nur die Size des TreeViews und 2 Listen von selektierten Checkboxen einer CheckedListBox - hält sich also in Grenzen :)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    @VB1963:
    Weil die Settings nicht korrekt persistiert werden. Zumindest nicht, wenn ich nen neuen Release Backe, dann sind die erstmal weg
    obwohl ich hiermit beim Öffnen der Anwendung arbeite:

    VB.NET-Quellcode

    1. Private Sub restoreMySettings()
    2. If Not My.Settings.Upgraded Then
    3. My.Settings.Upgrade()
    4. My.Settings.Upgraded = True
    5. End If
    6. End Sub


    Ich hätt's halt gerne inne DB dann hab ich auch die Kontrolle darüber und nicht irgendwas automatisiertes vorgegebenes von MS
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    @VB1963:
    Ist schick gelöst, kann ich bei mir allerdings denke ich knicken.
    Meine Anwendung liegt ja derzeit "einfach auf einem Netzlaufwerk" - d.h. jeder ruft die selbe .exe-Datei auf.

    Soweit so gut - allerdings arbeiten wir teils direkt in der Citrix-Umgebung (z.B. von Unterwegs oder daheim) oder aber vom lokalen Firmenrechner damit.
    Den Userpath der Citrix-Umgebung kenne ich nicht, deshalb könnte ich mir vorstellen, dass die erzeuge .dat-DAtei nicht korrekt abgelegt werden kann.

    Um den ganzen Quatsch mit Citrix etc. zu umgehen würde ich gerne alles in die DB speichern.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup: