Grundlegende Frage zur Deklaration von Werten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von tina83.

    Grundlegende Frage zur Deklaration von Werten

    Hallo zusammen,

    ich hab mal ne grundlegende Frage wie man am besten meine Werte speichern kann.

    So sehen meine Musterdaten aus:
    Station 1 einl. links Pktnr x y z
    Station 1 einl. links Pktnr x y z
    Station 1 einl. mitte Pktnr x y z
    Station 1 einl. mitte Pktnr x y z
    Station 1 einl. rechts Pktnr x y z
    Station 1 einl. rechts Pktnr x y z
    Station 2 ... das gleiche Spielchen nochmal

    Alle Werte kommen entweder aus einem Array (Pktnr, x,y,z) oder von Radiobuttons (einl./ausl. und rechts/mitte/links). Station wird separat erfragt.

    "Station" kann einen Wert von 1 bis 8 haben, also Integer
    "Einl/Ausl" ist ebenfalls ein String, mit den Werten "einl" oder "ausl" -> darf auch was anderes sein. ich brauch nur ne Unterscheidung. Es gibt diese Unterscheidung nur einmal pro Station.
    "links", "rechts" oder "mitte" ist ein String -> darf auch was anderes sein. Es dürfen auch Zahlen sein, z.B. 1 - 2 - 3
    "PunktNr" sind immer Ganzzahlen, also auch Integer
    X, Y und Z sind Kommazahlen, also Double

    Pro Station gibt es genau 6 Werte mit jeweils Pktnr, x,y,z, links/mitte/rechts, Einl/Ausl .

    So weit, so gut.

    Ich möchte erstmal die Werte speichern können, dann natürlich auch abfragen können. Ich würde zuerst nach der Station fragen und alle restlichen Werte, die zur Station 2 gehören, die möchte ich haben. Genau dasselbe für die anderen Stationen.


    Aktuell habe ich eine Structure:

    VB.NET-Quellcode

    1. Public Structure Koordinaten
    2. Public PunktNr As Integer
    3. Public x As Double
    4. Public y As Double
    5. Public z As Double
    6. End Structure


    Ach ja, sortieren wäre auch eine schöne Funktion. Mit einer structure klappt das ganz gut - zumindest nach einer "Spalte". Muss aber glaub nicht unbedingt sein, wenn ich die Chance bekomme, alle Werte schön abgespeichert zu bekommen und nicht durcheinander, weil z.B. die Klickreihenfolge so war. Es dürfen auch "Speicherplätze" vorgegeben sein, z.B. so wie mein Musterdatensatz oben aussieht.

    Ich freue mich auf eure Vorschläge.
    @tina83 Strings würde ich da nicht verwenden.
    zwei-zuählige Zustände entweder mit einem Enum oder ienem Boolean, je nach Kontext und späterer Erweiterbarkeit.
    Links/Rechts/Mitte schreit nach einem Enum.
    Überleg, ob Du aus Deiner Struktur ein typisiertes DataSet machst, die dann in einer DataTable abgelegt werden.
    Die kannst Du entweder mit eigener Funktionalität als XML-Datei speichern und laden oder (wenn es viel wird) in eine Datenbank packen.
    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!
    ich hab mich jetzt dazu entschieden eine DataTable dazu zu verwenden (weiß aber noch nicht ob es die richtige Wahl war ?( ). Ich find damit wirds ziemlich unübersichtlich, wenn nur da steht table.Rows(1)(5) um den Wert einer Zelle zu erhalten.

    Kann ich denn bei einer DataTable eine ganze Zeile - irgendwo mittendrin - auf einmal austauschen?
    @tina83 Dieser Code tauscht die aktuelle Zeile mit der Zeile darüber:

    C#-Quellcode

    1. internal void SortUp()
    2. {
    3. int Idx = this._BindingManager.Position;
    4. if (Idx <= 0)
    5. {
    6. return;
    7. }
    8. DataRow DR = this._DataTable.Rows[this._BindingManager.Position - 1];
    9. DataRow DRx = this._DataTable.NewRow();
    10. DRx.ItemArray = DR.ItemArray;
    11. this._DataTable.Rows.RemoveAt(Idx - 1);
    12. this._DataTable.Rows.InsertAt(DRx, Idx);
    13. this._BindingManager.Position = Idx - 1;
    14. }
    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!
    Danke RodFromGermany
    Ich glaube ich habe mich falsch ausgedrückt. Austauschen ist wohl das falsche Wort dafür. Ich möchte eine ganze Zeile irgendwo mittendrin mit neuem neuen Datensatz füttern.
    .add hängt ja nur die nächste Zeile hinten dran.

    eine bestimmte Zeile löschen klappt ja schon: table.Rows(2).Delete()
    Kurzer Zwischenruf: table.InsertAt(NewRow, Position)
    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.