DataSet/DatenBank - Erstellen - Verwalten / Einträge anlegen, auslesen

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

Es gibt 58 Antworten in diesem Thema. Der letzte Beitrag () ist von asusdk.

    Klammer mal die BindingSource aus Deinen Gedanken erstmal aus. Soweit ich weiß: Sie ist einfach der Vermittler zwischen Deinem DataSet und Deinem dbCE (data bound control element, keine Ahnung, ob das ne offizielle Abkürzung ist; also auf jeden Fall zum Beispiel ein DGV oder Deine ListBox, die an Deine DataSet-Daten verbunden ist). Sie existiert eben, weil man ne BindingSource auch an andere Sachen als n DataSet koppeln kann, soweit ich gelesen hab. Bin selber noch nicht auf weitere Einsatzzwecke gestoßen, aber die Mikrosaft-Entwickler wollten das ganze eben so flexibel einsetzbar wie möglich gestalten ...

    Wie gesagt: Wenn Du den Zugriff auf die DataSet-Daten nur über den Code machst und keine CEs explizit mit dem DataSet über den Designer verbinden möchtest, kommst Du ohne BindingSource klar.
    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.
    hm also mit schleife ist das auch ziemlich bescheuert, wüsste jetzt dennoch nicht wie ich ein einzelnes abfragen könnte
    siehste das mein ich mit ist useless, wenn man 3000 zeilen code braucht, was über externe files mit 20 zu lösen ist......

    aber die Mikrosaft-Entwickler wollten das ganze eben so flexibel einsetzbar wie möglich gestalten ... selten so gelacht ^^
    naja flexibel ist halt nicht gleichzusetzen mit benutzbar xD
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    echt sehr schade das es dazu nirgends gute tutorials gibt, die auf youtube kann man meist eh wegschmeissen, und alle die ich sonst so finde sind auch für meinen verwendungszweck genau am thema vorbei,
    naja sei es drum, gibts halt kein Dataset ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Mir scheint, bei den 4-View-Tut hast du einiges übersehen.
    Aber zunächstmal weiß ich von keinem komplizierten Code - tatsächlich ist dort ja ühaupt kein Code gepostet.
    Allerdings gibts die Sample-Solution zum Download - ja, die enthält Code, ordentlich aufgeteilt in Projekte, zu den verscheiedenen Filmen.
    Die Mehrzahl dieser Projekte ist aber überaus einfach, wenn ich mich recht erinnere.

    Auch hats wenig Zweck die Tuts pauschal als "zu schwierig" aufzugeben.
    Stattdessen sollteste dich ernsthaft damit befassen, und die Chance nutzen, dass du hier unverstandenes nachfragen kannst.
    Ich vermute sehr stark, dass sich dabei auch viele Lücken in deim Grundlagenwissen auftun, und du würdest enorm davon profitieren, wenn du diese geschlossen bekämst.
    Ich hab übrigens noch weitere Tuts zum Thema verfasst - auch welche ohne Film, und auch welche mit sehr sehr einfachem Datenmodell: Daten laden, speichern, verarbeiten - einfachste Variante
    Auch diesen Link hättest du selbst finden können - im 4-View-Tut ist er auch verwiesen.
    Und auch da sind die Sources dabei, kannste runterladen, Haltepunkt setzen, und Zeile für Zeile mitverfolgen, was da vor sich geht.
    Vorrausgesetzt, du kennst das Haltepunkt-Feature des VisualStudios überhaupt - womit wir wieder bei den Grundlagen wären.

    Auch dazu (Haltepunkt, und was VS sonst noch alles bietet) habich Tuts verzapft- also meine dringende Empfehlung: Wenn du etwas nicht weißt - nachfragen.
    Nicht aufgeben, nicht schimpfen - einfach nachfragen, und zwar möglichst konkret.

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

    @ErfinderDesRades danke für deine Antwort, ich werd mir das Morgen noch mal von vorne angucken, ich habs seit heute morgen 8 Uhr versucht und bin nicht weiter gekommen, leider schiebt man (oder nur ich ?)
    dann eine riesen Menge an Frust, ich werd mich morgen wieder dransetzen, wenn ich es heute nochmal versuche werd ich nur noch mehr genervt :P

    Danke dir auf jeden Fall


    Edit: ich hab den Link mal schnell überflogen, und da ist gleich ein ideales Beispiel, was ich meine mit zu komplexe tutorials :

    dein code aus post 2

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports Phonebook.PhoneDts
    3. Public Class frmPhonebook
    4. Private Sub frmPhonebook_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    5. Location = Screen.PrimaryScreen.WorkingArea.Location
    6. Reload()
    7. Dim defaultTitle = DirectCast(DirectCast(TitleBindingSource(0), DataRowView).Row, TitleRow)
    8. PhoneDts.Person.TitleIDColumn.DefaultValue = defaultTitle.ID
    9. End Sub
    10. Private Sub MenuStrip1_MenuClicked(ByVal Sender As Object, ByVal e As EventArgs) _
    11. Handles SaveToolStripMenuItem.Click, ReloadToolStripMenuItem.Click, _
    12. TestToolStripMenuItem.Click
    13. Select Case True
    14. Case Sender Is SaveToolStripMenuItem
    15. Save()
    16. Case Sender Is ReloadToolStripMenuItem
    17. Reload()
    18. Case Sender Is TestToolStripMenuItem
    19. CalculateMaxAgeDifference()
    20. End Select
    21. End Sub
    22. Private Sub CalculateMaxAgeDifference()
    23. 'ein Beispiel, wie auf typisierte Daten zugreifen und verarbeiten
    24. Dim tb = PhoneDts.Person
    25. If tb.Rows.Count < 1 Then
    26. MsgBox("aus einer leeren DataTable kann keine Zeitspanne ermittelt wern")
    27. Return
    28. End If
    29. Dim min = tb.FirstOrDefault(Function(rw) Not rw.IsBirthNull)
    30. If min Is Nothing Then
    31. MsgBox("die DataTable enthält keinen Datensatz mit BirthDate angegeben")
    32. Return
    33. End If
    34. Dim max = min
    35. For Each rw In tb
    36. If Not rw.IsBirthNull Then
    37. If rw.Birth < min.Birth Then
    38. min = rw
    39. ElseIf rw.Birth > max.Birth Then
    40. max = rw
    41. End If
    42. End If
    43. Next
    44. Dim tspan = max.Birth.Subtract(min.Birth)
    45. Dim sTime = String.Format("{0} Tage, {1} Stunden, {2} Minuten, {3} Sekunden", _
    46. tspan.Days, tspan.Hours, tspan.Minutes, tspan.Seconds)
    47. MsgBox(String.Join(Environment.NewLine, {"Der maximale Altersunterschied beträgt:", _
    48. sTime, "und liegt zwischen", min.Name & " und " & max.Name}))
    49. End Sub
    50. #Region "allgemein verwendbare Funktionalität"
    51. Private _Datafile As New FileInfo("..\..\PhoneDts.xml")
    52. Private Sub Save()
    53. Me.Validate() 'übernimmt ggfs. die aktuelle Eingabe, auch wenn noch nicht abgeschlossen. Andernfalls wundert man sich womöglich, dass die letzte Eingabe nicht mit abgespeichert wurde
    54. PhoneDts.WriteXml(_Datafile.FullName)
    55. PhoneDts.AcceptChanges() 'setzt Dataset.HasChanges auf False. Das hat auswirkungen auf das Schließ-Verhalten in Form_FormClosing
    56. Media.SystemSounds.Asterisk.Play()
    57. End Sub
    58. Private Sub Reload()
    59. PhoneDts.Clear()
    60. For Each tb As DataTable In PhoneDts.Tables
    61. tb.BeginLoadData() 'deaktiviert während des Ladens AktualisierungsVorgänge des Databindings
    62. Next
    63. PhoneDts.ReadXml(_Datafile.FullName)
    64. For Each tb As DataTable In PhoneDts.Tables
    65. tb.EndLoadData()
    66. Next
    67. PhoneDts.EnforceConstraints = True 'tb.BeginLoadData setzt autom. EnforceConstraints.False - also zurücksetzen
    68. PhoneDts.AcceptChanges()
    69. End Sub
    70. Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
    71. Handles Me.FormClosing
    72. If Not Me.PhoneDts.HasChanges Then Return 'liegen keine Änderungen vor, wird auch nix gespeichert
    73. If e.Cancel Then Return ' ist Canceln bereits vorgemerkt ist, wird auch nix gespeichert
    74. Select Case MessageBox.Show(Me, "Änderungen speichern?", "Das Ende ist nahe", MessageBoxButtons.YesNoCancel)
    75. Case DialogResult.No 'nix tun: schließen ohne speichern
    76. Case DialogResult.Yes : Save() ' schließen mit speichern
    77. Case DialogResult.Cancel : e.Cancel = True 'Schließung canceln
    78. End Select
    79. End Sub
    80. 'Korrektur eines WinForm-Bugs
    81. Private Sub frmPhonebook_FormClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs) Handles Me.FormClosed
    82. Me.Validate() 'nochn Bug: DGV kriegt beim Disposen einen ZeilenIndex-Fehler, wenn sich die ZufügeZeile im Edit-Modus befindet
    83. Me.SuspendLayout()
    84. With Me.Controls
    85. 'Controls könnten sich theor. auch gegenseitig disposen, über Events. dieses hier disposed ganz sicher immer das letzte Element was noch da ist
    86. While .Count > 0 : .Item(.Count - 1).Dispose() : End While
    87. End With
    88. End Sub
    89. #End Region 'allgemein verwendbare Funktionalität
    90. End Class


    Ich erkenne da nicht in einer einzigen Zeile des Codes, wie ich z.b. einen einzelnen Eintrag abrufen kann (z.B. ich weiss ich habe einen eintrag bei dem eine der zeilen "Name" heisst, wie kann ich explizit diesen Eintrag auslesen ?) , nicht erkennbar ist für mich auch, wie ich einen einzelnen Eintrag bearbeiten könnte (also ich klicke in einer Listbox auf einen Eintrag, die einzelnen Werte werden dann in einfache Textboxen , Richtextboxen usw. geladen (möglichst ohne Binding oder so was sondern einfach manuell), so das ich die dort hinterlegten Werte ändern könnte. Beispiel aus einem älteren Projekt damit du verstehst was ich genau meine, dies arbeitet noch mit einzelnen .txt files für jeden Eintrag, hat noch keine Suchfunktion (in einer neueren Version ist bereits eine integriert) und glaub mir ich hab heute von ganz früh bis vor 3 Stunden Youtube leergeguckt, gegoogelt und und und, aber nichts entsprechendes gefunden was mir hier helfen würde)

    das meinte ich in erster Linie mit der kleinen Beschwerde über die Tutorials, sie erklären immer SEHR viel, aber meist nicht das was man tatsächlich sucht

    Ich hoffe ich bin dir damit nicht zu nahe getreten, ich wollte nur einmal genau erläutern was ich problematisch finde

    Greets

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

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

    asusdk schrieb:

    eine riesen Menge an Frust
    Jo - statt einfach nachzufragen, ackerste dich womöglich tagelang ergebnislos ab.

    asusdk schrieb:

    Edit: ich hab den Link mal schnell überflogen, und da ist gleich ein ideales Beispiel, was ich meine mit zu komplexe tutorials
    ...
    Ich erkenne da nicht in einer einzigen Zeile des Codes, wie ich z.b. einen einzelnen Eintrag abrufen kann
    Hurra! - eine Nachfrage! :thumbsup:
    Die Antwort lautet:

    VB.NET-Quellcode

    1. Private Sub SaySelectedRow()
    2. Dim rw = DirectCast(DirectCast(DataTable1BindingSource.Current, DataRowView).Row, DataTable1Row)
    3. MessageBox.Show(String.Format("ADateTime:{0}, AnInteger:{1}, Text:{2}", rw.ADateTime, rw.AnInteger, rw.Text))
    4. End Sub
    Und haste recht - ist im ersten post nicht enthalten, auch nicht im zweiten.
    Sondern erst der 8. Post widmet sich ausdrücklich diesem Thema: Datensätze aus der BindingSource holen
    Und deckt ausserdem noch den Zugriff per Index, sowie Suchen in einer Bindingsource ab.

    asusdk schrieb:

    (also ich klicke in einer Listbox auf einen Eintrag, die einzelnen Werte werden dann in einfache Textboxen , Richtextboxen usw. geladen (möglichst ohne Binding oder so was sondern einfach manuell)
    Von "manuell" würde ich sehr abraten.
    Lerne die Databinding-Konzepte kennen, und lass sie für dich arbeiten.
    Da sparste jede Menge Schreibarbeit, vermeidest viele Fehler, und insbesondere inkonsistente Daten-Präsentationen.
    Auch befleissigst du dich damit der konzeptionell vorgesehenen Vorgehensweise - während du anders schnell in ein Einzelkämpfertum abgleitest, und dein Code iwann mehr oder weniger "schrullig" wird.
    Abweichungen vonne Standard-Vorgehensweisen muss man anforderungsbedingt immer wieder gehen - aber zunächstmal sollteman die Standards unbedingt erstmal kennen- und beherrschen lernen - meine Meinung.

    Das Muster "In ListenControl Datensatz anklicken - angekliclte Daten in EinzelControls bearbeiten" ist inne 4-Views als DetailView demonstriert, und das wonach du fragst - den selektierten Datensatz explizit auslesen - braucht man dafür überhaupt nicht.
    Lad dir die Solutions, und starte sie - es ist meist sehr überraschend zu sehen, was alles an Code man nicht braucht, und üflüssiger, kontraproduktiver Kropf wäre.

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

    Also ich hab jetzt echt alles mir mögliche versucht,

    sobald ich eine neue Form aufmache, sind da trotz so nem Binding NIE daten drin, so kann ich dann ja nichts bearbeiten

    Kann mir bitte jemand Sagen wie ich :

    eine Hauptform habe, mit Listview welche die Namen der einträge zeigt, einen bearbeiten Button hat, einen Neu Button hat, (und natürlich auch ne anzeige der Daten des ausgewählten eintrags)
    bei klick auf bearbeiten geht eine neue Form auf, welche dann bereits die daten aus dem ausgewählten Listbox eintrag enthält, und (wie ich die geänderten werte dann auch setze)
    bei kllick auf neu, eine neue Form aufgeht, leer, mit klick auf speichern wird der eintrag generiert

    tut mir echt leid, aber ich kann noch so viel nachlesen und videos gucken, ich komm nicht dahinter....
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    sobald ich eine neue Form aufmache, sind da trotz so nem Binding NIE daten drin, so kann ich dann ja nichts bearbeiten

    tut mir echt leid, aber ich kann noch so viel nachlesen und videos gucken, ich komm nicht dahinter....
    lesen und videos gucken ist schoma sehr gut - aber wie wärs mal ergänzend mit Samples downloaden und ausprobieren?
    Da würdest du vlt. sehen, dass man auf diese Weise sehr wohl Daten drin hat - auch direkt zum Programmstart.

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

    naja den erwähnten Link habe ich mir bereits mehrere Stunden angeschaut, auch versucht nachzuarbeiten, ja auch die Samples hab ich runtergeladen und mir angesehen, aber weder das eine noch das andere hilft mir es zu verstehen, naja dann bleibt es wohl leider doch bei einzelnen textfiles, trozdem Danke an alle beteiligten für die Hilfe =)

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Enthält diese Solution ieine Funktionalität, die dich momentan besonders interessiert - etwa: "Wie befüllt sie ihr Dataset"? - oder "Wie kommen die Daten zur Präsentation?", "Wie funktioniert das, dass ich die Daten bearbeiten kann und auch abspeichern?"

    Nein - ich gebs auf.
    Du bist es, der nachfragen muss- ich muss nicht nachfragen, was du vielleicht nachfragen könntest.

    Also sieh zu, wie weit du kommst mit deim "ich werd nicht schlau draus" - so kann man beim besten willen nicht helfen.
    weiter oben hab ich gefragt :

    Spoiler anzeigen
    eine Hauptform habe, mit Listview welche die Namen der einträge zeigt, einen bearbeiten Button hat, einen Neu Button hat, (und natürlich auch ne anzeige der Daten des ausgewählten eintrags)
    bei klick auf bearbeiten geht eine neue Form auf, welche dann bereits die daten aus dem ausgewählten Listbox eintrag enthält, und (wie ich die geänderten werte dann auch setze)
    bei kllick auf neu, eine neue Form aufgeht, leer, mit klick auf speichern wird der eintrag generiert


    darauf hiess es, ob ich sonst noch Wünsche hätte..

    Was soll ich denn deiner Meinung nach fragen, ich habe doch mehrfach hier im Thread gesagt was ich versuche zu tun ??
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Es geht darum, dass Du Dir die Sachen aus den Tuts und Tipps raussuchst, die Dir dabei helfen, dass Du Dein Problem löst.
    • "eine Hauptform habe" -> hast Du zweifellos selber erledigt
    • "mit Listview welche die Namen der einträge zeigt" = habe ich bereits beschrieben
    • "einen bearbeiten Button hat, einen Neu Button hat" = zweifellos selber erledigt
    • "(und natürlich auch ne anzeige der Daten des ausgewählten eintrags)" = DetailView von den vier Views
    • "bei klick auf bearbeiten geht eine neue Form auf" = hoffentlich weißt Du, wie das geht
    • "welche dann bereits die daten aus dem ausgewählten Listbox eintrag enthält" = hatte EdR in seinen Tuts beschrieben, unter BindingSource umstöpseln
    • "und (wie ich die geänderten werte dann auch setze)" = musst Du gar nicht machen, macht die BindingSource für Dich
    • "bei kllick auf neu, eine neue Form aufgeht, leer" = grundlegend, hast Du bestimmt selbst hinbekommen
    • "mit klick auf speichern wird der eintrag generiert" = neuen Eintrag im DataSet = EdR-Tut
    Daher nochmal die allgemeine Frage: Wo hängst Du fest?
    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.
    Zitat : "welche dann bereits die daten aus dem ausgewählten Listbox eintrag enthält" = hatte EdR in seinen Tuts beschrieben, unter BindingSource umstöpseln

    das krieg ich nicht gebacken, es öffnet sich zwar die Form, aber sie zeigt nicht den gewählten eintrag sondern einfach nur den ersten

    ich vermute zumindest das es was damit:

    VB.NET-Quellcode

    1. ArticleBindingSource.EditCurrent(Of frmArticleDetail)()


    zu tun hat, aber er sagt mir im main fenster, das editcurrent kein member von bindingsource ist ist

    versucht hatte ich es so :

    VB.NET-Quellcode

    1. DataTable1BindingSource.EditCurrent(Of SnippetEdit)()


    SnippetEdit wäre dabei die neue Form in der ich die Einträge bearbeiten möchte

    evtl. hilft ja was ich bisher habe :

    MainForm:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Main
    2. Public _Datafile As New FileInfo(Application.StartupPath & "\SnippetBaseV3.xmlb")
    3. Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. DataSet1.DataTable1.ReadXml(_Datafile.FullName)
    5. End Sub
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. NeuesSnippet.Show()
    8. End Sub
    9. Public Sub Save()
    10. Me.Validate() 'übernimmt ggfs. die aktuelle Eingabe, auch wenn noch nicht abgeschlossen. Andernfalls wundert man sich womöglich, dass die letzte Eingabe nicht mit abgespeichert wurde
    11. DataSet1.WriteXml(_Datafile.FullName)
    12. DataSet1.AcceptChanges() 'setzt Dataset.HasChanges auf False. Das hat auswirkungen auf das Schließ-Verhalten in Form_FormClosing
    13. Media.SystemSounds.Asterisk.Play()
    14. End Sub
    15. Private Sub Main_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    16. Save()
    17. End Sub
    18. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    19. SnippetEdit.Show()
    20. End Sub
    21. End Class



    Neues Snippet anlegen :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class NeuesSnippet
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Main.DataSet1.DataTable1.Rows.Add(Main.DataTable1BindingSource.Count + 1, NameTextBox.Text, ArtComboBox.Text, SpracheComboBox.Text, CodeRichTextBox.Text)
    4. Main.DataSet1.DataTable1.WriteXml(Main._Datafile.FullName)
    5. End Sub
    6. End Class


    die selbe Form die auch in neues snippet verwendet wird hab ich dupliziert, aber hier fehlt mir jedwede idee wie ich damit anfangen könnte....


    Und solltest du mit umstöpseln das hier meinen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim frm = New SnippetEdit
    2. frm.DataTable1BindingSource.DataSource = Me.DataSet1
    3. frm.Show(Me)


    so ist auch damit im Edit fenster nur der erste eintrag ausgewählt, nicht jedoch der gewählte


    hab jetzt auch mal versucht ob ich den Code aus Phonebook irgendwie nachbauen kann, keine chance, schmeisst mit fehlern um sich... :

    Spoiler anzeigen
    Ein Ausnahmefehler des Typs "System.IndexOutOfRangeException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: Der Index 0 ist entweder negativ oder über der Gesamtanzahl der Zeilen.


    direkt bei der laden funktion

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Main
    2. Private _Datafile As New FileInfo(Application.StartupPath & "\DTS.xml")
    3. Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
    4. Location = Screen.PrimaryScreen.WorkingArea.Location
    5. Reload()
    6. Dim defaultID = DirectCast(DirectCast(BS(0), DataRowView).Row, DTS.DTRow)
    7. DTS.DT.IDColumn.DefaultValue = defaultID.ID
    8. End Sub
    9. Private Sub Save()
    10. Me.Validate() 'übernimmt ggfs. die aktuelle Eingabe, auch wenn noch nicht abgeschlossen. Andernfalls wundert man sich womöglich, dass die letzte Eingabe nicht mit abgespeichert wurde
    11. DTS.WriteXml(_Datafile.FullName)
    12. DTS.AcceptChanges() 'setzt Dataset.HasChanges auf False. Das hat auswirkungen auf das Schließ-Verhalten in Form_FormClosing
    13. Media.SystemSounds.Asterisk.Play()
    14. End Sub
    15. Private Sub Reload()
    16. DTS.Clear()
    17. For Each tb As DataTable In DTS.Tables
    18. tb.BeginLoadData() 'deaktiviert während des Ladens AktualisierungsVorgänge des Databindings
    19. Next
    20. DTS.ReadXml(_Datafile.FullName)
    21. For Each tb As DataTable In DTS.Tables
    22. tb.EndLoadData()
    23. Next
    24. DTS.EnforceConstraints = True 'tb.BeginLoadData setzt autom. EnforceConstraints.False - also zurücksetzen
    25. DTS.AcceptChanges()
    26. End Sub
    27. Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
    28. Handles Me.FormClosing
    29. If Not Me.DTS.HasChanges Then Return 'liegen keine Änderungen vor, wird auch nix gespeichert
    30. If e.Cancel Then Return ' ist Canceln bereits vorgemerkt ist, wird auch nix gespeichert
    31. Select Case MessageBox.Show(Me, "Änderungen speichern?", "Das Ende ist nahe", MessageBoxButtons.YesNoCancel)
    32. Case DialogResult.No 'nix tun: schließen ohne speichern
    33. Case DialogResult.Yes : Save() ' schließen mit speichern
    34. Case DialogResult.Cancel : e.Cancel = True 'Schließung canceln
    35. End Select
    36. End Sub
    37. 'Korrektur eines WinForm-Bugs
    38. Private Sub frmPhonebook_FormClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs) Handles Me.FormClosed
    39. Me.Validate() 'nochn Bug: DGV kriegt beim Disposen einen ZeilenIndex-Fehler, wenn sich die ZufügeZeile im Edit-Modus befindet
    40. Me.SuspendLayout()
    41. With Me.Controls
    42. 'Controls könnten sich theor. auch gegenseitig disposen, über Events. dieses hier disposed ganz sicher immer das letzte Element was noch da ist
    43. While .Count > 0 : .Item(.Count - 1).Dispose() : End While
    44. End With
    45. End Sub
    46. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    47. Save()
    48. End Sub
    49. End Class


    wie soll man das denn jemals verstehen wenn ,man noch nicht mal einen tutorialcode ohne das es fehler wirft nachbauen kann...

    des weiteren zu der Aussage:

    Spoiler anzeigen
    Du bist es, der nachfragen muss- ich muss nicht nachfragen, was du vielleicht nachfragen könntest.

    Also sieh zu, wie weit du kommst mit deim "ich werd nicht schlau draus" - so kann man beim besten willen nicht helfen.


    wenn ich nicht einen einzigen Vorgang in den Projekten verstehe, kann ich ja auch nicht sagen was ich nicht verstehe, weil ich das ganze teil nicht verstehe

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „asusdk“ ()

    Sorry, wenn ich das so sagen muss.

    Habe mal die Beiträge seit 2015 von dir überflogen. Ich glaube es happert am Grundsätzlichen. Um dieses Problem zu beseitigen, hilft halt nur sich mit den Grundlagen zu beschäftigen, ob per Buch(was zu empfehlen wäre, meiner Meinung nach), per Blogs im Netz und vorallem durch programmieren. Programmieren, lernt man einfach nur durch programmieren. Das bedingt dann auch sich Theorie anlesen, ausprobieren, Beispiele nacharbeiten und nachzuvollziehen.

    Ob du nun VB.Net, C#, F#, C++, Delphi, Brainfuck oder sonstwas nimmst. Das größte Problem sitzt in der Regel vor dem Bildschirm, da kann dieser noch so hochauflösend sein ;).

    Für deine exakte Problemstellung, wirst du nirgends ein "Tutorial" finden, dass deine konkrete Vorstellungen erfüllt. Jedermann hat seine eigenen Problemchen in der Anforderung, die er erfüllen möchte. Abstrahieren, denken, probieren, nachvollziehen, Neugier und sich Thematiken erschließen sind essentiell.

    Vielleicht wäre es ein guter Tipp, wenn du erstmal die allerbanalsten Problemchen löst? Man wächst an seinen Aufgaben. Auch wenn MS immer wieder verspricht, dass .NET so easy ist, dass jedermann in 2-3 Tagen zum Programmierer wird. Dem ist nicht so - das ist Marketing. Aber die Tools und die Sprachen sind dennoch toll. Es liegt halt an einem Selber.

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

    @wertherchen mit : Ob du nun VB.Net, C#, F#, C++, Delphi, Brainfuck oder sonstwas nimmst. Das größte Problem sitzt in der Regel vor dem Bildschirm, da kann dieser noch so hochauflösend sein ;).

    hast du definitiv recht, ich habe auch nie behauptet das wer anderes als ich selbst das Problem sei^^

    MEIN (und niemand anderes) Problem ist, das ich nur dann "lernen" kann wenn ich etwas verstehe, leider ist das in Bezug auf Programmierung meist nicht der Fall, da so gut wie jedes Tutorial offensichtlich ein Verständnis voraussetzt das ich nicht besitze, will ich versuchen mir dieses anzueignen, und google nach Grundlagen Tutorials, trifft man in 99,9 % der fälle auf : was ist ein Integer blabla, genau wie bei allen bisher gefundenen Büchern, was ein Integer IST weis ich, ich weiss auch was ein Array ist usw. aber soweit ich das aktuell mitbekomme, geht die definition von Grundlagen, anscheinend SEEEHR weit auseinander.


    edit: des weiteren ist es jetzt auch schon irrelevant, ich versuche seit fast 3 Tagen in jeder freien Minute das mit den Datasets hinzubekommen, und kann 0% Fortschritt verbuchen, und da alles irgendwann gut sein muss, bleib ich bei der Funktionsweise mit .txt. files, DAS krieg ich wenigtens hin ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If