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
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