RowFilter Frage

11/04/2009 - 13:24 von Maik Weiß | Report spam
Hallo NG,

ich habe eine DataTable mit mehreren Spalten.
U.a. ist eine Date-Spalte mit Datumsangaben (z.B. 22.02.2009) vorhanden.
Nun möchte ich einen Rowfilter setzen, wo man z.B. alle Datensàtze aus dem
Jahre 2009 bekommt.

Wie kann man das realisieren?

Ansàtze wie:
_myDT.DefaultView.RowFilter = "'YEAR(date) = 2009'"
funktionieren nicht bzw. bewirken keine Filterung.
Und
_myDT.DefaultView.RowFilter = "'YEAR(date) ' = '2009'"
liefert mir gar keinen Datensatz zurück.

Kann mir da jmd. weiter helfen?

MFG
Maik
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
11/04/2009 - 14:27 | Warnen spam
Hallo Maik,

"Maik Weiß" schrieb:

_myDT.DefaultView.RowFilter = "'YEAR(date) ' = '2009'"
liefert mir gar keinen Datensatz zurück.



Du solltest dir hierfür eine Spalte im SQL Statement einbauen, die das Jahr beinhaltet.
AFAIK kannst Du das obige nicht so wie gewünscht über Year o.à. im RowFilter lösen.

<DataTable>.DefaultView.RowFilter = "<Datum> >= #1/1/09# AND <Datum> <= #12/31/09#"

wird lt. Doku (und einem kurzen Test) zwar funktionieren, ob das aber performant
ist?

http://msdn.microsoft.com/de-de/lib...ilter.aspx
http://msdn.microsoft.com/de-de/lib...ssion.aspx

SELECT <Datum>, YEAR( <Datum> ) AS Jahr FROM ...
...
_myDT.DefaultView.RowFilter = "Jahr = 2009"

sollte helfen. Man könnte sich zwar evtl. auch mit einer Umwandlung über Convert und
SubString behelfen aber als sauber würde ich das nicht bezeichnen.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen