Announcement

Collapse
No announcement yet.

Datenbankinhalte auf Knopfdruck in Infopath anzeigen

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

  • Datenbankinhalte auf Knopfdruck in Infopath anzeigen

    Hallo zusammen,

    ich möchte ein Infopath-Formular erstellen. Es besitzt 2 Datenfelder für die Eingabe eines Start- und eines Enddatums und eine Taste. Drückt der Benutzer auf die Taste, möchte ich, dass das Formular alle Datensätze, welche zwischen den gewählten Zeitpunkten liegen ausgelesen werden und in Infopath untereinander angezeigt werden.
    Welches Steuerelement benutze ich am sinnvollsten für die Darstellung?
    Zur Zeit verwende ich eine wiederholte Tabelle, jedoch zeigt sie mir lediglich eine Zeile mit den ausgelesenen Datensätzen an. Sie soll jedoch automatisch für jeden ausgelesenen Datensatz eine neue Zeile anlegen und mit dem entsprechenden Inhalt füllen.
    Mein bisheriger Quelltext für das Betätigen der Taste sieht wie folgt aus:

    Public Sub CTRL502_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
    Dim nav As XPathNavigator = CreateNavigator()
    Dim sContent As String
    Dim oCulture As Globalization.CultureInfo = Globalization.CultureInfo.CreateSpecificCulture("d e-DE")
    Dim dtVon, dtBis As Date

    sContent = nav.SelectSingleNode("/my:assetTracking/my:MeldungVon", NamespaceManager).Value
    If Not Date.TryParse(sContent, oCulture, Globalization.DateTimeStyles.None, dtVon) Then
    MessageBox.Show(sContent & " im Feld 'Von' ist kein gültiges Datum", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
    End If
    sContent = nav.SelectSingleNode("/my:assetTracking/my:MeldungBis", NamespaceManager).Value
    If Not Date.TryParse(sContent, oCulture, Globalization.DateTimeStyles.None, dtBis) Then
    MessageBox.Show(sContent & " im Feld 'Bis' ist kein gültiges Datum", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
    End If

    Dim dr As SqlDataReader
    Dim conn As SqlClient.SqlConnection

    Try
    With New SqlClient.SqlConnectionStringBuilder
    .DataSource = "server"
    .InitialCatalog = "db"
    .UserID = "user"
    .Password = "pw"
    .ApplicationName = "BHLs InfoPath"
    conn = New SqlClient.SqlConnection(.ToString)
    End With
    conn.Open()

    With conn.CreateCommand()
    .CommandText = String.Format("SELECT Nummer,Modul,Beschreibung" & _
    " FROM table" & _
    " WHERE Datum >= convert(datetime, '{0}' ,120)" & _
    " AND Datum < convert(datetime, '{1}' ,120)", _
    dtVon.ToString("yyyy-MM-dd"), dtBis.AddDays(1).ToString("yyyy-MM-dd"))
    dr = .ExecuteReader()

    While dr.Read()
    nav.SelectSingleNode("/my:assetTracking/my:gruppe207/my:gruppe208/my:FehlerNummer", NamespaceManager).SetValue(dr("Nummer"))
    nav.SelectSingleNode("/my:assetTracking/my:gruppe207/my:gruppe208/my:FehlerModul", NamespaceManager).SetValue(dr("Modul"))
    nav.SelectSingleNode("/my:assetTracking/my:gruppe207/my:gruppe208/my:FehlerBeschreibung", NamespaceManager).SetValue(dr("Beschreibung"))
    End While
    End With
    Catch ex As Exception
    MessageBox.Show(ex.ToString, "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Finally
    If Not dr Is Nothing AndAlso Not dr.IsClosed Then dr.Close()
    If Not conn Is Nothing Then conn.Close()
    End Try
Working...
X