Erweiterter Umgang mit typisiertem DataSet -> Tabellennamen lesen/Namensübergabe etc.

  • VB.NET
  • .NET (FX) 4.0

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

    ErfinderDesRades schrieb:

    Kann ich nicht nachstellen.
    Aber ich hab inzwischen glaub eine andere Helpers-Version als du - probierma hiermit:


    Ich gehe davon aus, dass du mit "andere Helpers-Version" nur die BindingSourceX meinst?

    Damit geht's auch nicht. Wie gesagt, kommt nur wenn man die gleichen Einträge für Multiedit auswählt wie beim 1. Mal auch... das sollte sich auch nachstellen lassen.


    ErfinderDesRades schrieb:

    Naja - dlgMitarbeiterSuche hat ja eine Bindingsource, und die hat eine Current-Property - sollte doch kein Problem sein, den gewählten Mitarbeiter herauszufinden, odr?

    wenn's ein "echter Dialog" wäre, dann wäre das vermutlich irgendwie mit bsBenutzer.At(Of BenutzerRow).Benutzername. Da ich auf dem Dialog aber noch eine Suchfunktion brauche, wird das Teil
    leider nicht mit .ShowDialog() angezeigt sondern als "normale Form" - oder gibt's da auch die Möglichkeit den DialogResult abzufragen?
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    tragl schrieb:

    Da ich auf dem Dialog aber noch eine Suchfunktion brauche, wird das Teil leider nicht mit .ShowDialog() angezeigt sondern als "normale Form"
    Diese Zwangsläufigkeit kann ich nicht nachvollziehen.
    kannst du mal Code zeigen, wie du den dlgMitarbeiterSuche von dlgLogin aus aufrufst?

    Das annere Problem habich wie folgt gefixt:

    VB.NET-Quellcode

    1. Dim drv0 = drvs(0)
    2. If Not drv0.IsEdit Then drv0.BeginEdit()
    (aber das hätteste vlt sogar selbst gekonnt, mit Haltepunkt und Lokalfenster feste debuggen...)

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

    ErfinderDesRades schrieb:

    kannst du mal Code zeigen, wie du den dlgMitarbeiterSuche von dlgLogin aus aufrufst?


    OK, hab's wie folgt hinbekommen:
    dlgLogin ruft nun dlgUsersuche wie folgt auf:

    VB.NET-Quellcode

    1. Dim dlg As New dlgUsersuche
    2. Dts.Register(dlg, False)
    3. If dlg.ShowDialog = DialogResult.OK Then
    4. tbBenutzer.Text = dlg._username
    5. End If


    Auf dlgUsersuche gibt's dazu eine Public Shared Property _username As String, und wird "befüllt" mit

    VB.NET-Quellcode

    1. Private Sub dgv_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellDoubleClick
    2. _username = bsBenutzer.At(Of BenutzerRow).Benutzername
    3. Me.DialogResult = DialogResult.OK
    4. End Sub


    oder

    VB.NET-Quellcode

    1. Private Sub btn_Click(sender As Object, e As EventArgs) Handles btnCancel.Click, btnOK.Click, btnAusgabe.Click
    2. Select Case True
    3. Case sender Is btnOK
    4. If dgv.SelectedRows.Count > 0 Then
    5. _username = bsBenutzer.At(Of BenutzerRow).Benutzername
    6. Me.DialogResult = DialogResult.OK
    7. Else
    8. Return
    9. End If
    10. Case sender Is btnCancel
    11. Me.DialogResult = DialogResult.Cancel
    12. Case sender Is btnAusgabe
    13. Me.DialogResult = DialogResult.None
    14. bsBenutzer.Filter = $"expFullname Like '*{tbMitarbeitersuche.Text}*' AND Aktiv = True"
    15. End Select
    16. End Sub


    Es gibt nur noch folgendes "Problem":
    er zieht sich den korrekten Wert etc. aber im Code wird folgendes angezeigt:

    wie umgehe ich das?



    ErfinderDesRades schrieb:

    (aber das hätteste vlt sogar selbst gekonnt, mit Haltepunkt und Lokalfenster feste debuggen...)


    Das annere Thema teste ich nachher. Ich bin eigentlich alles komplett mit Einzelschritt durchgegangen - mir war da nix aufgefallen :|
    Aber funzt natürlich der Fix. Danke dafür :thumbup:
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    tragl schrieb:

    Ich bin eigentlich alles komplett mit Einzelschritt durchgegangen
    Na, du musst dir im Lokalfenster dazu die Eigenschaften des drv0 angucken.
    Da stellt man einen deutilichen Unterschied fest, mit welchem drv0 es geht, und mit welchem nicht.

    Nämlich die drv.IsEdit - Property.



    zum ShowFormData: Willst du nicht doch mal versuchen zu erklären, warum das nicht modal anzeigen darf?
    In meiner Welt würde der User, der seinen Namen vergessen hat, den Button klicksen, dann geht das auf, er sucht sich da aus, ENTER, und eingetragen wirds.
    so wie dus gemacht hast ist natürlich doof - diese Sub erstellt ja selbst das Form, und gibt auch nichts zurück - so kann man die dort getroffene Auswahl natürlich nicht auswerten.

    Glaub am besten, du lässt die ganze Sub erstmal weg, und löst das Problem erstmal im Einzelfall dort, wo es zu lösen ist.
    Nix mit Zeugs wie (Of T As {Form, New})

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

    ErfinderDesRades schrieb:

    zum ShowFormData: Willst du nicht doch mal versuchen zu erklären, warum das nicht modal anzeigen darf?


    Ich hatte das ja noch ergänzt, die wird ja nun modal angezeigt:

    Aufruf auf dlgLogin:

    VB.NET-Quellcode

    1. Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    2. Dim dlg As New dlgUsersuche
    3. Dts.Register(dlg, False)
    4. If dlg.ShowDialog = DialogResult.OK Then
    5. tbBenutzer.Text = dlg._username
    6. End If
    7. End Sub

    hier wird mir allerdings wie eben geschrieben das dlg._username grün untermalt


    dlgUsersuche:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports Logistik_Tool.dtsLogistik
    2. Public Class dlgUsersuche
    3. Public Shared Property _username As String
    4. Private Sub dlgUsersuche_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. ControlStyling.StyleDGV(Me)
    6. bsBenutzer.Filter = "Aktiv = True"
    7. dgv.MultiSelect = False
    8. End Sub
    9. Private Sub dgv_SelectionChanged(sender As Object, e As EventArgs) Handles dgv.SelectionChanged
    10. tssMarkiert.Text = $"markierte Einträge: {dgv.SelectedRows.Count}"
    11. tssGesamt.Text = $"Einträge: {dgv.Rows.Count}"
    12. End Sub
    13. Private Sub tss_Click(sender As Object, e As EventArgs) Handles tssShowAll.Click
    14. DataGridViewAutoFilterTextBoxColumn.RemoveFilter(dgv)
    15. DataGridViewAutoFilterCheckBoxColumn.RemoveFilter(dgv)
    16. DataGridViewAutoFilterComboBoxColumn.RemoveFilter(dgv)
    17. End Sub
    18. Private Sub dgv_DataBindingComplete(sender As Object, e As DataGridViewBindingCompleteEventArgs) Handles dgv.DataBindingComplete
    19. Dim filterStatus = DataGridViewAutoFilterColumnHeaderCell.GetFilterStatus(dgv)
    20. If String.IsNullOrEmpty(filterStatus) Then
    21. tssShowAll.Visible = False
    22. tssFilterStatus.Visible = False
    23. Else
    24. tssShowAll.Visible = True
    25. tssFilterStatus.Visible = True
    26. tssFilterStatus.Text = filterStatus
    27. End If
    28. End Sub
    29. Private Sub btn_Click(sender As Object, e As EventArgs) Handles btnCancel.Click, btnOK.Click, btnAusgabe.Click
    30. Select Case True
    31. Case sender Is btnOK
    32. If dgv.SelectedRows.Count > 0 Then
    33. _username = bsBenutzer.At(Of BenutzerRow).Benutzername
    34. Me.DialogResult = DialogResult.OK
    35. Else
    36. Return
    37. End If
    38. Case sender Is btnCancel
    39. Me.DialogResult = DialogResult.Cancel
    40. Case sender Is btnAusgabe
    41. Me.DialogResult = DialogResult.None
    42. bsBenutzer.Filter = $"expFullname Like '*{tbMitarbeitersuche.Text}*' AND Aktiv = True"
    43. End Select
    44. End Sub
    45. Private Sub dgv_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellDoubleClick
    46. _username = bsBenutzer.At(Of BenutzerRow).Benutzername
    47. Me.DialogResult = DialogResult.OK
    48. End Sub
    49. End Class


    Wertübergabe klappt und es ist ein richtiger Dialog. Nur das Problem mit dem grün untermalten stört mich noch
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    petaod schrieb:

    Mach mal das Shared weg.


    Danke, funzt.
    Ist das denn so eine richtige Methode, um Werte aus einem Dialog zu bekommen? Ich finde da macht's Microsoft einem echt schwer..
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    hmm - wie schwer denn?
    Wenn ich recht gezählt habe, wendest du 3 Zeilen dafür auf.

    Da könnteste auch noch 2 von einsparen, wenn du so machen würdest, wie ich vorschlug, aber soo schwer find ich das nicht gemacht.



    btnCancel.Click, btnOK.Click könnte man noch einsparen, wenn man im FormDesigner das DialogResult richtig setzt.

    ErfinderDesRades schrieb:

    hmm - wie schwer denn?
    Wenn ich recht gezählt habe, wendest du 3 Zeilen dafür auf.

    ja ist schon richtig

    ErfinderDesRades schrieb:

    Da könnteste auch noch 2 von einsparen, wenn du so machen würdest, wie ich vorschlug

    wie meinen?

    ErfinderDesRades schrieb:

    btnCancel.Click, btnOK.Click könnte man noch einsparen, wenn man im FormDesigner das DialogResult richtig setzt.

    ja, klingt auf der einen Seite logisch aber ich übergebe ja den Username entweder mit Doppelklick im DGV ODER mit Klick auf OK - deshalb werd' ich btnOK schon brauchen.
    Die beiden Buttons (OK, abbrechen) sind aber nichts desto trotz korrekt als DialogResult in der Form eingestellt (hab ja ein Template für Dialoge)

    Funktioniert ja so erstmal - Wenn du Lust hast, schick' ich dir gerne später mal das Projekt zum drüberschauen. Da kann man bestimmt noch einige Zeilen Code einsparen X/
    Ich muss jetzt aber als nächstes erstmal den Planer einhäkeln und noch einige Sonderfunktionen für unsere Kennzahlen (das wird noch ein Krampf).
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    Da könnteste auch noch 2 von einsparen, wenn du so machen würdest, wie ich vorschlug
    wie meinen?

    VB.NET-Quellcode

    1. Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    2. Dim dlg As New dlgUsersuche
    3. Dts.Register(dlg, False)
    4. If dlg.ShowDialog = DialogResult.OK Then
    5. tbBenutzer.Text = dlg.bsBenutzer.At(Of BenutzerRow).Name
    6. End If
    7. End Sub
    Das würde die UserName-Property erübrigen.
    Und wie gesagt: explizites Handling eines Ok-Buttons ist entbehrlich - Das DialogResult ist ja bereits gesetzt.
    Und wenn du mit DoppelKlick das Form schliessen willst, reicht ebenfalls, das DialogResult zu setzen - das Form schliesst dann automatisch.
    Warum du nun bei btnAusgabe noch ein DialogResult setzst - noch dazu auf None - ich weiss es nicht - weisst du's? ;)

    ErfinderDesRades schrieb:

    Das würde die UserName-Property erübrigen.
    Und wie gesagt: explizites Handling eines Ok-Buttons ist entbehrlich - Das DialogResult ist ja bereits gesetzt.
    Und wenn du mit DoppelKlick das Form schliessen willst, reicht ebenfalls, das DialogResult zu setzen - das Form schliesst dann automatisch.

    ja danke, darauf bin ich nicht gekommen vom Aufruf aus schon die bs zu benutzen. Hab' ich so übernommen jetzt und habe damit ja ein Beispiel für weitere Auswahldialoge :thumbup:
    Hab's dann jetzt wo's läuft noch - so wie ich's von euch gelernt hab - in einen Using-Block gepackt ;)

    VB.NET-Quellcode

    1. Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    2. Using dlg As New dlgUsersuche
    3. Dts.Register(dlg, False)
    4. If dlg.ShowDialog = DialogResult.OK Then
    5. tbBenutzer.Text = dlg.bsBenutzer.At(Of BenutzerRow).Benutzername
    6. End If
    7. End Using
    8. End Sub

    ErfinderDesRades schrieb:

    Warum du nun bei btnAusgabe noch ein DialogResult setzst - noch dazu auf None - ich weiss es nicht - weisst du's?

    ja, weiß ich: das ist ein Button der innerhalb des Dialogs eine Suche ausführt, jenachdem was in die Textbox eingegeben wurde. Lass ich das Me.DialogResult = DialogResult.None weg
    dann schließt sich der Dialog - ohne ausgeführte Suche ;)


    nochwas anneres:
    Ich hab einer Table testweise mal die Felder "bearbeitetVon, bearbeitetTyp, bearbeitetDatum" hinzugefügt - Sinn und Zweck ist der, dass man sehen können soll
    wer wann was gemacht hat. Also erstmal pro Datensatz:

    - wird "EditNew" gestartet, wäre das dann "Username, bearbeitet, Datum/Uhrzeit"
    - wird "EditCurrent" gestartet: "Username, neu angelegt, Datum/Uhrzeit"

    Wenn ich jetzt einen Eintrag z.B. editiere sehe ich auch auf meiner DetailForm in den "ReadOnly-Textboxes" die entsprechenden Werte stehen, die werden aber nicht
    an den Datensatz übernommen. Weißt du woran das liegen kann? Soll ich ne Sample-Solution häkeln?



    PS: Ich hab die 3 Felder nachträglich in die Table gepackt - sollte aber eigentlich keine Rolle spielen oder?
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    tragl schrieb:

    Lass ich das Me.DialogResult = DialogResult.None weg dann schließt sich der Dialog - ohne ausgeführte Suche
    Dann überprüf mal, ob diesem Button im DEsigner vielleicht ein DialogResult zugewiesen ist (sowas passiert etwa bei Copy&Paste).



    tragl schrieb:

    nochwas anneres... Soll ich ne Sample-Solution häkeln?
    Jo - aus deine Beschreibung werde ich nicht schlau.

    tragl schrieb:

    Ich hab einer Table die Felder "bearbeitetVon, bearbeitetTyp, bearbeitetDatum" hinzugefügt...
    - wird "EditNew" gestartet, wäre das dann "Username, bearbeitet, Datum/Uhrzeit"
    - wird "EditCurrent" gestartet: "Username, neu angelegt, Datum/Uhrzeit"
    Wie kann man je nach aufgerufenem Edit-Modus verschiedene Felder zugefügt haben?
    In meiner Welt sind Felder zugefügt oder nicht.

    ErfinderDesRades schrieb:

    Dann überprüf mal, ob diesem Button im DEsigner vielleicht ein DialogResult zugewiesen ist (sowas passiert etwa bei Copy&Paste).


    Jupp, stand natürlich auf DialogResult cancel :whistling:


    hat etwas gedauert aber ich war zu faul ne testsolution extra dafür zu basteln. ich hab' dir das projekt angehangen, musste allerdings vorher die Daten noch verfälschen,
    da ich echte daten von uns zum Testen drin hatte :D
    Was ich mit den Feldern meinte: Tabelle "DatenabfrageHc" die letzten 3 Felder

    Gefüllt werden die beim FormLoad über

    VB.NET-Quellcode

    1. Public Sub setEditFlags(tbBenutzer As TextBox, tbTyp As TextBox, tbDatum As TextBox)
    2. tbBenutzer.Text = _mitarbeiter
    3. tbDatum.Text = Date.Now.ToString
    4. tbTyp.Text = _typ
    5. End Sub


    Dann Menupunkt 3.1 = DatenabfrageHc z.B. irgendeinen Eintrag auswählen und bearbeiten oder wegen mir einen neuen erstellen.
    Im DetailForm sieht man dann den User, den Bearbeitungstyp und aktuelles Datum - die Werte werden aber nicht übernommen.
    Dateien
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    ErfinderDesRades schrieb:

    Jo - aus deine Beschreibung werde ich nicht schlau.


    also das "Phänomen" lässt sich an anderer Stelle genauso generieren. Ist wohl so, wenn eine an eine BindingSource gebundene TextBox oder ComboBox von "außen" gefüllt wird und man nicht im Betrieb am Control rum hantiert,
    dann übernimmt der einfach keine Werte an die Bindingsource.

    In der Solution ganz einfach ersichtlich:
    2.4.1 Bestellung -> Oben im MenuStrip auf Positionen -> hinzufügen.
    Wenn man im darauf folgenden Dialog einen Artikel sucht und auswählt, wird der gewählte Artikel beim DialogResult.OK nicht übernommen -> siehe Screenshots.


    Gibt's da was, um die Controls zu "validieren", dass die Werte dann übernommen werden?

    LG
    Dateien
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    kompiliert bei mir nicht - vlt. weil ichnur vb2017 habe. Folgende Zeile:

    VB.NET-Quellcode

    1. Dts.Plan.AddPlanRow(loopDatum, rwMitarbeiter, rwUrlaubStatus, rwDienstStatus, gesichtet:=False, genehmigt:=False, GenehmigungErteilt:="", BemerkungTextBox.Text)
    ergibt:
    Named argument expected. Please use language version 15.5 or greater to use non-trailing named arguments.

    Problem ist, dass du benannte Argumente verwendest, und dann das letzte nicht mehr benannt ist.
    Kann ich natürlich für mich fixen, blos bei deim nächsten Upload steh ich wieder vorm selben Generve.

    ErfinderDesRades schrieb:

    kompiliert bei mir nicht - vlt. weil ichnur vb2017 habe. Folgende Zeile:


    Danke für den Hinweis, hab' ich geändert. Sieht nun wie folgt aus und damit sollte das Problem vom Tisch sein ;) :
    Dts.Plan.AddPlanRow(loopDatum, rwMitarbeiter, rwUrlaubStatus, rwDienstStatus, False, False, "", BemerkungTextBox.Text)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    nu bekomme ich beim Starten folgende Textbox:
    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    The security debugging option is set but it requires the Visual Studio hosting process which is unavailable in this debugging configuration. The security debugging option will be disabled. This option may be re-enabled in the Security property page. The debugging session will continue without security debugging.
    ---------------------------
    OK Hilfe
    ---------------------------

    Was bedeutet das?

    Muss ich mir um Security Sorgen machen?



    Ich habs jetzt mal so gelöst:

    VB.NET-Quellcode

    1. If dlg.ShowDialog = DialogResult.OK Then
    2. bsPositionAdd.At(Of PositionRow).ArtikelRow = dlg.bsArtikelSuche.At(Of ArtikelRow)
    3. bsPositionAdd.ResetCurrentItem()
    4. End If
    Weisst ja: Vorrangig an den Daten arbeiten, nur nachrangig an den Controls rumfummeln.
    Wobei hier leider das .ResetCurrentItem() nötig ist, weil das Databinding die Combobox scheints nicht autoRefresht (wie es eiglich sollte).
    Vermutlich, weil die BindingSource eben nicht an einer DataTable hängt, sondern nur an einem einzelnen DataRowview.

    (PS: Uih - ist ja kräftig gewachsen, das Teil!)

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

    ErfinderDesRades schrieb:

    Was bedeutet das?

    Muss ich mir um Security Sorgen machen?

    kann ich dir garnix zu sagen - wird mir net angezeigt :huh:
    Edit: Hat wohl was mit dem ClickOnce-Müll zu tun. Probierma den Haken bei ClickOnce-Sicherheitseinstellungen aktivieren rauszunehmen, ob's dann weg is. Das ist der Setup-Mist, den ich
    schon erwähnt hatte. Kompilierst du ein Release werden Setup-Dateien erzeugt, womit das Programm "installiert" werden kann - was hier aber net nötig is weil keine Registry-Einträge gemacht werden und
    keine weiteren Librarys benötigt werden, das Programm läuft auch ohne Install.



    ErfinderDesRades schrieb:

    Ich habs jetzt mal so gelöst:


    Danke, probier' ich nachher ma aus :thumbup: schon seltsam das verhalten - ist bei Textboxen aber genauso :(



    ErfinderDesRades schrieb:

    (PS: Uih - ist ja kräftig gewachsen, das Teil!)

    jupp - und wächst Tag für Tag weiter. Ist das mittlerweile alles logischer für dich? :D
    und als Expertenmeinung von dir: wie sieht der Code bisher aus, hast ja bestimmt mal reingelunzt. Sind noch einige Ecken, wo ich noch dran muss aber sollte weitestgehend sauber gecodet sein. ;) (zumindest im Gegensatz zum 1. Versuch)


    ErfinderDesRades schrieb:

    Wobei hier leider das .ResetCurrentItem() nötig ist, weil das Databinding die Combobox scheints nicht autoRefresht (wie es eiglich sollte).

    Edit: geht für die Bestellpositionen auch ohne .RestCurrentItem() ;)

    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    Hallo,

    ich bin's nochmal :) Ich hab mal eine längere Pause eingelegt, was das Projekt anbelangt (musste erstmal einiges geklärt werden etc.) hab aber jetzt eine Frage zum Thema
    Umgang mit dem DataSet:

    Ich möchte über eine Schleife "Voreintragungen" in's DataSet erledigen lassen, wozu ich ein paar Werte brauche.

    Eine "AddDatenabfrageRow" sieht in etwa wie folgt aus:
    Dts.DatenabfrageHc.AddDatenabfrageHcRow(rwMitarbeiter, loopDate, loopDate.DayOfWeek.ToString, rwFahrzeug, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "")


    Mein Problem:

    Ich brauche für parentFahrzeugRowByFK_Fahrzeug_DatenabfrageHc As FahrzeugRow die Row mit dem Standardwert <keine Angabe> im Kennzeichen.
    Mit Dim rwFahrzeug = Dts.Fahrzeug.Where(Function(x) x.Kennzeichen = "<keine Angabe>").Cast(Of FahrzeugRow) kann ich mir die Row holen,
    allerdings kann er die bei AddRow nicht verwenden:


    kann ich das irgendwie in eine gültige FahrzeugRow umwandeln OHNE das Fahrzeug mit "<keine Angabe>" vorher irgendwo auswählen zu müssen?

    LG
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    Mit

    VB.NET-Quellcode

    1. Dim rwFahrzeug = Dts.Fahrzeug.Where(Function(x) x.Kennzeichen = "<keine Angabe>").Cast(Of FahrzeugRow)
    kann ich mir die Row holen,
    Na, da holst du ja keine FahrzeugRow, sondern eine Liste von FahrzeugRows - das sagt ja auch der Fehler.

    Machs einfach so:

    VB.NET-Quellcode

    1. Dim rwFahrzeug = Dts.Fahrzeug.First(Function(x) x.Kennzeichen = "<keine Angabe>")