Forums Neueste Beiträge
 

DataView Filter auf Feldnamen mit Sonderzeichen

26/10/2007 - 14:49 von christoph.biegner | Report spam
Hallo!

Der Einsatz von RowFiltern auf DataTables ist ja keinen grosse Sache.
Nun habe ich aber das Problem, daß ich auf ein Feld filter muss,
welches 'SG2-NAD-C059-3164' benannt ist (ohne Hochkomma). Ein Filter
"SG2-NAD-C059-3164 ='0'" führt genauso zu einem Laufzeitfehler wie
z.B. "[SG2-NAD-C059-3164]='0'" (die eckigen Klammern benutze ich im
SQL um das Feld anzusprechen.
Gibt es eine Möglichkeit im Filter (wahrscheinlich auch im Sort),
Feldnamen zu 'kapseln'?

Vielen Dank,
Christoph
 

Lesen sie die antworten

#1 Peter Fleischer
01/11/2007 - 06:15 | Warnen spam
schrieb im Newsbeitrag
news:

Der Einsatz von RowFiltern auf DataTables ist ja keinen grosse Sache.
Nun habe ich aber das Problem, daß ich auf ein Feld filter muss,
welches 'SG2-NAD-C059-3164' benannt ist (ohne Hochkomma). Ein Filter
"SG2-NAD-C059-3164 ='0'" führt genauso zu einem Laufzeitfehler wie
z.B. "[SG2-NAD-C059-3164]='0'" (die eckigen Klammern benutze ich im
SQL um das Feld anzusprechen.
Gibt es eine Möglichkeit im Filter (wahrscheinlich auch im Sort),
Feldnamen zu 'kapseln'?



Hi ,
bei mir funktioniert es mit den eckigen Klammern. Kopiere mal die folgende
Demo in den Codeteil eines leeren Formulars einer VB-Windows-Anwendung:

[vb]
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

Testdata1.GenerateData()

Dim dg As New DataGridView
Me.Controls.Add(dg)
dg.Dock = DockStyle.Fill
dg.DataSource = Testdata1.GetBindindSource1

Testdata1.GetBindindSource1.Filter = "[SG2-NAD-C059-3164] = '0'"

End Sub
End Class

' Class for test data

Public Class Testdata1

Shared Sub GenerateData()
Dim i As Integer
Try
Dim dt As New System.Data.DataTable("Tab1")
With dt
With .Columns
.Add("ID", GetType(Integer))
With .Item(0)
.AutoIncrement = True
.AutoIncrementSeed = -1
.AutoIncrementStep = -1
End With
.Add("SG2-NAD-C059-3164", GetType(String))
End With
For i = 1 To 100
Dim r As DataRow = .NewRow
If Rnd() < 0.5 Then
r.Item(1) = "0"
Else
r.Item(1) = "Row " & i.ToString
End If
.Rows.Add(r)
Next
End With
bs1.DataSource = dt
Catch ex As Exception
Debug.WriteLine(ex.ToString)
End Try
End Sub

Shared bs1 As New BindingSource

Shared Function GetBindindSource1() As BindingSource
Return bs1
End Function

End Class
[/vb]

Viele Gruesse

Peter

Ähnliche fragen