Von der Datenbank in die ListBox

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Von der Datenbank in die ListBox

    Hallo,

    ich habe folgendes Problem:
    In einer Datenbank gibt es eine Spalte mit dem Titel "Namen".
    Diese hat zum Beispiel in einem Feld den Inhalt "Hans, Carl, Peter". Dieser Inhalt wird immer weiter vergrößert, in dem weitere Namen über die UPDATE-Funktion hinzugefügt und durch ein Komma getrennt werden. ("Hans, Carl, Peter, Dieter") Dieses Feld möchte ich nun auslesen und so die Namen in eine ListBox einzellend eintragen. Das gesammte Feld ist leicht auszulesen, nur weiß ich nicht wie ich die Namen trennen und einzellend an die ListBox übergeben kann.

    Hat da jemand vielleicht eine Idee?!
    Liebe Grüße
    Ach verdammt :/ na ok. Ich hab es jetzt anders gemacht. Ich lasse die Namen in eine XML Datei schreiben. Das sieht ungefähr so aus:

    Quellcode

    1. Dim enc As New System.Text.UnicodeEncoding
    2. Dim test As String = ListBox1.SelectedItem
    3. Dim XMLobj As Xml.XmlTextWriter _
    4. = New Xml.XmlTextWriter("C:\Users\Skynet\Documents\Visual Studio 2010\Projects\IPChat\IPChat\XMLFile2.xml", enc)
    5. With XMLobj
    6. .Formatting = Xml.Formatting.Indented
    7. .Indentation = 4
    8. ' Dann fangen wir mal an:
    9. .WriteStartDocument()
    10. .WriteStartElement("Freunde")
    11. .WriteStartElement("User")
    12. .WriteString(str1)
    13. .WriteEndElement()
    14. .WriteStartElement("Freunde")
    15. .WriteString(test.ToString)
    16. .WriteEndElement()
    17. .WriteEndElement()
    18. .Close()
    19. End With

    Es geht dabei um folgendes: In einer ListBox werden bestimmte Namen aus einer Datenbank ausgelesen. Wenn einer dieser Namen angeklickt wird, soll er dem User als Freund in die XML Datei hinzugefügt werden. Also so:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-16"?>
    2. <Freunde>
    3. <User>Hans</User>
    4. <Freunde>Admin</Freunde></IP>
    5. </Freunde>


    Ist es nun möglich dem User mehrere Freunde hinzuzufügen?

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „IHQ“ ()

    ja - überhaupt kein Problem!
    Relationale Datenmodellierung ist genau dafür erfunden worden :thumbsup:

    Du musst es aber erlernen - anders gehts nicht :P

    (doch - geht auch anders, aber wenn du es anners hinwursteln willst, helfe ich nicht, weil das schadet dir, indem es dir extrem schlechten Stil angewöhnt)

    Du musst es lernen - anners gehts nicht :P
    Da hast du vollkommen recht! Trotzdem hätte ich noch ein paar Fragen, wenn es dich nicht stört. Ich habe jetzt ein typisiertes DataSet erstellt und will es mit der XML Datei verknüpfen. Da die einzuspeichernden Daten aus einer ListBox eingelesen werden sollen, die durch einen Klick ausgelöst wird, weiß ich jetzt nicht wie ich das am besten anstelle. Normalerweise würde man ja die vom DataSet gegebenen Details als Ausgangsformular verwenden. Dies fällt ja dabei aber weg. Ich erläutere das geplante Prozedere mal ein bisschen genauer: Ich habe zwei Form: FrListe und FrAdd. FrListe soll eine Auflistung von Namen/Freunden sein, die der Benutzer mittels FrAdd hinzugefügt hat. Ersteres verfügt über eine ListBox welche die Freunde des Benutzers aus der XML Datei ausliest. Also müssten bei der Abfrage der Daten genau die Freunde ausgegeben werden, welche hinter dem BenutzerNamen stehen. Bis jetzt würde er ja nur alle Namen auslesen, die unter dem Begriff "Freunde" stehen. Beim FrAdd hat man ebenfalls eine ListBox und dazu noch ein TextFeld in dem man einen BenutzerNamen eingeben kann, welcher dann (wenn in der Datenbank vorhanden) in der ListBox angezeigt werden soll. Klickt man dann in der ListBox auf diesen Namen soll der Name als Freund des Benutzers in die XML Datei geschrieben werden.
    Bis jetzt werden die Freunde in FrListe so ausgelesen:

    Quellcode

    1. ​ Dim NAME_XMLDATEI As String = "C:\****\****\XMLFile2.xml"
    2. Dim reader = New XmlTextReader(NAME_XMLDATEI)
    3. Dim readElement = XElement.Load(reader)
    4. For Each line As String In readElement.Descendants("Freunde)
    5. ListBox1.Items.Add(line)
    6. Next


    und so in FrAdd eingespeichert:

    Quellcode

    1. ​ Dim enc As New System.Text.UnicodeEncoding
    2. Dim test As String = ListBox1.SelectedItem
    3. ' XmlTextWriter-Objekt für unsere Ausgabedatei erzeugen:
    4. Dim XMLobj As Xml.XmlTextWriter _
    5. = New Xml.XmlTextWriter("C:\******\*****\XMLFile2.xml", enc)
    6. With XMLobj
    7. .Formatting = Xml.Formatting.Indented
    8. .Indentation = 4
    9. ' Dann fangen wir mal an:
    10. .WriteStartDocument()
    11. .WriteStartElement("Freunde")
    12. .WriteStartElement("User")
    13. .WriteString(str1)
    14. .WriteEndElement()
    15. .WriteStartElement("Freunde")
    16. .WriteString(test.ToString)
    17. .WriteEndElement()
    18. .WriteEndElement()
    19. .Close()
    20. End With


    Hast du da vielleicht eine Idee? :)
    Uih - dein Fließtext ist extrem schwer zu lesen - Fang auch mach mal eine neue Zeile an, oder gar eine Leerzeile, wenn ein annerer Aspekt ins Visier genommen wird.
    Auch deinen Code: Benutze doch den Vb.Net-Tag - der ist viel netter ;) !

    Zu den Fragen:

    IHQ schrieb:

    Ich habe jetzt ein typisiertes DataSet erstellt und will es mit der XML Datei verknüpfen.
    Was heisst "verknüpfen" - laden und speichern? Da nimm doch Dataset.WriteXml, .ReadXml - wie in alle meine Tuts gezeigt.
    Brech dir doch nicht mittm XmlWriter einen ab.

    IHQ schrieb:

    Da die einzuspeichernden Daten aus einer ListBox eingelesen werden sollen,
    Bei mir ist das immer annersrum: Ich befülle die Listbox aus dem Dataset. Tatsächlich befülle ich sie gar nicht, sondern ich binde sie einfach an, dann befüllt sie sich selbst - guck dir mal meine Tuts dazu an.

    IHQ schrieb:

    aus einer ListBox eingelesen werden sollen, die durch einen Klick ausgelöst wird
    eine Listbox kann man nicht durch einen Klick auslösen.
    Ja, ich bin Sprach-Korintenkacker, "verknüpfen" und "auslösen" hat je eine bestimmte Bedeutung, und du verwendest diese Worte in einer Art, die eiglich keinen Sinn ergibt. Da wirft mein Hirn sowas wie einen Compiler-Fehler ;) .

    IHQ schrieb:

    Normalerweise würde man ja die vom DataSet gegebenen Details als Ausgangsformular verwenden.
    Hier hörts ganz auf: Welche Details gibt dir ein Dataset? Und bei diesen Details ist etwas dabei, was man als Formular verwenden kann??

    IHQ schrieb:

    Ich erläutere das geplante Prozedere mal ein bisschen genauer: Ich habe zwei Form: FrListe und FrAdd...
    Das reicht schon - stell das mit den mehreren Forms erstmal zurück, bis du überhaupt etwas gebastelt hast, was funktioniert.
    Weil bei mehreren Forms sind weitere Spezialprobleme zu lösen, erarbeite du erstmal eine allereinfachste Lösung, die funktioniert.
    Das wäre ein ParentChild-View, wo du links einen Benutzer anklickst und rechts alle seine Freunde angezeigt kriegst.
    Alles dazu nötige ist im 4Views-Tut vorgeführt, und wenn du das gelöst hast, dann hast du auch ein bischen Datenmodellierung erfolgreich betrieben.
    Erst danach über weitere Forms nachdenken, falls das dann ühaupt noch nötig erscheint, denn ein ParentChildView ist bereits eine ziemlich fabelhafte Sache, auch von der Benutzerführung her.

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