Announcement

Collapse
No announcement yet.

Tables in dataset vergleichen oder auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tables in dataset vergleichen oder auslesen

    Hallo zusammen,
    ich bin ein absoluter neuling in VB.Net und ein klein wenig am verzweifeln.
    Ich habe via dem Code unten eine XML datei eingelesen (siehe unten)
    Ich möchte jetzt zum Beispiel alle "StartDatum" aus den einzelnen "ID's" auslesen und mit einer andern Variable vergleichen um zu sehen, ob ich einen neuen Eintrag in die XML datei machen kann. Es darf zum Beispiel keine doppelten StartDatum Werte geben.
    Leider habe ich keine Ahnung, wie ich das anstellen soll. Kann mir jemand einen Tipp geben?

    Grüße,
    Stefan

    Code:
    - 
    <Aufträge>
    - <ID>
      ab8f7faa-9ad6-4a85-aceb-1bc4ef6809ae 
      <StartDatum>16.03.2007</StartDatum> 
      <StartUhrzeit>22:0</StartUhrzeit> 
      <StopDatum>16.03.2007</StopDatum> 
      <StopUhrzeit>22:0</StopUhrzeit> 
      <DateiName /> 
      <DateiEndung /> 
      </ID>
    - <ID>
      ac64c6ac-56a2-4674-bd70-8e606c3e8627 
      <StartDatum>16.02.2008</StartDatum> 
      <StartUhrzeit>22:0</StartUhrzeit> 
      <StopDatum>16.02.2008</StopDatum> 
      <StopUhrzeit>22:0</StopUhrzeit> 
      <DateiName /> 
      <DateiEndung /> 
      </ID>
      </Aufträge>
    Code:
    Dim dsCategory As New DataSet
    Dim dt As DataTable
    dsCategory.ReadXml("c:\quickie.xml")
    dt = dsCategory.Tables("ID")
    Dim rowanzahl As String = dt.Rows.Count

  • #2
    Hallo,

    Es darf zum Beispiel keine doppelten StartDatum Werte geben.
    für ADO.NET spielt es keine Rolle, ob die Informationen aus einer Datenbank oder eine XML-Datei stammen. Aus diesem Grund reicht die Zeile dt.Columns(0).Unique = True aus, um doppelte StartDatum-Werte zu verhindern:

    <div style="font-family: Consolas; font-size: 10pt; color: black; background: white;"><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">Dim</span> dsCategory <span style="color: blue;">As</span> <span style="color: blue;">New</span> DataSet</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">Dim</span> dt <span style="color: blue;">As</span> DataTable</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dsCategory.ReadXml(<span style="color: #a31515;">"c:\Temp\ForumFrage.xml"</span>)</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dt = dsCategory.Tables(<span style="color: #a31515;">"ID"</span>)</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dt.Columns(0).Unique = <span style="color: blue;">True</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DataGrid1.DataSource = dt</p></div>

    Noch eleganter geht es, wenn die Struktur der XML-Daten im DataSet-Designer visuell gestaltet wird - denn dann können die Eigenschaften direkt über den Eigenschafts-Editor eingetragen werden.

    Während die Unique-Eigenschaft der "Sicherheitsgurt" ist, der doppelte Einträge in jedem Fall verhindert, liefert die Select-Methode vorher ein Ergebnis:

    <div style="font-family: Consolas; font-size: 10pt; color: black; background: white;"><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: green;">' Prüfen, ob es einen Datensatz mit dem in der TextBox eingetragenen Datum gibt</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">Dim</span> aResult <span style="color: blue;">As</span> DataRow()</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; aResult = dt.Select(<span style="color: blue;">String</span>.Format(<span style="color: #a31515;">"StartDatum = '{0}'"</span>, TextBox1.Text))</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MessageBox.Show(aResult.Length.ToString(), <span style="color: #a31515;">"Trefferanzahl"</span>)</p></div>

    Das Visual Basic 2005-Beispiel ist als Anlage beigefügt
    Attached Files
    Zuletzt editiert von Andreas Kosch; 17.03.2007, 16:52.

    Comment

    Working...
    X