DataSet - DataTable - eine neue Zeile hinzufügen (wo finde ich den Namen meines Datatable)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von nogood.

    nogood schrieb:

    ich habs halt so bei Microsoft Docs so gelesen.
    Naja - bei MS steht so mancher Halb-Schwachsinn.
    Also was die schreiben kompiliert immer, und tut auch was die sagen, was es tun soll.
    Aber - grad bei komplexeren Themen - führen sie oft grauenhafte Anti-Pattern vor, sowie überholte Vorgehensweisen, die jeder mit paar Tassen im Schrank vollkommen anders und einfacher angehen würde.

    Und zu typisiertem Dataset kannst du bei MS garnix finden, weil die Klasse gibts im Framework nicht.
    weil ein typDataset entsteht ja erst, wenn du es dir im Dataset-Designer designest, und der Dataset-Designer generiert dann die Klassen des typDatasets.

    Logisch findste bei MS dann allenfalls Info zu den Basisklassen eines typDatasets, nämlich zu DataTable, DataRow.
    Und damit biste voll auf dem falschen Dampfer, weil der Witz am typDataset ist die Typisierung, und die wird eben erst bei dir erstellt (wo MS sie nicht dokumentieren kann).

    Folgst du also der MS-Doku, und benutzst die untypisierten Basisklassen Dataset, DataTable, DataRow, so gibst du damit die Typisierung auf, also alles, was der Dataset-Designer für dich generiert hat, bleibt dir verschlossen.

    Du solltest wirklich das gegebene Tut komplett durchackern, insbesondere die Teile 1 + 2.
    Weil vmtl. bist du auch mit den Prinzipien relationaler Datenmodellierung nicht vertraut.

    Das ist eben einer der vielen Witze des typDatasets: Du erstellst im Designer ein Datenmodell - das ist eigentlich eine konzeptionelle Vorarbeit beim Programmieren.
    Und wups! - generiert er dir alle dazu nötigen Klassen - das Datenmodell mit einem Schlag komplett ausprogrammiert.
    Du musst es nur noch kennen- und benutzen- lernen - dazu habich Teil3 des Tuts geschrieben.
    (Aber lies auch teil 1+2 - ich glaub dir fehlen die Grundlagen).

    Weil wie gesagt bei MS kann man ein typDataset nicht kennenlernen, weil jedes ist ja ein Unikat beim Entwickler.




    Hihi - jetz war ich mit meim Post zu spät - du hast dich offsichtlich grad auf den Weg gemacht.

    viel Spass (und bei Fragen immer fragen)

    Nur soweit: Das mit Strict Off musste zuerst erledigen.
    Und das mit dem VB6-Namespace auch.
    Anleitung zu beidem: Visual Studio - Empfohlene Einstellungen
    Auch hier gilt: Bei Fragen fragen.

    Es ist total ineffizient, iwas stundenlang selbst zu versuchen, und am Ende womöglicch noch auf iwie abwegige "Lösungen" zu verfallen.
    Also ernsthaft versuchen auf jeden Fall. Wenn aber was "nicht auf geht", dann lieber nachfragen statt rum-murksen, weil dann ist meist falsch was verstanden oder falsch erklärt.

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

    Danke für deinen Input und toll was Du hier für das Forum alles schon geleistet hast.
    Ich bin wohl Heute und mindestens Morgen damit beschäftigt die Tutorials durch zu arbeiten. Ich melde mich ganz bestimmt hier mit Fragen ...


    ----------------
    ...nur um mich zu vergewissern: Ich kämpfe mich durch die englisch sprachigen Tutorials oder sind die auch in deutsch irgendwo online und ich mach es mit unnötig schwer?
    codewars.com Rank: 4 kyu

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

    naja, im Datenbank-Tut-Bereich hier im Forum hab ich auch das meiste von dem Kram, aber über verschiedene Tuts verteilt:
    1. Grundlagen: Relationale Datenmodellierung
    2. DatasetOnly: DB-Programmierung ohne Datenbank
    3. Daten laden, speichern, verarbeiten - einfachste Variante
    4. die vier Views auf Video
    Aber die überlappen sich inhaltlich teilweise, bauen nicht aufeinander auf und sind auch deutlich weniger vollständig als das englische Tut.
    Das erste Tut kann ich aber sehr empfehlen, das entspricht in weiten Teilen dem englischen ersten Teil
    2. + 3. haben viele Überlappungen, da gehts mir v.a. darum, dem weit verbreitetem Irrtum/Missverständnis entgegenzutreten, dass eine relationale Datenverarbeitung zwingend die Verwendung einer Datenbank mitbringt.
    Tut 4 empfehle ich auch sehr, weil das zeigt in kurzen Filmen wie rasend schnell man mit dieser Technologie Lösungen erstellen kann, wenn mans richtig anfasst.
    Es ist dort auch alles richtig gezeigt, und lauffähige Samples immer dabei, aber ich glaub, die Videos sind inhaltlich so dicht gestopft, dass man schon rcht gut coden können muss, und sehr genau hingucken, und mehrmals angucken, um sich das gezeigte KnowHow wirklich anzueignen und kreativ verfügbar zu machen.

    Wie gesagt, ich empfehle v.a. 1. und 4., das erste, weil dann Tut1 des englischen bestimmt viel leichter verständlich ist, und tut4 empfehle ich quasi als "Appetithappen", um zu zeigen, dass sich die Lern-Mühe lohnen wird.
    Tutorial Teil 1: Relational Datamodel for Beginners

    So das hab ich heute fertig bekommen. Beim 2ten 3ten mal Lesen hatte ich jedenfalls für den Moment das Gefühl alles Verstanden zu haben (am längsten hab ich geraucht um m:n-Relation zu verstehen). Ist jedoch zu erwarten das ich trotzdem beim nächsten Mal wieder was durcheinander bekomme. Es fehlt halt noch die Übung. Ich versuch noch die anderen Teile genau so gut zu lesen und dann testweise ein Dataset für mein Eigenes Projekt zu planen. Danke noch mal für die viele Arbeit die in den Tuts steckt und für die ganzen hilfreichen Beiträge ...

    Puuh Teil 2 ist ja dann doch ne andere Nummer! Ich brauch ein paar Tage das nach zu bauen.

    codewars.com Rank: 4 kyu

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

    Erste Hürden aus : Databinding for Beginners

    1. PrimeKey Autoincrement = -1 'Frage erledigt: https://www.oreilly.com/library/view/adonet-cookbook/0596004397/ch04s02.html

    2. Entity Eigenschaften für Customer ID als PrimeKey 'Frage erledigt: Customer ID as String und Autoincrement off (Beispiel Datei ru2ntergeladen und da nachgesehen wie es eingestellt ist)
    (Ich muss extrem gut aufpassen das ich die Eigenschaften: Typ, AllowDBNull, etc. für jede Row richtig setze. Es kommt schnell vor das man was vergisst/übersieht.)

    3. Wie kontrolliert man später PrimeKey-ForeignKey Einstellung 'Frage erledigt:Doppelklick auf die Verbindungslinie im Designer
    (wäre es nicht schön, wenn die Linie genau aus der Row vom PrimeKey rauskommen würde und beim ForeignKey genau die passende Row treffen würde! Dann würde man im Designer auf einen Blick sehen, dass alles i.O. ist)

    4. Kann man bei mehreren Tables gleichzeitig die Eigenschaft der Rows "AllowBDNull" auf False setzen (ich hab es nicht hinbekommen und jeden Table händisch auf False stellen müssen)
    codewars.com Rank: 4 kyu
    zu 1. Was hast'n dir da für 'ne Grütze aussm Net gezogen?
    Du machst einfach den Dataset-Designer auf, legst den PrimKey fest und stellst AutoIncrement=true - mehr nicht. Da schreibt man doch kein Code für.
    Dass AutoIncrementSeed -1 ist belässte so - das tut keinem weh, und ist wenn iwann Datenbanken angesprochen werden sogar nützlich.
    Der Code ist wirklich ärgerlich, weil ich hab dir doch langnbreit erklärt, und im Tut stehts auch nochmal:
    Wo die Worte DataTable, DataRow, Dataset auftauchen, da ist Mist gecodet, weil das sind untypisierte Klassen.
    Was am typDataset zu coden ist, das handle über die typisierten Klassen ab, und das Setzen von Primkeys etc. gehört definitiv nicht dazu.

    zu 2.: Wie im Tut geschrieben: Für Primkeys ist DataTyp Integer vorzuziehen, und AutoIncrement On. Für davon abzuweichen solltest du gute Gründe haben - welche sind das in deim Fall?

    zu 3.: Ja, wäre schön ;)

    zu 4. Nö. Mehrere Tables gleichzeitig behandeln wüsstich nicht wie.
    Aber man kann mehrere Spalten gleichzeitig behandeln- AllowDbNull=False setze ich meist für alle Spalten, und bearbeite dann die Ausnahmen davon - wenn ich welche zulasse.

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Zu 1.
    Ich war nur irritiert warum da was mit -1 stand und nicht wie erwartet Start bei =0 und Incremenct =+1.
    Das hab ich gegoogelt und mir nur den letzten Absatz durch gelesen. Ich war auf der Suche nach einer Erklärung für die negativen Werte. Den ganzen Code davor hab ich nicht angesehen.
    Nur diese hier
    ----------------
    An AutoIncrement column generates a series of values beginning with the AutoIncrementSeed value and is incremented by the AutoIncrementStepvalue with each new value. This easily allows you to generate unique values for an integer-type column. A potential problem occurs when new rows are being inserted into an existing table for an identity field (in SQL Server) where the generated values conflict with existing values in the table because of, perhaps, new records added to the data source by other users. In this case, instead of being interpreted as new records by the data source, these records are incorrectly interpreted as updates of existing records.

    The problem can be avoided by setting the AutoIncrementSeed value to -1 and the AutoIncrementStep value to -1 thereby generating a sequence of negative values that does not conflict with the values generated by the data source, as long as the data source does not generate negative values. When the disconnected data is reconciled with the underlying data (see Recipe 4.2), the data source correctly identifies the records that have negativeAutoIncrement field values as new records, adds them to the data source, and in the process generates new values for the AutoIncrement field. Recipe 4.2 discusses synchronizing these data source-generated values with the disconnected data.

    ----------------------

    Zu 2. Ja! Das der Primekey eigentlich immer ID,Int32 und Autoincrement on sein soll hab ich ja gelesen. Daher war ich ja doppelt irritiert, als dann im Beispiel Customer PrimeKey String sein sollte.
    Der gute Grund steht ja im Tutorial :
    -------------------------
    ID-Property of all Tables is configurated as follows:
    Primkey, Integer, AutoIncrement, AutoIncrementSeed=-1, AutoIncrementStep=-1
    One Exception of that: Microsoft, the autor of the Northwind-Database, from where I derived my Datamodel, preferred to design the Customer-Primkey as String, for some Reasons :wtf: Effect is, there will come up Problems, when you want to create a new Customer, because the Dataset can't automatically generate a valid unique Primkey of type String :(
    -----------------------
    codewars.com Rank: 4 kyu
    Wenn man der Meinung ist, dass man eine Unique-ID als String braucht, muss man sich eben selber darum kümmern, dass bei .Add...Row() oder .NewRow() ein einmaliger String entsteht bzw. zur Verfügung gestellt wird. Ist nur meistens - v.a. für Einsteiger - nicht besonders leicht, da mal eine entsprechende Funktion zur Verfügung zu stellen. Personennamen z.B. sollte man nicht als Unique-ID hernehmen, denn wenn erstmal ein Max Müller in der Tabelle steht, darf kein weiterer mit dem Namen aufgenommen werden. Daher: bleib erstmal bei den AutoGeneratedIDs.
    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.
    Nönö, das passt schon. Damit wollte ich eigentlich Dein Zitat

    nogood schrieb:

    Microsoft [...] preferred to design the Customer-Primkey as String, for some Reasons
    nur kommentieren. Die werden schon einen (guten?) Grund gehabt haben, es so zu machen. Aber ist ja auch der Entwickler des ganzen. Und daher erfahren genug, es mit Absicht zu machen. Dass Du bei Auto-IDs bist und bleibst, stell ich nicht infrage.
    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.
    Mal wieder ne absolute Noob Frage ich kämpfe gerade mit den Split Containern Groupboxen etc.. Ich hab da etwas den Über blich verloren und will nun sehen welche Felder ich da überhaupt schon habe. Wo sehe ich noch mal in Visual Studio eine Liste aller Controls einer Form so das ich da was anklicken kann und im Designer ist es dann ausgewählt?
    Danke!
    ------------
    Ist es die Liste die ich über das kleine Dreieck öffnen kann


    Wenn ja; schaffe ich es nicht den SplitContainer1 zu löschen. Ich hab den Umweg genommen TabControl gelöscht und dann neu angelegt.
    codewars.com Rank: 4 kyu

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nogood“ ()

    Es gibt 2 Möglichkeiten: Du gehst über das Eigenschaftenfenster. Da gibt es dann eine ComboBox, wo Du entsprechend was auswählen kannst.
    Oder übersichtlicher: Die Dokumentengliederung. Dazu Menü Ansicht -> Weitere Fenster -> Dokumentengliederung (oder kurz über die Tastatur: Strg+Alt+T). Da kannst Du auch die Reihenfolge und Containerzugehörigkeit durch Drag&Drop ändern.
    Bilder
    • ShowAllCEs.png

      23,22 kB, 708×279, 120 mal angesehen
    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.
    Danke für die neuen Hausaufgaben. Nein ernst gemeint super Du das alles gemacht hast oder weißt das es das gibt (ist leider noch was was ich mir anschauen muss).
    Eine konkrete Frage hätte ich aber noch für heute dann ist auch Schluss. Ich habe am Anfang mein DataSet VerwaltungDS genannt. Auch die .xml Datei heisst bei mir VerwaltungDS.xml
    Kann ich noch die Original .xml Datei aus dem .zip mit meinem Projekt verbinden/ nutzen (damit ich DummyDaten habe).
    Denn
    ich dachte ich baue das gesamte Projekt aus Teil 2 (CodeProject:Databinding for Beginners) nach. Hab ich ja bis jetzt auch aber mir fehlen DummyDaten soll ich welche eintippen und weiter machen? Ich bin jetzt an der Stelle wo die Raw View mit allen Tabellen verknüpft ist und ich die Form1 compiliere und starte. Alles i.O. aber alles eben leer.

    Im Teil 2 "Databinding for Beginners" steht auch immer NorthWindDts.xml im zip finde ich dann aber "nur" OrderDts.xml. ein Tipp wie ich weiter machen soll ???
    Bilder
    • xml#.jpg

      100,49 kB, 808×473, 97 mal angesehen
    codewars.com Rank: 4 kyu

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nogood“ ()

    Es sollte klappen, wenn Du die XML-Datei per notepad öffnest und die zweite und die letzte Zeile so umbenennst, dass statt OrderDts eben VerwaltungDS drinsteht (Achtung: In der 2. Zeile steht 2x OrderDTS!). Abspeichern und Dein Projekt starten.
    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.
    @ Marcus Gräfe: Okay mach ich.

    Der Weg zum ersten typisierten DataSet (anhand der Tutorial: Relational Datamodel for Beginners)

    Okay wenn ich das in der Rubrik "Sonstige Problemstellungen" einstelle. Datenbank ist es ja irgendwie auch nicht?
    codewars.com Rank: 4 kyu

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