Filtern nach Check-Boxen?

20/02/2008 - 09:46 von Tamara Mikes | Report spam
Salü alle zusammen

Ich habe eine Access Tabelle tblMitarbeiter mit den Feldern wo der
Mitarbeiter tàtig ist. Also Checkboxen für CH, D, AT, EU und USA.

Wenn ich mir in einem ASPX-File eine Liste (GridView) ausgeben lasse, mit
allen Mitarbeitern dann kommen die Checkboxen auch wunderbar aufgelistet
neben den Mitarbeiternamen.

Nun möchte ich aber filtern. Ich habe unter der Grid View eine Schaltflàche
gemacht mit welcher ich nur die filtern möchte, welche die cbCH=true ist.
zusàtzlich habe ich neben der Schaltfàche Checkboxen platziert in welcher
der Anwneder sagt, aus welchen Làndern er die Mitarbeiter will. Also einen
Button (cmdFiltern) und Checkboxen für CH, DE, AT, EU, USA.

Als ersten Schritt habe ich probiert
Me.adsFirmen.FilterExpression = "fldCH = true"

und das hat wunderbar gefiltert.

Dann habe ich den Parameter erstellt und mit dem Filter sage ich fldCH='{0}'

Jetzt bekomme ich die Fehlermeldung "Die Zeichenfolge wurde nicht als
gültiger Boolean erkannt"

Was mache ich falsch?


Ev habe ich aber überhaupt den flaschen Weg gewàhlt. Denn:

Ein Mitarbeiter kann in Deutschland und oder der Schweiz tàtig sein.
Wenn ich eine Liste möchte, aller Mitarbeiter die in der Schweiz tàtig sind,
unabhàngig davon ob sie in deutschland auch tàtig sind, dann kann ich das in
meinem Suchformular mit den Checkboxen ja nicht anklicken. Die nimmt ja nur
Ja oder Nein. Einen dritten Zustand, ignorieren... wie mach ich das? Habe
schon Programme gesehen in welchen die Checkboxen Mit Hacken, ohne Hacken
oder grau ausgefüllt waren. Wie erreiche ich das?

Viele Grüsse
Tamara
 

Lesen sie die antworten

#1 Peter Götz
20/02/2008 - 10:12 | Warnen spam
Hallo Tamara,

Ich habe eine Access Tabelle tblMitarbeiter mit
den Feldern wo der Mitarbeiter tàtig ist. Also
Checkboxen für CH, D, AT, EU und USA.



In einer Tabelle einer Access.mdb gibt es keine
Felder mit Checkboxen. Vermutlich hast Du
Felder vom Typ Boolean.

Richtig?

... schnipp ...

Nun möchte ich aber filtern.



Wo bzw. wann möchtest Du filtern?
Schon beim Einlesen Deiner Datensàtze aus der DB,
also via Where-Klausel in Deinem Select-Statement?

Oder möchtest Du einen RowFilter auf eine DataView
zu einer lokalen DataTable anwenden?


Ich habe unter der Grid View



Wer oder was ist "Grid View"?
Eine DataGridView-Control vielleicht?

eine Schaltflàche gemacht mit welcher ich nur die
filtern möchte, welche die cbCH=true ist.



Das làsst vermuten, dass Du einen RowFilter auf
eine DataView zu einer lokalen DataTable anwenden
möchtest.

zusàtzlich habe ich neben der Schaltfàche
Checkboxen platziert in welcher der Anwneder sagt,
aus welchen Làndern er die Mitarbeiter will. Also
einen Button (cmdFiltern) und Checkboxen für
CH, DE, AT, EU, USA.



Daraus könnte dann z.B. ein

DataView.RowFilter = "FeldCH = True And FeldAT = True"

gebildet werden.


Als ersten Schritt habe ich probiert
Me.adsFirmen.FilterExpression = "fldCH = true"



Wer oder was ist "Me.adsFirmen"?

und das hat wunderbar gefiltert.

Dann habe ich den Parameter



Welchen Parameter für was hast Du erstellt?

erstellt und mit dem Filter sage ich fldCH='{0}'

Jetzt bekomme ich die Fehlermeldung
"Die Zeichenfolge wurde nicht als
gültiger Boolean erkannt"

Was mache ich falsch?



Wenn Dein Feld im Datensatz, wie zu vermuten
ist eines vom Typ Boolean ist, dann kann es
entweder True oder False, aber nicht '{0}' sein.



Ev habe ich aber überhaupt den flaschen Weg
gewàhlt.



Bisher ist noch nicht wirklich klar, welchen Weg
Du überhaupt gewàhlt hast.

Denn:

Ein Mitarbeiter kann in Deutschland und
oder der Schweiz tàtig sein.



Wenn er in Deutschland und in der Schweiz
tàtig sein soll dann

(FeldDE = True) And (FeldCh = True)

Wenn er in Deutschland oder in der Schweiz
tàtig sein soll dann

(FeldDE = True) OR (FeldCh = True)

Wenn ich eine Liste möchte, aller Mitarbeiter
die in der Schweiz tàtig sind,



(FeldCH = True)

als Folge davon, dass die entsprechende CheckBox
"CH" markiert ist.

unabhàngig davon ob sie in deutschland auch
tàtig sind, dann kann ich das in meinem Suchformular
mit den Checkboxen ja nicht anklicken. Die nimmt ja
nur Ja oder Nein. Einen dritten Zustand, ignorieren...
wie mach ich das?



Wenn Du in Deinem Filterausdruck ein

FeldCH = True

hast und sonst kein weiteres Feld, dann werden die
Inhalte der Felder FeldDE, FeldAT usw. ohnehin
ignoriert.

Habe schon Programme gesehen in welchen die
Checkboxen Mit Hacken, ohne Hacken oder grau
ausgefüllt waren. Wie erreiche ich das?



CheckBox.ThreeState = True

Nur würde Dir das in Deinem konkreten Fall nicht
helfen, da Du ja offenbar entsprechend zugeordnete
Felder vom Typ Boolean in Deinen Datensàtzen
hast. Eine Checkbox mit ThreeState = True kann
die Zustànde

UnChecked = 0
Checked = 1
Indeterminate = 2

annehmen. Das würde aber nicht zu einem Feld
vom Typ Boolean passen.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen