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.

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


    So Sätze wie: "Warum muss das alles so kompliziert sein in VB.net", stammen schon von dir. Und diese ja nicht nur bei der einen Problemstellung. Ganz viele kommen offenbar recht gut zurecht mit VB.net - auch wenn ich perönlich eher zu C# rate. Dort hat man halt nicht die Altlasten, wie Optinon Strict Off, den VB-Namespace etc. Das hast du aber auch alles nachgelesen, Links wurden ja genügend dargereicht.

    Das du nun die Lösung mit den txt.files für dich gefunden hast, ist schonmal super! Hauptsache du hast eine akzeptable Lösung für dich gefunden. Das ist erstmal das was zählt: eine Anforderung soll ihren Zweck zufriedendstellend erfüllen. Optimieren kann man immer, muss man aber auch nicht, wenn das Ergebnis tragbar ist.
    Der Rest wäre dann halt lernen und einsteigen wollen. Aber das ist keine Pflicht, sondern nur was fpr solche die das auch wollen.

    Also alles ganz entspannt :)
    leider hab ich damit keine Lösung gefunden, ziel des DataSets war es ja von einzelnen .txt files wegzukommen, ich muss nur wieder darauf zurückgreifen da DataSets meine Fähigkeiten offenbar um welten übersteigen ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    leider hab ich damit keine Lösung gefunden, ziel des DataSets war es ja von einzelnen .txt files wegzukommen, ich muss nur wieder darauf zurückgreifen da DataSets meine Fähigkeiten offenbar um welten übersteigen ^^


    Jup, hatte ich schon mitbekommen. Darum ja auch der Tipp(wie schon von einigen anderen getextet), sich da einfach mal in die Materie einzulesen. Über YT und Fragen nur in Foren, wird das nichts.

    Irgerndwie bin ich echt froh, zu einer Zeit aufgewachsen zu sein, wo es YT und Foren im Netz noch nicht gab. Da ging man einfach in Büchereinen, hat experimentiert wie blöde, und war dann umso mehr angestachelt, wenn dieser Weg zum erhofften Ergebnis führte.
    evtl. mag mir ja doch noch jemand helfen, ich will nicht einfach aufgeben,

    ich habe jetzt eine Form (bitte beachten das es sich nicht um eine usable Form handelt sondern nur um eine Testform) mit :
    (testweise) einem DataGridView, einer Listbox und 2 Buttons.

    bereits funktionierend : korrekte Anzeige der Namen in der Listbox, hinzufügen eines neuen Eintrags, Laden der Xml und ebenso das abspeichern derselben.

    Was noch fehlt : Wie ich es schaffe, das wenn die modale Form: "Bearbeiten" angezeigt, wird (Aufruf derselben im untersten Sub) das, der im Listbox, oder alternativ auch der im DatagridView (beides identisch) gewählte Eintrag geladen wird, aktuell wird beim Aufruf der neuen Form leider nur der erste Eintrag angezeigt unabhängig des gewählten Eintrags.

    aktueller Code:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Main
    2. Private _Datafile As New FileInfo("Dataset1.xml")
    3. Private Sub Main_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    4. Save()
    5. End Sub
    6. Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
    7. Reload()
    8. End Sub
    9. Private Sub Reload()
    10. DataSet1.Clear()
    11. If _Datafile.Exists Then DataSet1.ReadXml(_Datafile.FullName)
    12. End Sub
    13. Private Sub Save()
    14. Me.Validate()
    15. DataSet1.WriteXml(_Datafile.FullName)
    16. End Sub
    17. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    18. Dim frm As New Neu
    19. frm.DataTable1BindingSource.DataSource = Me.DataSet1
    20. frm.Show(Me)
    21. End Sub
    22. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    23. Dim frm As New bearbeiten
    24. frm.DataTable1BindingSource.DataSource = Me.DataTable1BindingSource
    25. frm.Show(Me)
    26. End Sub
    27. End Class


    ich hoffe das ich meine Anfrage dieses mal richtig formuliert habe @ErfinderDesRades

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Formübergreifendes Databinding ist schon sehr advanced. Ich kenne auch nicht den genauen Aufbau deiner Dialog-Forms, daher kann mit folgenden Versuchen einiges schief gehen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim frm As New Neu
    3. frm.DataTable1BindingSource.DataSource = DataTable1BindingSource.AddNew()
    4. frm.Showdialog(Me)
    5. End Sub
    6. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    7. Dim frm As New bearbeiten
    8. frm.DataTable1BindingSource.DataSource = DataTable1BindingSource.current
    9. frm.Showdialog(Me)
    10. End Sub
    Achtung - ist ungetestet.
    Und wird auch im besten Fall immer noch nicht ganz tun, was du dir wünschst, aber wenns schoma den selektierten, bzw den neuen Datensatz anzeigt ists ein entscheidender Schritt in richtige Richtung.



    Übrigens deine Benamung ist eine Katastrophe. Ich täte sehr empfehlen immer - auch fürs kürzeste quick&dirty-Tests - immer sinnvoll benamen. Das dauert 5s pro Button, und ist der Unterschied, ob dein code verständlich ist oder nicht - für andere, und in 3 Tagen auch für dich selbst - nein, sogar binnen 1/2h kann man sich selbst bei falcher Benamung in die Irre führen.
    Also wenn mehr als ein Button da ist, müssen die jeweils so heissen, wie was sie machen.
    Und Klassen benamt man groß, und zB bei mir haben Gui-Elemente immer einen Prefix, und ich unterscheide dabei sogar Forms und Dialoge (dass Forms und Dialog vonne selben Basisklasse erben ist für den Prefix nicht relevant, sondern relevant ist, dass Forms und Dialoge fundamental unterschiedlich verwendet werden):

    VB.NET-Quellcode

    1. Private Sub btAddNew_Click(sender As Object, e As EventArgs) Handles btAddNew.Click
    2. Dim dlg As New dlgNeu
    3. dlg.DataTable1BindingSource.DataSource = DataTable1BindingSource.AddNew()
    4. dlg.Showdialog(Me)
    5. End Sub
    6. Private Sub btBearbeiten_Click(sender As Object, e As EventArgs) Handles btBearbeiten.Click
    7. Dim dlg As New dlgBearbeiten
    8. dlg.DataTable1BindingSource.DataSource = DataTable1BindingSource.current
    9. dlg.Showdialog(Me)
    10. End Sub
    Das ist nur die halbe Miete - wie du dein Dataset, deine DataTable (und bestimmt auch deine Spalten) benannt hast ist noch viel schlimmer, und ist auch viel schwieriger zu korrigieren.

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

    ok, dann werd ich das wohl künftig auch bei tests mit einer akuraten bennenung machen,

    habs jetzt mit folgender Zeile gemacht/hinbekommen :

    VB.NET-Quellcode

    1. frm.DataTable1BindingSource.Position = DataTable1BindingSource.Position


    dadurch wird beim Aufruf der neuen Form der richtige Eintrag geladen =)
    Danke allen die hier gepostet haben Vieeelmals für die Hilfe =)
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Also ich kann dir nur empfehlen das "vorgekaute" von @ErfinderDesRades zu testen. Ich hatte auch mal das Poblem, und genau dieser Code hat funktioniert.
    Current ruft doch den aktuell angewählten Datensatz im DGV auf.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    nein, natürlich, es baut doch gänzlich auf auf deiner lösung auf @ErfinderDesRades , der obige code war ja nur schnell rauskopiert, bin grade erst wieder heimgekommen ^^ insgesamt sieht es jetzt so aus :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Main
    2. Private _Datafile As New FileInfo("Dataset1.xml")
    3. Private Sub Main_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    4. Save()
    5. End Sub
    6. Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
    7. Reload()
    8. End Sub
    9. Private Sub Reload()
    10. DataSet1.Clear()
    11. If _Datafile.Exists Then DataSet1.ReadXml(_Datafile.FullName)
    12. End Sub
    13. Private Sub Save()
    14. Me.Validate()
    15. DataSet1.WriteXml(_Datafile.FullName)
    16. End Sub
    17. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    18. Dim frm As New Neu
    19. frm.DataTable1BindingSource.DataSource = Me.DataTable1BindingSource
    20. frm.DataTable1BindingSource.AddNew()
    21. frm.Show(Me)
    22. End Sub
    23. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    24. Dim frm As New bearbeiten
    25. frm.DataTable1BindingSource.DataSource = Me.DataTable1BindingSource
    26. frm.DataTable1BindingSource.Position = DataTable1BindingSource.Position
    27. frm.Show(Me)
    28. End Sub
    29. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    30. Dim rw = DirectCast(DirectCast(DataTable1BindingSource(DataTable1BindingSource.Position), DataRowView).Row, DataSet1.DataTable1Row)
    31. MessageBox.Show(rw.Name, rw.Code)
    32. End Sub
    33. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    34. DataTable1BindingSource.RemoveCurrent()
    35. End Sub
    36. End Class

    (bin gerade am umbenennen :P)

    ich habe nur

    VB.NET-Quellcode

    1. dlg.DataTable1BindingSource.DataSource = DataTable1BindingSource.current

    gegen

    VB.NET-Quellcode

    1. frm.DataTable1BindingSource.Position = DataTable1BindingSource.Position

    ersetzt da ich die Bindingsource ja davor schon umgestöpselt hab, und (zumindest denke ich das )
    so nur noch die Position setze, oder hab ich da was falsch verstanden ?


    hm, umbenennen war wohl nicht die beste Idee, jetzt erkennt er DataSet1 nicht mehr (obwohl das gar nicht umbenannt wurde...)
    naja gottseidank handelt es sich nur um ein Übungsprojekt

    so sieht es aktuell aus :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Main
    2. Private Savefile As New FileInfo("Dataset1.xml")
    3. Private Sub Main_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    4. Save()
    5. End Sub
    6. Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
    7. Reload()
    8. End Sub
    9. Private Sub Reload()
    10. DataSet1.Clear()
    11. If Savefile.Exists Then DataSet1.ReadXml(Savefile.FullName)
    12. End Sub
    13. Private Sub Save()
    14. Me.Validate()
    15. DataSet1.WriteXml(Savefile.FullName)
    16. End Sub
    17. Private Sub btnNeu_Click(sender As Object, e As EventArgs) Handles btnNEU.Click
    18. Dim frm As New Neu
    19. frm.dtbSource.DataSource = Me.dtbSource
    20. frm.dtbSource.AddNew()
    21. frm.Show(Me)
    22. End Sub
    23. Private Sub btnBearbeiten_Click(sender As Object, e As EventArgs) Handles btnBearbeiten.Click
    24. Dim frm As New bearbeiten
    25. frm.dtbSource.DataSource = Me.dtbSource
    26. frm.dtbSource.Position = dtbSource.Position
    27. frm.Show(Me)
    28. End Sub
    29. Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
    30. Dim rw = DirectCast(DirectCast(dtbSource(dtbSource.Position), DataRowView).Row, DataSet1.DataTable1Row)
    31. MessageBox.Show(rw.Code, rw.Name)
    32. End Sub
    33. Private Sub btnLoeschen_Click(sender As Object, e As EventArgs) Handles btnLoeschen.Click
    34. dtbSource.RemoveCurrent()
    35. End Sub
    36. End Class


    evtl. benenne ich ja auch falsch ^^

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

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

    deswegen hatte ich ja gesagt das ich

    VB.NET-Quellcode

    1. dlg.DataTable1BindingSource.DataSource = DataTable1BindingSource.current

    durch

    VB.NET-Quellcode

    1. frm.DataTable1BindingSource.Position = DataTable1BindingSource.Position

    ersetzt hab weil ich die BindingSource ja mit

    VB.NET-Quellcode

    1. dlg.DataTable1BindingSource.DataSource = DataTable1BindingSource

    schon umgestöpselt habe, und dabei habe ich auch gefragt ob ich da nicht evtl. einen denkfehler hab ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    nein nicht eiglich ein Denkfehler, aber du hast einfach was ganz anneres gemacht, als was ich dir vorschlug.
    Da hätte ich auch garnix vorschlagen brauchen.
    Denkfehler halt insofern, wenn du denkst, das würde auf meim Vorschlag aufbauen.

    Und du hast viel zuwenig gepostet - von nur einer verlorenen Zeile kann man nicht erahnen, was da vor sich geht.
    Ausser halt, dass du - nachdem du endlich mal beantwortbare Fragen stellst - die Vorschläge nicht ausprobierst, sondern doch iwas ganz anneres machst.
    Und ich bleib ohne Feedback, ob mein Vorschlag funktionierte.
    Aber klicks mal auf einen SpaltenHeader - wenns sowas bei dir gibt. Solch ändert normalerweise die SortierReihenfolge, und dann dürfte dein Vorgehen failen, weil dann die Daten in den beiden BindingSources an unterschiedlichen Positionen liegen.
    Aber ich glaub fast, du hast derzeit gar keine Sortiermöglichkeit vorgesehen (oder gar einen Filter). Dann kann dir das Problem also erst aufstossen, wenn du mal da hinkommst.



    Nochmal zum Code posten: Immer ganze Methoden, allermindestens die Methode von Anfang, an inklusive Deklarationszeile - bis zur spannenden Stelle.
    Und weil bei dir das Form noch nicht so groß ist, ist das eine gute Idee, das komplett zu posten.
    (Und Code unter 60 Zeilen muss man auch nicht unbedingt in eim Spoiler verstecken - ausser du hast in eim Post mehrere so grosse Code-Listings)
    Gugge mein Vorschlag-Code: Der Bezug zu deim Vorherigen Code ist unmissverständlich dadurch, dass ich dir dieselbe Methode überarbeitet zurückgebe - sogar ohne die Namen zu ändern, eben um die Zuordnung zu erhalten.
    Du antwortest mit einer verlorenen Zeile, und ich hab keine Ahnung, wo die wohl stehen mag: In deiner Methode?, in meiner? evtl, noch iwo anners?
    Wie gesagt - alles was ich aus der Zeile zuverlässig schliessen kann ist, dass mein Vorschlag dich nicht interessiert.

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

    Also, ich habe weiter rumgetestet und auf Basis deines Vorschlages weiter gemacht, dies funktioniert 1A ! danke schon einmal dafür.

    Ähm eine Sortiermöglichkeit ist nicht geplant, allerdings ein Suchfunktion, welche aber bereits eingebaut und funktionstüchtig ist, (es sei denn es gibt einen besseren Weg als den verwendeten ? ^^)
    da ich in dem vorherigen Beispielcode, das dataset umbenannt hatte und er mir da das Dataset nicht mehr anerkannt hat (auch nach rückbenennung) habe ich mit einem gänzlich neuen Übungsscript angefangen,
    ich hoffe das die Benennungen hier auch besser sind ?

    VB.NET-Quellcode

    1. Public Class Main
    2. Private Savefile As New FileInfo("testSnippetBasev3.xml")
    3. Dim SearchIn As String
    4. Private Sub Main_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    5. Save()
    6. End Sub
    7. Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
    8. Reload()
    9. End Sub
    10. Private Sub Reload()
    11. DsDaten.Clear()
    12. If Savefile.Exists Then DsDaten.ReadXml(Savefile.FullName)
    13. End Sub
    14. Private Sub Save()
    15. Me.Validate()
    16. DsDaten.WriteXml(Savefile.FullName)
    17. End Sub
    18. Private Sub btnNeu_Click(sender As Object, e As EventArgs) Handles btnNeu.Click
    19. Dim frm As New Neu
    20. frm.bsDaten.DataSource = Me.bsDaten.AddNew()
    21. frm.Show(Me)
    22. End Sub
    23. Private Sub btnBearbeiten_Click(sender As Object, e As EventArgs) Handles btnBearbeiten.Click
    24. Dim frm As New Neu
    25. frm.bsDaten.DataSource = Me.bsDaten.Current
    26. 'frm.bsDaten.DataSource.position = Me.bsDaten.position, flog raus nach dem ich gemerkt habe das die eine Zeile von dir bereits ausreicht, hatte ja deine Zeile und diese drin.
    27. frm.Show(Me)
    28. End Sub
    29. Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
    30. Dim rw = DirectCast(DirectCast(bsDaten(bsDaten.Position), DataRowView).Row, dsDaten.dtDatenRow)
    31. MessageBox.Show(rw.Code, rw.Name)
    32. End Sub
    33. Private Sub btnLoeschen_Click(sender As Object, e As EventArgs) Handles btnLoeschen.Click
    34. bsDaten.RemoveCurrent()
    35. End Sub
    36. Private Sub txtSuche_TextChanged(sender As Object, e As EventArgs) Handles txtSuche.TextChanged
    37. Select Case True
    38. Case RadioButton1.Checked
    39. SearchIn = "Name"
    40. Case RadioButton2.Checked
    41. SearchIn = "Tag"
    42. Case Else
    43. SearchIn = "Name"
    44. End Select
    45. If txtSuche.Text <> "" Then
    46. bsDaten.Filter = String.Format("Convert({0}, System.String) LIKE '%{1}%' ", SearchIn, txtSuche.Text)
    47. Else
    48. bsDaten.Filter = ""
    49. End If
    50. End Sub
    51. End Class
    52. 'unter 60 Zeilen daher ohne Spoiler ;)


    p.S. die erwähnte Suche befindet sich im txtSuche.Textchanged Event ganz unten

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    die Benamung nachwievor ein Mischmasch von ok bis UnterAllerSau.

    Aber vlt lehnst du Prefixe ja auch bewust ab - nee - Textboxen und Buttons werden bei dir ja damit beglückt.
    Warum nicht auch Forms und Dialoge?
    Main, Neu - was soll das sein, ein "Neu"?
    Tatsächlich ist es doch absolut kein neu, sondern es ist ein PersonEditierDialog, oder? Dann soller auch so heissen:

    VB.NET-Quellcode

    1. using dlg = new dlgEditPerson
    ist doch ganz einfach.
    Aber du bist ja auch noch nichtma beim .ShowDialog() aus meim Vorschlag angekommen - ich bin iwie auch beeindruckt von soviel - wie soll ich sagen - "NichtKapiererei"?
    Also andere hätten meinen Vorschlag-Code in 5s aussm Browser auskopiert, bei sich eingepastet und ausprobiert gehabt.

    Aber weiter mitte Benamung: Wieso heisst das Dataset "DsDaten" - geht das nicht irgendwie genauer? Wie wäre AddressBuchDts?
    Und in DsDaten hast du offsichtlich - ebenso nichtssagend - die Tabelle Daten angelegt - herzlichen Glückwunsch! - aber dass eine DataTable Daten beinhaltet, wussten wir schon vorher.
    Und dass es Personen sind, diese Daten, das dürfen wir nicht wissen? Müssen wir erraten anhand von Spaltennamen, die zur Abwechslung gottlob auch mal was bedeuten: Name, Tag.

    Edit: Sorry - ich bin grad iwie in einer albernen und literarischen Stimmung (und 2 Glas Wein hab ich auch weg) - vlt sollte ich grad besser nicht posten



    Zur Suche - prinzipiell ok, nur was soll das "Convert({0}, System.String)..." im Filterstring? Was muss denn da in einen String konvertiert werden?

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

    Das hat weder etwas mit deiner Stimmung, noch mit dem Wein zu tun, da du zu 99% recht hast, aber es geht schon mal nicht um Personen, sondern um CodeSnippets,

    Name = wie es halt heissen Soll (das jeweilige Snippet)
    Tag (evtl. noch wahrlich blöd benannt) = sollen quasi Suchtags darstellen
    Sprache = die genutzte Programmiersprache (z.B. VB,C#,HTML usw.)
    Art = ob nur ein Snippet oder ein vollständiges Projekt
    Code = der eigentliche Inhalt

    dsDaten,dtDaten,bsDaten habe ich aktuell sehr bewusst so gewählt, da ich mit DataSet, BindingSource,DataTable noch nicht so intuitiv umgehen kann wie ich es mir wünschen würde und diese im Geiste noch oft verwechsle, daher steht es in kleinBuchstaben davor um diese auseinanderhalten zu können, desweiteren wird es ja nur diesen einen DataTable geben, verwechslungen mit anderen DataTables sind dahingehend ausgeschlossen ^^

    zu "Convert({0}, System.String)..." naja ich muss zugeben das ich nicht "genau" weis was da letztlich steht, ich hatte mir das einfach ergooglet, und so hatte es dann funktioniert. Ich werde schauen ob ich da nicht evtl. noch was korrigieren und hinter die genaue Funktionsweise kommen kann.

    "Neu" heisst es schlichtweg weil ich die Form ursprünglich für einen Neuen Eintrag angelegt hatte (und vergass es danach umzubenennen), erst danach hab ich gemerkt das ich dieses auch zum editieren nehmen kann (hatte in allen bisherigen Projekten jedes mal wenn ich eine Form gebraucht habe eine komplett neue angelegt, weis erst seit kurzem das ich die gleiche Form für mehreres benutzen kann)

    und warum ".Show()" anstelle von ".ShowDialog()" ?
    Nunja beides funktioniert, aber weil ich ja gar keine Antwort der Form auswerte, muss ich es doch nicht als Dialog anzeigen oder ?
    Wenn ich da nicht falsch liege ist ".ShowDialog()" ja nur wenn ich ein Dialogresult abfragen möchte, oder hat dies weitreichendere Gründe ?

    Greets und danke für deine Geduld mit (zugegebener maßen oft verpeiltem) mir =)

    Edit:

    ok das Convert im Suchstring war absolut useless, die Zeile lautet nun :

    VB.NET-Quellcode

    1. bsDaten.Filter = String.Format("{0} LIKE '%{1}%' ", SearchIn, txtSuche.Text)

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

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

    asusdk schrieb:

    und warum ".Show()" anstelle von ".ShowDialog()" ?
    .Showdialog() sperrt das darunterliegende Hauptform, und erzwingt dadurch eine User-Eingabe, bevor es weitergehen kann.
    .Show() hingegen ermöglicht gleichzeitiges Anzeigen und Bearbeiten beliebig vieler Forms,
    Das ist ein ganz wichtiger Unterschied inne Benutzerführung.

    Etwa bei .Show() kannst du in einem Form einen Datensatz anzeigen, und im Hauptform löschst du ihn währenddessen - tatsächlich habich keine Ahnung was dann eiglich passiert, aber ich nehme an, nix gutes.

    ErfinderDesRades schrieb:

    .Showdialog() sperrt das darunterliegende Hauptform, und erzwingt dadurch eine User-Eingabe, bevor es weitergehen kann.
    .Show() hingegen ermöglicht gleichzeitiges Anzeigen und Bearbeiten beliebig vieler Forms,
    Das ist ein ganz wichtiger Unterschied inne Benutzerführung.


    ahh, sehr gut zu wissen, danke dir, werde ich sofort entsprechend anpassen =)

    eine letzte Frage hätte ich noch @ErfinderDesRades besteht eine Möglichkeit, die Daten nicht im Klartext in die XML zu schreiben, oder aber die Daten in einem anderen Format abzuspeichern ?
    denn (soeben mal ausprobiert) sollte in einem Eintrag "</CODE>" stehen, zerschiesst es die komplette XML, (Daten werden fehlerhaft eingelesen)
    habe leider bislang nur Möglichkeiten entdeckt die XML zu verschlüsseln, nicht jedoch den Inhalt der XML zur Laufzeit

    (wenn es nicht geht muss ich die Option auf XML Code weglassen, aber es wäre praktisch ^^)

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

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

    Ich wollte schon mit BinaryFormatter oder TextReplace von Steuerzeichen anfangen, aber mit welcher Codezeile zerschießt Dir das Programm die XML? Wenn ich DataSet1.WriteXML(Dateipfad) schreibe und mir die XML anschaue, die dadurch erzeugt wird, hat die WriteXML-Funktion bereits die Sonderzeichen < und > in harmlose Zeichenfolge umgewandelt. Eine Textzeile wie </CODE> wird z.B. in &lt;/CODE&gt; umgewandelt.
    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.
    strange, vorhin hatte er die dann fehlerhaft eingelesen, ein teil also der hinter "</CODE>" hatte gefehlt, jetzt gehts es... naja dann hat sich die Frage wohl erledigt :P

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