Typisiertes Dataset

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Typisiertes Dataset

    ErfinderDesRades hat mir, in einem anderen Beitrag, dringend die Arbeit mit typisierten Datasets bei der Verarbeitung von Messwerten ans Herz gelegt. Leider war damals (ist nur wenige Tage her) mein Projekt zu kompliziert um den Einstieg in die typ. Datasets zu finden. Ich möchte nun einen neuen Anlauf nehmen und habe mir dazu eine vereinfachte Situation ausgedacht (kann natürlich noch geändert werden, wenn es sinnvoll ist).
    Ich bitte euch um Hilfe bei meinen Lernschritten.

    Situation: Es geht wieder um eine Messsituation. Es sollen drei Messreihen geben. Jede Messreihe soll einen Namen haben und viele X-Werte und Y1-Werte und Y2-Werte.
    (Hoffentlich ist das nun eine sinnvolle Situation für Erklärungen und nicht zu kopliziert)

    Z.B Messreihe 1 mit dem Namen "Mess1"
    X-Werte: Frequenz mit den Werten 1,2,3 und 10
    Y1-Wert: Pegel - "Messwert" der sich aus den X-Werten berechnet Y1=2.5*X
    Y2-Wert: Pegel2 - Berechnet sich aus den Y1 Werten mit Y2=Y1+1

    Messreihe 2 mit dem Namen "Mess2" (Wie mit Mess1 nur mit anderen X-Werten und einer anderen Berechnungsformel für die Y-Werte)
    X-Werte: Frequenz mit den Werten 2,5 und 20
    Y1-Wert: Messwert der sich aus den X-Werten berechnet Y1=3.5*X+2
    Y2-Wert: Berechnet sich aus den Y1 Werten mit Y2=Y1+1

    Messreihe 3 mit dem Namen "Mess3"
    X-Werte
    Y1-Werte
    Y2-Werte
    Die Messreihe 3 soll durch einen Kopiervorgang entweder aus Mess1 oder aus Mess2 gefüllt werden.

    Alles soll dann in einem Linienchart angezeigt werden. Auf die Daten wird also nicht anders zugegriffen, d.h. nur im Chart sichtbar.

    Könnt ihr mir bitte zeigen, wie man ein solches Projekt mit einem typ. Dataset anlegt und wo dann die Vorteile sind?

    Ich habe versucht ein typ Dataset zu erstellen und zu verknüpfen und ein passendes Form zu erstellen und es hier mit angehängt.
    Hier meine Fragen:
    - Ist das Dataset richtig angelegt?
    - Wie kann es durch Prgorammcode mit X-Werten gefüllt werden.
    - Wie lassen sich die Berechnungen für die Y1 und Y2 Werte durchführen. Wie erfolgt dann der Zugriff auf das Dataset?
    - Wie erfolgt dann die databinding-Verbindung mit dem Chart, damit die Werte austomatisch angezeigt werden?
    - Zu einem späteren Zeitpunkt stellt sich dann noch die Frage nach der Auslagerung in Klassen.
    Bilder
    • dataset.png

      3,82 kB, 449×152, 121 mal angesehen
    Dateien

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

    1. Dein tDS sieht doch für den Anfang ganz passabel aus. Eine Messreihe kann viele Messwerte haben.
    Ich korrigiere: Die Messwerte-Tabelle hat Spaltennamen drin, die im Plural sind - obwohl deren Wert Double ist. Wert ist richtig, Name falsch. Dass die Table im Plural ist, kann man so lassen. Ist Geschmacksfrage. Messwert wär m.E. besser. Denn die TableRow beschreibt ja nur einen Messwert. Und daher kann ein Messwert mit jener Tabelle nur einen X-Wert haben. Bei Dir vom Typ Double. Eine Messreihe besteht aus mehreren Messwerten. Daher verweist Messwert(e) korrekt auf Messreihe. Mehrere Messwerte können zu einer Messreihe gehören. Indem sie auf diese verweisen. => Passt im Groben, Nur die Namensgebung könnte bei der Weiterentwicklung zum Problem werden.
    2. (Antwort ist auch über die vier-Views-Videos vom EdR erhältlich) Ziehe im Form-Designer aus dem Fenster "Datenquellen" (Ansicht -> weitere Fenster -> Datenquellen) z.B. die "Messreihe" auf Dein Form -> Du erhältst ein DGV, welches an Dein tDS gebunden ist. Die mit der Messreihe verbundenen Messwerte findest Du, wenn Du auf das [>] links neben der Messreihe im Fenster "Datenquellen" klickst. Alternativ per Code: DeinTds.Messwerte.AddMesswerteRow(0, 1, 2, DeinTds.Messreihe.Last). Letzter Parameter ist die Messreihe, an die der Messwert verbunden wird. Ob mein Code funktioniert, hängt davon ab, ob (XML-?)LINQ bei Dir eingebunden ist und die DataTable Messreihe schon mindestens eine Zeile enthält.
    3. per Hand. Und dann Zuweisung. Ggf. auch per AutoBerechnung im DataSet. Aber da jeder Messwert da seine eigene Berechnung zu haben scheint, glaube ich nicht daran. Aber probiert hab ich es nicht.
    4. Leg für das Chart die Property DataSource fest (wird dann wohl eine BindingSource sein, die z.B. auf die Messwerte-Table verweist), dann in die Property Series rein und dort X- und Y- an die Messwerte-Werte ("X-Werte", "Y-Werte") verweisen. Nachdem alle Daten im DataSet drin sind, muss (wohl) mit Chart1.DataBind() die Datenbindung erst tatsächlich erzeugt werden. Ohne ging's bei mir nicht. Es ging auch nicht, wenn erst DateBind aufgerufen wurde und dann die Werte ins tDS eingeragen wurden. Komisches DataBinding-Verhalten. Aber wurscht.

    btw: Warum hat Dein tDS 2 Designer-Dateien? Erzeugte bei mir viele Fehler und ließ anfänglich auch zu, dass ich bei DeinTds.Messwerte.AddMesswerteRow als letzten Parameter eine ID, also einen Integer eingeben konnte, was natürlich Hunz ist. Ich will ja ein konkretes Messreihen-Objekt dort reinhauen. Nachdem ich die beiden DataSet-Designer-Dateien gelöscht hatte, im DataSet-Designer selbst die Tabellen ein wenig verschob und abspeicherte, fing der Compiler sich wieder und bestand endlich auch eine Messreihe-Row als Parameter ^^
    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.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VaporiZed“ ()

    Keine Ahnung warum zwei Designer-Dateien enthalten waren. Ich habe das Projekt einfach neu gemacht.
    Ich glaube, dass es erst einmal besser ist, wenn ich die Charts nicht weiter betrachte - kommt später.
    Nun entstehen gleich neue Fragen.
    - Wie kann ich alle Messwerte aus der Messreihe(0) löschen?
    - Wie kann ich in der ersten Messreihe auf den zweiten X-Wert zugreifen?
    Puh. Momentan finde ich ein Datenmodell auf Basis von Klassen und/oder Arrays noch deutlich einfacher. Schade dass es hierzu wenige Beispiele im Netz gibt.

    Das Projekt habe ich nun korrigiert wieder angehängt.
    In Form1 passiert noch nichts was irgendwie Sinn macht.
    Dateien
    1. Alle Messwerte aus Messreihe(0) löschen:

    VB.NET-Quellcode

    1. Dim ListOfRowsToDelete = DataSet1.Messreihe(0).GetMesswertRows
    2. For Each Row In ListOfRowsToDelete
    3. Row.Delete()
    4. Next

    @VB1963: Geht doch bestimmt noch besser, oder?
    2. DataSet1.Messreihe(0).GetMesswertRows(1).X_Wert
    Messreihe(0) = 1. Messreihe; .GetMesswertRows(1) = hol die 2. Messwert-Zeile her; .X_Wert: gib mir davon den X-Wert

    EDIT: Aber falls Du mal den X-Wert des absolut 2. Messwerts brauchst: DataSet1.Messwert(1).X_Wert. Da wird dann natürlich ignoriert, zu welcher Messreihe jener Messpunkt gehört.

    Klar findest Du das Alte leichter. Das ist alles eine Frage der Gewöhnung. Ich hab über 20 Jahre so programmiert und erst seit einem Jahr arbeite ich mit tDS. Aber ich will nicht mehr zurück. Viele Dinger werden einem so abgenommen. Und DataBinding erleichtert noch mehr.

    Dass Dein Code nicht so läuft, denk ich mir. Du fügst hinter [Button1] einen Messert zu Messreihe mit dem Index 1 hinzu, also der 2. Messreihe. Es gibt aber überhaupt keine einzige Messreihe -> Absturz.

    btw: Jetzt sieht das DataSet passend aus. Was meinen unsere Experten wie @VB1963 und @ErfinderDesRades?
    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.

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

    >> EDIT: Aber falls Du mal den X-Wert des absolut 2. Messwerts brauchst: DataSet1.Messwert(1).X_Wert. Da wird dann natürlich ignoriert, zu welcher Messreihe jener Messpunkt gehört.
    Welchen Sinn hat es dann, wenn nicht bekannt ist zu welcher Messreihe der 2. X-Wert gehört? Oder wird vorher die 2. Messreihe festgelegt, so das nun ein erleichteter Zugriff möglich ist?

    >> Es gibt aber überhaupt keine einzige Messreihe -> Absturz.
    Es wird bestimmt interessant den Code so abzusichern, dass keine Absturz auftreten kann. Auch dann nicht, wenn eine Messreihe mit einer anderen Anzahl von Werten überschrieben wird oder Teile einer Messreihe gelöscht oder sie erneut beschrieben werden.

    Ich muss zugeben, dass ich jetzt erst festgestellt habe, das auf der FourViews-Seite auch das Projekt als Datei abgelegt ist. Ich habe es mir geladen und kann aber nicht das gewünschte Beispiel starten. Es startet immer das "m:n" Beispiel (siehe Bild). Wie kann ich beim Kompilieren das richtige Programm auswählen? (EDIT: Gefunden: MyProject-Anwendung-Startformular)
    die vier Views auf Video
    Ich werde heute nochmals die Videos durchgehen und mir dazu den Code ansehen. Vielleicht werden so einige meiner Fragen geklärt.
    Bilder
    • fourViews.png

      96,41 kB, 1.207×920, 99 mal angesehen

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

    Wenn man von vorne Elemente aus einer Auflistung entfernt, kann man in eine InvalidOperation-/IndexOutOfRangeException hineinlaufen...

    VB.NET-Quellcode

    1. 'For Each Row In ListOfRowsToDelete
    2. ' Row.Delete()
    3. 'Next
    4. For i ListOfRowsToDelete.Count - 1 To = 0 : Step -1
    5. ListOfRowsToDelete(i).Delete
    6. Next

    Nachsatz:
    Wenn man eine Messreihe entfernen will, ist es besser, du entfernst gleich die Messreihe selbst (Parentrow) und nicht nur ihre Childrows (Messwerte).
    Denn da werden die Messwerte(HildRows) sowieso mitgelöscht...
    Wenn du eine Messreihe wiederholen möchtest, dann kannst du die bestehende vorher löschen und mit selben Namen eine neue Reihe beginnen oder die alte beibehalten und eine neue mit einem anderen Namen hinzufügen... Wie du willst.
    Ich meine nur, dass du die Messreihe anfasst und nicht deren Messwerte (Datenmodel 1:n / Parent:Child)
    ...Parenttable (Messreihe)
    ...Childtable (Messwerte)

    egon schrieb:

    Welchen Sinn hat es dann, wenn nicht bekannt ist zu welcher Messreihe der 2. X-Wert gehört?

    VaporiZed schrieb:

    Aber falls Du mal den X-Wert des absolut 2. Messwerts brauchst
    Kann ja sein, dass Du einfach alle Messwerte (unabhängig von ihrer Messreihe-Zugehörigkeit) durchgehen willst, in welcher Situation auch immer. Ich glaube, ich sollte näher bei den aktuellen Problemen bleiben als Aussichten für die Zukunft geben, das verwirrt wohl nur.

    egon schrieb:

    Es wird bestimmt interessant den Code so abzusichern, dass keine Absturz auftreten kann. Auch dann nicht, wenn eine Messreihe mit einer anderen Anzahl von Werten überschrieben wird oder Teile einer Messreihe gelöscht oder sie erneut beschrieben werden.
    Überschreiben ist gar nicht mal so nebenbei passiert. Da muss schon mit Absicht so codiert werden. Aber vielleicht siehst Du besser die Probleme kommen als ich.

    Das von hinten-nach-vorn-Löschen ist doch nur relevant, wenn man sich in der eigentlichen Auflistung selbst befindet. Ansonsten ist meine ListOfRowsToDelete doch nur eine Ansammlung von Werten. Ich lösche sie ja nicht aus der Auflistung ListOfRowsToDelete raus (ja, dann muss man rückwärts durchgehen), sondern ich wende eine Methode auf die in der Auflistung befindlichen Objekte an. Trotzdem verbleiben die Objekte in der ListOfRowsToDelete. Daher kann ich den Einwand/Verbesserungsvorschlag nicht nachvollziehen.

    Zum Vorschlag "Messreihe löschen und ggf. wieder neu anlegen." Sobald es um andere, komplexere Objekte geht, glaube ich nicht, dass das so leicht ist. Aber das ist wohl ein Punkt für später.
    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.
    Könnt ihr mal bitte einen Blick auf den Code werfen. In den Kommentaren habe ich beschrieben was er machen soll.
    Bisher macht der Code was er soll. Was würdet ihr besser/eleganter machen?
    Meine Fragen habe ich in den Code geschrieben.


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. DataSet1.Clear()
    4. 'DataSet1.Messreihe.AddMessreiheRow("test", DataSet1.Messreihe(0)) 'Warum führt das zu einem Fehler? Warum gibt es diese Überladung nicht?
    5. DataSet1.Messreihe.AddMessreiheRow("Main")
    6. DataSet1.Messreihe.AddMessreiheRow("Mem1")
    7. DataSet1.Messreihe.AddMessreiheRow("Mem2")
    8. DataSet1.Messreihe.AddMessreiheRow("Mem3")
    9. DataSet1.Messwert.AddMesswertRow(2, 3, 4, DataSet1.Messreihe(0))
    10. DataSet1.Messwert.AddMesswertRow(3, 3.1, 4, DataSet1.Messreihe(0))
    11. DataSet1.Messwert.AddMesswertRow(4, 3.0, 4, DataSet1.Messreihe(0))
    12. DataSet1.Messwert.AddMesswertRow(5, 2.3, 4, DataSet1.Messreihe(0))
    13. DataSet1.Messwert.AddMesswertRow(6, 1.3, 4, DataSet1.Messreihe(0))
    14. DataSet1.Messwert.AddMesswertRow(0, 1, 2, DataSet1.Messreihe(1))
    15. End Sub
    16. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    17. 'Messreihe 0 zu löschen macht keinen Sinn, da dann nicht mehr bekannt ist wo welche Daten sind.
    18. 'Messreihe(0) "Main" ist die Messreihe die mit frischen Messwerten versorgt werden soll.
    19. 'Alle anderen Messreihen können ihre Werte nur durch kopieren erhalten.
    20. DataSet1.Messreihe(0).Delete()
    21. End Sub
    22. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    23. 'In der Messreihe(0) "Main" werden alle einzelnen Werte gelöscht
    24. Dim ListOfRowsToDelete = DataSet1.Messreihe(0).GetMesswertRows
    25. For Each Row In ListOfRowsToDelete
    26. Row.Delete()
    27. Next
    28. End Sub
    29. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    30. 'Messwerte von Main nach Mem2 kopieren
    31. 'Es werden erst alle Spalten gelöscht und dann neu gefüllt
    32. Dim ListOfRowsToDelete = DataSet1.Messreihe(2).GetMesswertRows
    33. For Each Row In ListOfRowsToDelete
    34. Row.Delete()
    35. Next
    36. Dim ListOfRowsToCopy = DataSet1.Messreihe(0).GetMesswertRows
    37. For Each Row In ListOfRowsToCopy
    38. 'Warum muss alles per Hand kopiert werden?
    39. 'Wie kann man sich gegen den Absturz bei leeren Feldern schützen?
    40. DataSet1.Messwert.AddMesswertRow(Row.X_Wert, Row.Y1_Wert, Row.Y2_Wert, DataSet1.Messreihe(2))
    41. Next
    42. End Sub
    43. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    44. 'Y2-Wert wird berechnet mit Y2 = Y1 * 2
    45. 'Geht das nicht eleganter
    46. Dim c As Integer = DataSet1.Messreihe(0).GetMesswertRows.Count
    47. 'MessageBox.Show(c.ToString)
    48. For i = 0 To (c - 1) 'In DataSet1.Messreihe(0).GetMesswertRows)
    49. DataSet1.Messreihe(0).GetMesswertRows(i).Y2_Wert = 2 * (DataSet1.Messreihe(0).GetMesswertRows(i).Y1_Wert)
    50. Next
    51. End Sub
    52. End Class


    Dann bin ich auf ein weiteres Problem gestoßen. Im Dataset-Designer habe ich beim DataTabel "Messwert" Schreibfehler verbessert. Danach funktioniert nichts mehr richtig und das DataGridView mit den Messwerten musste gelöscht und neu angelegt werden. Gibt es da nicht ein besseres Vorgehen. Was macht man, wenn man zu einem späteren Zeitpunkt Änderungen im Dataset-Designer durchführen möchte.

    Das Projekt habe ich wieder angehängt.
    Bilder
    • Dataset.png

      55,68 kB, 1.326×619, 137 mal angesehen
    Dateien

    egon schrieb:

    Was macht man, wenn man zu einem späteren Zeitpunkt Änderungen im Dataset-Designer durchführen möchte.
    Dann macht man zuallererst ein Backup.
    Wie du gemerkt hast, ist das äusserst heikel.
    Du musst genau überlegen, was die Änderung "wegnimmet".
    Und alles, was daran gebunden ist, muss vor der Operation vom Form gelöscht werden. Ansonsten gibts sehr hässliche Designer-Fehler, weil der an was zu binden versucht, was nicht mehr da ist.

    Gelegentlich kann man auch mit Volltext-Ersatz alle Namen ändern. Aber das geht nur bei ungewöhnlichen Namen, also Zeichenfolgen, die so mit Sicherheit nirgends im ganzen Projekt im Code sonst auftauchen.

    ach- zum Thema Backup kann ich was empfehlen: SolutionExplorer - OpenSource
    Zu Deinen Fragen:
    'DataSet1.Messreihe.AddMessreiheRow("test", DataSet1.Messreihe(0)) 'Warum führt das zu einem Fehler? Warum gibt es diese Überladung nicht?
    Für den korrekten Code (ohne 2. Parameter) ist der Wortlaut: Füge im DataSet der Tabelle Messreihe eine neue Zeile hinzu. Die neue Messreihe soll bei "Name" den Wert "test" bekommen.
    Warum sollte man da noch einen 2. Parameter brauchen? Der auch noch auf die erste Messreihe verweist, die ja noch gar nicht existiert, da sie gerade erst erstellt wird. Solch ein Parameter wird nur für die Messwerttabelle gebraucht, da so ein Messwert natürlich wissen muss, zu welcher Messreihe er gehört.

    Bezüglich Private Sub Button2_Click (da gibt's doch auch aussagekräftigere Namen, oder?): Was willst Du machen? Wozu hast Du den Button, wenn Du keinen Sinn dahinter siehst, was er macht? Wenn es für Dich Blödsinn ist, die 1. Messreihe zu löschen, warum gibt es den Button dann? Den Absturz kannst Du verhindern, indem Du schaust, ob DataSet1.Messreihe.Count > 0

    "Wie kann man sich gegen den Absturz bei leeren Feldern schützen?" Was für leere Felder? Welcher Absturz?

    Die Berechnung ginge nur dann eleganter (nämlich vollautomatisch), wenn Du festlegst, dass bei allen Messpunkten beim Y2-Wert eine fixe Formel hinterlegt ist. Aber irgendwie glaube ich nicht, dass Du das willst.
    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.
    Die Berechnung ginge nur dann eleganter (nämlich vollautomatisch), wenn Du festlegst, dass bei allen Messpunkten beim Y2-Wert eine fixe Formel hinterlegt ist. Aber irgendwie glaube ich nicht, dass Du das willst.

    Hängt von der Messsituation ab. Manchmal sind die Berechnungen sehr einfach. Häufig aber zu kompliziert für eine Zeile. Die Formel für die Berechnung wäre dann auch nicht mehr sinnvoll zu warten.

    "Wie kann man sich gegen den Absturz bei leeren Feldern schützen?" Was für leere Felder? Welcher Absturz?

    Na ja, momentan probiere ich verschiedene Möglichkeiten aus und kann noch nicht abschätzen gegen welche Fehlersituationen ich mich schützen muss...

    Ich muss gestehen, dass ich gespannt bin welche Vorteile sich beim Umgang mit den typisierten Datasets noch auftun.

    Wie geht man eigentlich beim Umgagn mit typ. Datasets mit unterschiedlichen Klassen um? Kann man den ganzen Umgang mit dem Dataset in eine andere Klasse verlegen und nur das Chart und die Controls befinden sich in dem Haupt-Form? Was ist dann mit dem Databinding?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „egon“ ()

    Damit sind die fixe Formel raus. Man kann schon einiges mit fixen Formeln machen. Aber es würden wirklich alle Messwerte, unabhängig von der Messreihe, dieselbe Berechnungsformel enthalten.

    Das mit den unerwarteten Abstürzen: Donald Rumsfeld sagte mal etwas über Dinge, von denen wir wissen, das wir sie wissen; Dinge, von denen wir wissen, dass wir sie nicht wissen. Und Dinge, von denen wir nicht wissen, dass wir sie nicht wissen, und das die letzteren uns schlaflose Nächte bereiten sollten.
    Kümmer Dich erstmal um die ersteren. Will heißen: Wenn ein Problem wirklich auftritt, dann behebe es. Alles andere kommt nach und nach und sollte jetzt erstmal keine Rolle spielen. Das bringt die Zeit und die Erfahrung. Meine Meinung.

    Puh. Das tDS auslagern. Ja, das geht. Ist aber m.E. nicht ganz einfach. Ich habe gerade ein Projekt, bei dem sowas notwendig ist, da die entsprechende DLL, in welchem das tDS definiert ist, in verschiedenen Programm genutzt werden soll, ohne dass das jeweilige Projekt selber ein tDS anlegen muss. Das DLL-tDS soll also in verschiedenen Projekten genutzt werden. Das habe ich erst bei einem einzigen von Dutzenden Projekten als notwendig empfunden. Daher die Frage: Muss das schon so früh in der Projektentwicklung sein? Wird es andere Projekte bei Dir geben, die das tDS so in seiner bisherigen Art nutzen?
    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.
    @egon
    Bezogen auf deinen Eingangspost, weil mir noch nicht ganz klar ist, was du vor hast:
    sind die Messreihen immer in der Anzahl gleich?
    Da sprachst du von Messreihe 1-3...
    1 mit einer spez. Berechnung,
    2 mit einer anderen spez. Berechnung
    und dann eine 3. Messreihe, wo du dann die Messdaten mit deren Ergebnisse deiner spez. Berechnungen entweder von 1 oder 2 nach 3 kopieren willst...

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

    @VaporiZed >> Puh. Das tDS auslagern.
    Ich bin nur auf diese Idee gekommen da ihr mir in den letzten Wochen immer gepredigt habt möglichst viel (sinnvoll) in Klassen auszulagern um das Hauptprogramm übersichtlicher zu gestallten. Sonst habe ich da keine Hintergedanken.

    @VB1963 In dem Eingangspost wollte ich nur eine Situation schaffen, die es mir erlaubt verschiedene Sachen neu auszuprobieren, quasi als Fingerübung.

    Bei mir sind alle Fremdprogramm die irgendetwas mit Messen auf sich haben so aufgebaut, dass es eine Hauptkurve gibt (mit dem Namen Main) und verschiedene Speichermöglichkeiten. Die Anzahl der einzelnen Messwerte kann sich von Messung zu Messung unterscheiden.
    Nur die Hauptkurve kann durch eine Messung mit neuen frischen Messwerten bestückt werden. Ja es kann manchmal notwendig sein, dass die gemessenen Werte aus Teilmessungen zusammengesetzt werden und auch einige Berechnungen durchgeführt werden müssen.
    Diese Hauptkurve mit allen zugehörigen Werten (Berechnungen und vielleicht auch Zwischenwerten) können dann auch als gespeicherte Messkurven Mem1 bis Mem6 (Anzahl beliebig) gespeichert als werden. Mehr Komfort würde vermutlich den Aufwand nicht rechtfertigen ;-).
    Wenn Messdaten auf der Festplatte gespeichert werden, dann immer als lesbares Textfile. Wenn ich von Fremdprogrammen Daten übernehmen möchte bekomme ich sie auch immer nur als Textfile und muss mit eine Auswerteroutine schreiben.
    Diese Grundstruktur hat sich bei anderen (Fremd-)Programmen sehr bewährt und soll daher bei mir für aktuelle oder bei späteren Projekten übernommen werden.

    Vor Weihnachten war ich noch ein "Freund" von Spaghetti-Code-Programmen und versuche nun mich (etwas/möglichst weit) davon zu trennen. Das fällt mir nicht leicht und ich stelle fest, dass ich doch Arrays sehr übersichtlich finde. Noch bin ich aber in der Experimentierphase und probiere mehrere Ansätze aus.

    Frage: Gibt es bei den typ Datasets eine Einstellung, dass unbelegte Feld (Spalteneinträge) als Null oder leer behandelt werden (siehe Bild)
    Bilder
    • leer.png

      26,22 kB, 1.062×489, 76 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „egon“ ()

    Ok, falsch gelesen. Das tDS brauchst Du nicht in eine andere Klasse auszulagern, da es schon eine eigene Klasse ist. Zu finden unter DeinDataSetName.Designer.vb
    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.