DataSets - Dies und Jenes

  • VB.NET
  • .NET 4.5

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    DataSets - Dies und Jenes

    Hey Gemeinde.

    Bin noch nicht ganz warm in Sachen DataSets. ;)

    Ich habe ein Formular manuell erstellt, die dann später nach Inhalt überprüft (wie Pflichtfelder, etc.) werden und via Button (noch kein Code) gespeichert werden.
    Problem ist hier, dass bei der Erfassung von Daten mehrere Tabellen betroffen sind (eine Tabelle ist mit der anderen verknüpft (Beziehung), usw.).
    Zum Beispiel tbl KUNDEN und tbl FAHRZEUGE stehen mittels kd_id in einer Beziehung. kd_id wird in der tbl KUNDEN automatisch hochgezählt. Aber diese muss dann auch in der tbl FAHRZEUGE eingetragen werden.

    Wisst Ihr, was ich meine? Das bisherige Formular ... hm ....


    Und mit DataSets (ohne DataGrid, etc. - nur Details) kann man das viel besser wohl umsetzen, aber alle Tabellen miteinander .... schwierig zu erklären, was ich meine.

    Das einzige was ich bisher gemacht habe, ist, ein DataSet erstellt, welches alle betroffenen Tabellen beinhaltet, die beim Anlegen eines Kunden erforderlich sind.


    Die ausführliche Version (Ansicht Datenquellen) im Anhang.


    An der Umsetzung scheitere ich gerade - habe ehrlich gesagt noch nicht wirklich was gemacht. Weil dieses WIE?

    Wie würdet Ihr das machen?
    Dateien
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Es wäre sinnvoller, wenn Du einen Screenshot Deines tDS-Designers hochlädst, also sowas:

    Zirkelverweise sind für mich persönlich verdächtig. es gibt vielleicht für solch eine Sache einen guten Grund, aber häufig ist es eher ein Fehldesign am Datenmodell. Ah, Moment, hab ich wohl falsch verstanden.

    JackCimberly schrieb:

    Zum Beispiel tbl KUNDEN und tbl FAHRZEUGE stehen mittels kd_id in einer Beziehung. kd_id wird in der tbl KUNDEN automatisch hochgezählt. Aber diese muss dann auch in der tbl FAHRZEUGE eingetragen werden.
    OK, ein Fahrzeug hat ne Kunden-ID. Logisch. Einen Besitzer. Aber warum sollte in der Fahrzeugtabelle irgendwas mit hochgezählt werden? Wenn Du mit KUNDEN.AddKUNDENRow arbeitest, werden die ganzen Kundendaten abgefragt. Logisch. Aber wenn Du ein Fahrzeug anlegst, wird keine Kunden_ID abgefragt, sondern eine KUNDENRow. D.h. wenn alles neu angelegt wird, hast Du

    VB.NET-Quellcode

    1. DeinTds.KUNDEN.AddKUNDENRow(GanzVieleKundendaten)
    2. DeinTds.FAHRZEUGE.AddFAHRZEUGERow([...], DeinTds.KUNDEN.Last, [...]

    oder

    VB.NET-Quellcode

    1. Dim CurrentCustomer = DeinTds.KUNDEN.AddKUNDENRow(GanzVieleKundendaten)
    2. DeinTds.FAHRZEUGE.AddFAHRZEUGERow([...], CurrentCustomer, [...])


    ##########

    Zuerst setzt/erstellst Du die Einträge jener Tabellen, die ohne Abhängigkeiten sind. Danach sind die Tabellen mit Abhängigkeiten dran. Da musst Du vorher die passenden Einträge aus den übergeordneten Tabellen raussuchen, die für jene neue Zeile gesetzt werden sollen. LINQ ist da das passende Stichwort, um schnell jene Einträge zu finden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    Vielleicht wird es jetzt klarer, diese Baumansicht ist doch schon undurchsichtig.
    Wobei ich die Beziehungen-Ansicht in Access deutlich besser finde.



    Schreibe später was dazu .... gerade auf dem Sprung.

    ### Edit
    Bild geändert - eine Tabelle war nicht zu sehen.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    JackCimberly schrieb:

    dass bei der Erfassung von Daten mehrere Tabellen betroffen sind (eine Tabelle ist mit der anderen verknüpft (Beziehung), usw.).
    Zum Beispiel tbl KUNDEN und tbl FAHRZEUGE stehen mittels kd_id in einer Beziehung. kd_id wird in der tbl KUNDEN automatisch hochgezählt.
    Es besteht also eine 1:n - Relation Kunde-Fahrzeug, oder anners gesagt: einem Kunden sind kein bis viele Fahrzeuge untergeordnet.

    Und du willst nu in einem Formular einen Kunden anlegen und gleichzeitig auch seine Fahrzeuge eintragen?

    Das geht mit Databinding so erstmal nicht.
    Für Databinding müsstest du erst den Kunden anlegen, und bevor der nicht angelegt ist und im Dataset vorhanden, kannste dem Kunde-Datensatz auch keinen Fahrzeug-Datensatz unterordnen.

    Oder eben die Fahzeug-Daten erstmal ungebunden eintragen, und dann per Code...

    Oder tricksen, also einen "NeuKunde"-Dummi-Datensatz anlegen, dem derlei vorläufige Fahrzeuge untergeordnet werden, und per Code...

    Aber ich denke schon zuviel, ich weiß ühaupt nicht, ob ich die Problemstellung richtig verstanden hab.
    Nabend.

    Probiere gerade so ein wenig rum, um die Daten gespeichert zu bekommen.

    Habe eine neue Form hergenommen und die Tabelle KUNDEN aus dem DataSet KundenAnlegenDataSet auf die Form gezogen.
    Entfernt habe ich das Label und die Textbox für die kd_id.
    Das Textfeld für das Geschlecht habe ich durch eine ComboBox ersetzt (Drag&Drop KUNDEN_GESCHLECHT aus dem o.g. DataSet auf die Form).

    Button zum Speichern des Kunden angelegt, mit folgendem Code:

    VB.NET-Quellcode

    1. Try
    2. 'KUNDENBindingSource.EndEdit()
    3. KUNDENTableAdapter.Insert(TitelTextBox.ToString, FirmaTextBox.ToString, KUNDEN_GESCHLECHTComboBox.SelectedItem, VornameTextBox.ToString, NachnameTextBox.ToString, GeburtstagDateTimePicker.Value, StrasseTextBox.ToString, PlzTextBox.ToString, OrtTextBox.ToString, Kunde_seitDateTimePicker.Value, BemerkungTextBox.ToString, Geaendert_amDateTimePicker.Value)
    4. 'KUNDENTableAdapter.Insert(titel:=TitelTextBox.Text, firma:=FirmaTextBox.Text, geschlecht_id:=KUNDEN_GESCHLECHTComboBox.SelectedValue, vorname:=VornameTextBox.Text, nachname:=NachnameTextBox.Text, geburtstag:=GeburtstagDateTimePicker.Value, strasse:=StrasseTextBox.Text, plz:=PlzTextBox.Text, ort:=OrtTextBox.Text, kunde_seit:=Kunde_seitDateTimePicker.Value, bemerkung:=BemerkungTextBox.Text, geaendert_am:=Geaendert_amDateTimePicker.Value)
    5. 'MessageBox.Show("Kunde wurde angelegt.")
    6. Catch ex As Exception
    7. MessageBox.Show(ex.Message)
    8. End Try


    Alle beiden Codes funktionieren nicht, es kommt immer die Meldung (Die angegebene Umwandlung ist ungültig.)

    @VaporiZed
    Habe Deinen Code auch schon hergenommen, er meckert schon bei der ersten Zeile vom oberen Code.
    AddKUNDENRow kennt der wohl nicht. Warum auch immer.

    Hm .....
    bin auch irgendwie müde .... :cursing: ?(

    ############## EDIT 01 #################
    Hätte das mal lesen sollen, was in VB-Programm vorgeschlagen wird, was in die Klammer von kommen soll:

    VB.NET-Quellcode

    1. KundenAnlegenDataSet.KUNDEN.AddKUNDENRow(TitelTextBox.ToString, FirmaTextBox.ToString, KUNDEN_GESCHLECHTComboBox.SelectedItem, VornameTextBox.ToString, NachnameTextBox.ToString, GeburtstagDateTimePicker.Value, StrasseTextBox.ToString, PlzTextBox.ToString, OrtTextBox.ToString, Kunde_seitDateTimePicker.Value, BemerkungTextBox.ToString, Geaendert_amDateTimePicker.Value)


    Nur @VaporiZed ´s Code - 2. Zeile vom ersten Code - diesen verstehe ich nicht. Hast mal ein Beispiel?
    Des Weiteren kommt die Meldung:
    Das Objekt des Types "System.Data.DataRowView" kann nicht in Typ 'KUNDEN_GESCHLECHTRow' umgewandelt werden.

    Hm .....
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

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

    JackCimberly schrieb:

    2. Zeile vom ersten Code
    Damit meinst Du was? Das hier?

    VB.NET-Quellcode

    1. DeinTds.FAHRZEUGE.AddFAHRZEUGERow([...], DeinTds.KUNDEN.Last, [...]
    Falls ja, dann mein ich damit: Wenn Du eine Fahrzeugzeile anlegen willst, kannst Du ja mit Kundenangelegenheiten.FAHRZEUGE.AddFAHRZEUGERow arbeiten. Sobald Du die Klammer danach öffnest, schreibt Dir IntelliSense ja hin, was gefordert wird. Als erstes dürfte da eine KUNDENRow verlangt werden. Und um da eine anzugeben, kannst Du mittels LINQ (also DeinTds.KUNDEN.Last) die letzte Zeile der Kundentabelle herholen. Das ergibt aber nur Sinn, wenn Du gerade nen Kunden frisch angelegt hast und diesen dem Fahrzeug, welches Du anlegen willst zuordnen möchtest.
    Bei welchem Code kommt die Exception? Doch bestimmt im Zusammenhang mit KUNDEN_GESCHLECHTComboBox.SelectedItem. Das Problem ist, dass Du über die ComboBox.SelectedItems keine DataRows bekommst, sondern ein DataRowView. Daher braucht es ja auch immer solche Konstrukte, um von BindingSource.Current auf eine DataRow zu kommen:

    VB.NET-Quellcode

    1. Dim CurrentCustomer = DirectCast(DirectCast(KundenBindingSource.Current, DataRowView).Row, Kundenangelegenheiten.KUNDENRow)

    Also erst die Umwandlung vom BindingSource.Current in ein DataRowView, dann nimmt man davon die Row und diese untypisierte DataRow wandelt man in eine typisierte um.

    ##########

    btw: Solche Sachen TitelTextBox.ToString solltest Du lassen. Da kommt Mus raus. Nimm TitelTextBox.Text ;)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    @JackCimberly

    Du solltest auch bei deinem Code, wenn du den Inhalt deiner Textboxen haben möchtest, den Text mit der Eigenschaft Text abrufen. Denn Textbox.ToString gibt dir einfach nur den Namen der Klasse (wenn ich mich nicht täusche) wieder, aber nicht den eigentlich gewollten Text.
    @KingLM97: As I said:

    VaporiZed schrieb:

    btw: Solche Sachen TitelTextBox.ToString solltest Du lassen. Da kommt Mus raus. Nimm TitelTextBox.Text
    bei MyOwnTextBox.ToString kommt schon der Text raus, aber nicht nur. Da entsteht dann z.B. "System.Windows.Forms.Textbox, Text: der eingetragene Text in der TextBox".
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Heute bin mal wieder dran. ;)
    Habe derzeit am Updater gearbeitet und mit Gedanken über diesen Thread gemacht und natürlich probiert.

    @KingLM97 und @VaporiZed

    Hehe. Stimmt - Textbox.Text.
    Keine Ahnung, wie ich auf .ToString gekommen bin.
    Besten Dank.

    @ErfinderDesRades
    Entschuldige bitte, dass ich nicht darauf eingegangen bin. War keine Absicht.
    Ich versuche es hier noch mal zu erläutern.

    Das was ich gemeint habe, glaube aber verstanden zu haben, dass du die Problematik erkannt hast.

    Ich habe eine Tabelle KUNDEN und Tabelle FAHRZEUGE.
    KUNDEN.kd_id ist gleichzeitig die Kundennummer und wird bei jedem neuen Datensatz erhöht (Autowert). Diese KUNDEN.kd_id muss auch bei FAHRZEUGE.kd_id eingetragen/gespeichert werden.
    Und das funktioniert nicht? Kann man die KUNDEN.kd_id nicht ermitteln, die verwendet wird, wenn ein Kunde (mit Fahrzeug, etc) angelegt wird?

    @Alle
    Ich habe ja ein DataSet angelegt mit dem Namen "KundenAnlegenDataSet" mit all den Tabellen, die im Post #3 zu sehen sind.
    Auf meiner Form habe ich die ComboBox KUNDEN_GESCHLECHTComboBox via Databinding. Hieraus benötige ich die KUNDEN_GESCHLECHT.geschlecht_id (nicht der ausgegebene Name "geschlecht_name"), die ich wiederum in KUNDEN.geschlecht_id speichern möchte.

    Tabelle KUNDEN_GESCHLECHT
    geschlecht_idgeschlecht_name
    1Frau
    2Herr
    3Inter/Divers/Anders


    Ich habe den Code von @VaporiZed hergenommen, aber es kommt immer die Meldung:

    Quellcode

    1. Fehler BC30311 Der Wert vom Typ "Integer" kann nicht in "KundenAnlegenDataSet.KUNDEN_GESCHLECHTRow" konvertiert werden.


    Verwendeter Code:

    VB.NET-Quellcode

    1. Dim geschlecht = DirectCast(DirectCast(KUNDENBindingSource.Current, DataRowView).Row, KundenAnlegenDataSet.KUNDENRow)
    2. Dim geschlecht_id As Integer = geschlecht.geschlecht_id


    und

    VB.NET-Quellcode

    1. Dim view As DataRowView = DirectCast(KUNDENBindingSource.Current, DataRowView)
    2. Dim untypedRow As DataRow = view.Row
    3. Dim geschlecht_id As KundenAnlegenDataSet.KUNDENRow = DirectCast(untypedRow, KundenAnlegenDataSet.KUNDENRow)


    VB.NET-Quellcode

    1. KundenAnlegenDataSet.KUNDEN.AddKUNDENRow(TitelTextBox.Text, FirmaTextBox.Text, geschlecht_id, VornameTextBox.Text, NachnameTextBox.Text,
    2. GeburtstagDateTimePicker.Value, StrasseTextBox.Text, PlzTextBox.Text, OrtTextBox.Text, Kunde_seitDateTimePicker.Value,
    3. BemerkungTextBox.Text, Geaendert_amDateTimePicker.Value)



    ?(
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Da stimmt aber was bei Deinen Angaben nicht mit der Exception. Da dort versucht wird, ein BindingSource-Current über das DataRowView und deren Row in eine KundenAnlegenDataSet.KUNDENRow zu casten, kann die Exception "[...] kann nicht in "KundenAnlegenDataSet.KUNDEN_GESCHLECHTRow" konvertiert werden." nicht stimmen. Denn in eine KUNDEN_GESCHLECHTRow wird ja gar nicht gecastet. Zumindest nicht in jener Zeile.

    ##########

    Argh. Im letzten Codeteil kommt wohl die Fehlermeldung. Natürlich. Wie schon mehrfach gesagt. Bei AddKUNDENRow und anderen AddXYZRow-Aufrufen werden von anderen Tabellen keine IDs entgegengenommen, sondern DataRows. Der 3. Parameter ist falsch. Du willst eine geschlecht_id übergeben, obwohl IntelliSense und ich sagen: eine KUNDENGESCHLECHTROW muss da rein.

    @JackCimberly: Nachtrag reineditiert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Probier mal

    VB.NET-Quellcode

    1. Dim ZeileDesGeschlechtsDesAktuellenKunden = DirectCast(DirectCast(KUNDEN_GESCHLECHTBindingSource.Current, DataRowView).Row, KundenAnlegenDataSet.KUNDEN_GESCHLECHTRow)
    2. KundenAnlegenDataSet.KUNDEN.AddKUNDENRow(TitelTextBox.Text, FirmaTextBox.Text, ZeileDesGeschlechtsDesAktuellenKunden, VornameTextBox.Text, NachnameTextBox.Text,
    3. GeburtstagDateTimePicker.Value, StrasseTextBox.Text, PlzTextBox.Text, OrtTextBox.Text, Kunde_seitDateTimePicker.Value,
    4. BemerkungTextBox.Text, Geaendert_amDateTimePicker.Value)

    Du musst ja schließlich das ausgewählte Geschlecht (also die Row von KundengeschlechtBindingSource.Current) nehmen und an Deine AddKUNDENRow-Funktion übergeben. Du hast doch ne BindingSource, die direkt auf die Tabelle KUNDEN_GESCHLECHT verweist, richtig? Und die dürfte ungefähr KundengeschlechtBindingSource heißen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    Probier mal
    Du musst ja schließlich das ausgewählte Geschlecht (also die Row von KundengeschlechtBindingSource.Current) nehmen und an Deine AddKUNDENRow-Funktion übergeben. Du hast doch ne BindingSource, die direkt auf die Tabelle KUNDEN_GESCHLECHT verweist, richtig? Und die dürfte ungefähr KundengeschlechtBindingSource heißen.


    Ja, in der Formular sind folgende BindingSources zu sehen: KUNDENBindingSource und KUNDEN_GESCHLECHTBindingSource. Ja, vorhanden und verweist auf die Tabelle KUNDEN_GESCHLECHT, aber im DataSet KundenAnlegenDataSet.

    Habe den Code unverändert von dir genommen:
    "Ungültige Konvertierung von der Zeichenfolge in Typ Single"
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Dann sind wir doch schon mal einen Schritt weiter. Also geht es nun darum, dass Deine AddKundenRow-Funktion an irgendeiner Stelle nicht Deine übergebenden TextBox-Texte akzeptiert, weil in der KundenDataTable Spalten sind, die andere Datentypen verlangen. Geh mal bitte hinter das AddKUNDENRow, tipp eine geöffnete Klammer ein und mach einen Screenshot, damit Du sowas erhältst und lad es bitte über [Erweiterte Antwort] hoch:

    Ggf. auf die markierten Pfeile klicken, da IntelliSense wahrscheinlich zuerst die Überladung mit einer vollständiger KundenRow als Parameter anzeigt. Durch Klicken auf die Pfeile kommst Du zur 2. Überladung, in der die Einzelparameter (inkl. Typ!!!) gezeigt werden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Moinsen @VaporiZed

    Gerne doch:


    Pfeile sind bei mir keine zu sehen.

    (1+ Überladung)?
    Die Meldung kam mal, wo ich ein Parameter vergessen habe, anzugeben. Aber hier sind alle vorhanden. Sonstige Fehlermeldung diesbezüglich erscheinen nicht.

    Das sieht so aus, es liegt an KUNDEN.plz, die hat Single.

    Im obigen Screenshot habe ich die entsprechende Zeile plz geändert.

    VB.NET-Quellcode

    1. ​Dim plz As Single = PlzTextBox.Text

    Fehler bleibt leider noch.

    Danke für Deine Geduld ;)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    OMG! Bitte fang mit Option Strict On an!

    VB.NET-Quellcode

    1. Dim plz as Single = PlzTextBox.Text
    Das geht ja mal gar nicht! Sowas ist eine der ersten Fehlerquellen, die man einfach abschalten kann und soll, da es viel zu viel impliziten Mus erzeugt, den man sich später nicht erklären kann ist.
    Ansonsten werden noch 3 Datumsangaben benötigt. Klar, dass dann VS rummeckert, wenn Du überall Strings übergibst. Die Daten müssen alle den von der Funktion erwarteten Typ haben.

    btw: Warum sollte ne Postleitzahl ne Kommazahl sein?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Quellcode

    1. ​Option Strict ON

    Und schon wurden einige Fehler angezeigt, wie auch das von Dir erwähnte Textfeld.
    Habe es nicht geschafft, das in Integer umzuwandeln - ohne Erfolg. Spalte plz als String umgestellt.

    Jetzt kommen keine Fehler mehr.
    Nur die Überladung aus Post 16.

    Gespeichert wird nichts. Kein Fehler - kein gar nichts.

    VB.NET-Quellcode

    1. Try
    2. Dim ZeileDesGeschlechtsDesAktuellenKunden = DirectCast(DirectCast(KUNDEN_GESCHLECHTBindingSource.Current, DataRowView).Row, KundenAnlegenDataSet.KUNDEN_GESCHLECHTRow)
    3. Dim title As String = TitelTextBox.Text
    4. Dim firma As String = FirmaTextBox.Text
    5. Dim vorname As String = VornameTextBox.Text
    6. Dim nachname As String = NachnameTextBox.Text
    7. Dim geburtstag As Date = CDate(GeburtstagDateTimePicker.Value)
    8. Dim strasse As String = StrasseTextBox.Text
    9. Dim plz As String = PlzTextBox.Text
    10. Dim ort As String = OrtTextBox.Text
    11. Dim kunde_seit As Date = CDate(Kunde_seitDateTimePicker.Value)
    12. Dim bemerkung As String = BemerkungTextBox.Text
    13. Dim geaendert_am As Date = CDate(Geaendert_amDateTimePicker.Value)
    14. KundenAnlegenDataSet.KUNDEN.AddKUNDENRow(title, firma, ZeileDesGeschlechtsDesAktuellenKunden, vorname, nachname, geburtstag, strasse, plz, ort, kunde_seit, bemerkung, geaendert_am)
    15. Catch ex As Exception
    16. MessageBox.Show(ex.Message & vbCrLf & vbCrLf & ex.StackTrace)
    17. End Try​


    Den Try-Block hatte ich ebenfalls schon ausgeblendet.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    JackCimberly schrieb:

    Habe es nicht geschafft, das in Integer umzuwandeln - ohne Erfolg. Spalte plz als String umgestellt.
    ;(
    PLZ sollte Int32 sein. Und das mit der Umwandlung geht am besten: Typ.Parse(Text), also z.B.:

    VB.NET-Quellcode

    1. Dim GeburtsdatumAlsEchtesDatum = Date.Parse(Geburtstagtextbox.Text)
    2. Dim PLZAlsEchteGanzzahl = Integer.Parse(PLZtextbox.Text) 'Integer ist meist Int32

    Das schaffst Du. :)
    Und weg mit dem Try-Catch. Das macht die Sache nicht besser - zumindest nicht hier.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ich hatte das mit Convert.ToInt32 versucht zu klären. Hm ... nix

    Aber das schaut natürlich besser aus.

    Dennoch finde ich keinen Datensatz in der Access-Datenbank und ebenso Daten abrufen im DataSet Designer.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren