collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 50
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13974
  • stats Beiträge insgesamt: 66586
  • stats Themen insgesamt: 8974
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Auswahl anhand Kontrollkästchen  (Gelesen 20235 mal)

Offline Kelte81

  • Newbie
  • Beiträge: 11
Auswahl anhand Kontrollkästchen
« am: Mai 21, 2010, 10:17:29 »
Hallo an Alle!
Ich benutze Access 2007 und Windows Vista
Ich habe eine Tabelle in der ich Lieferanten reinschreibe. Die liefern und machen unterschiedliche Sachen und das möchte ich mit einem Kontrolkästchen vermerken. Klappt auch.
Jetzt will ich die Lieferanten auch in einem Bericht anzeigen lassen und zwar nur bestimmte Lieferanten die z.B. bei "Stricken" und bei "Seide" einen Haken haben.
Das wollte ich über ein ungebundenes Formular erreichen. Hab dort ungebundene Kontrolkästchen platziert und über einen Button will ich dann den Bericht öffnen. Der Bericht soll dann nur die Lieferanten anzeigen die also "Stricken" und "Seide" haben.

Wie kann ich jetzt dem Bericht klar machen, dass er die Lieferanten anhand dem ungebundenen Formular filtern soll???

Schon mal Danke im Vorraus
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Auswahl anhand Kontrollkästchen
« Antwort #1 am: Mai 21, 2010, 19:22:47 »
Hallo,

Zitat
Wie kann ich jetzt dem Bericht klar machen, dass er die Lieferanten anhand dem ungebundenen Formular filtern soll
Indem du dem Befehl zu Öffnen des Berichts z.B. die entsprechende WHERE-Condition mitgibst, wenn der Bericht direkt auf die Tabellendaten aufsetzt.

du kannst den Zustand deiner Auswahl-Chekcboxen abfragen und entsprechend das Öffnen setzen..
Ins Klick-Ereignis des Button setzt du den Code

If me!chkStricken= -1 AND me!chkSeide= -1 then

DoCmd.OpenReport "DeinBericht" ,,,"Seide=True AND Stricken=True"

ElseIf me!chkStricken = -1 AND me!chkSeide = 0 Then

DoCmd.OpenReport "DeinBericht" ,,,"Seide=False AND Stricken=True"

ElseIf Me!chkStricken=0 AND me!chkSeide = -1 Then

DoCmd.OpenReport "DeinBericht" ,,,"Seide=True AND Stricken=False"

End If

Eine andere Möglichkeit wäre dem Bericht eine entsprechende Abfrage als Datenherkunft zu geben, welche dann die Zustände der Checkboxen als Kriterium enthält.

HTH

Peter
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #2 am: Mai 25, 2010, 10:27:23 »
Hallo Peter,
Vielen Dank für deine Antwort!
Ich hab ca 12 Kriteriumsfelder wie Stricken, Seide aber auch Web, Cashmere, Jeans usw...
Da denke ich wird der Code doch ziemlich kompliziert, oder?

Vermutlich wird die Abfrage die bessere Lösung darstellen. Und jetzt kommt die ganz blöde Frage:
Wie sieht der Befehl in der Abfrage aus für die Kontrollkästchen???

Viele Grüße
Simon
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Auswahl anhand Kontrollkästchen
« Antwort #3 am: Mai 25, 2010, 13:23:10 »
Hallo,

Zitat
Vermutlich wird die Abfrage die bessere Lösung darstellen
Kommt drauf an ob du mit VBA gut unterwegs bist UND natürlich darauf ob du die Abfrageergebnisse des Öfteren benötigst ...
da gibt es viele Gründe, die für die eine oder die andere Methode sprechen.

für die Abfrage ... 
du kannst diese Kontrollfelder - wenn die in der Datenbanktabelle als ja/nein - Felder deklariert sind auf den Wahrheitswert (=True oder = False) abfragen oder du fragst nach dem numerischen Wert, dieses wäre dann 0 für nein und -1 für ja.

Greets Peter
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #4 am: Mai 25, 2010, 14:18:25 »
Ich brauch die Abfrage schon häufiger.
Die soll ja auch über ein ungebundenes Formular (DialogLieferant) "gesteuert" werden. Also ich hab an diesem Formular auch die ganzen Kontrollkästchen nochmals. Wenn ich jetzt beim Formular DialogLieferant ein Kreuzchen beim KKStricker mach, will ich im Bericht auch nur die Datensätze sehen die in der Tabelle im Ja/Nein Feld für Stricker auch ein Kreuzchen haben.
Jetzt frag ich mich nur wie der genaue Befehl in der Abfrage aussehen muß damit der mir die Datensätze beim Stricker = -1 anzeigt.
Unter dem Punkt Kriterien würde ich grob sowas schreiben =[forms]![DialogLieferant]![KKStricker] Geht nur nicht...

Bin ich jetzt völlig auf dem Holzweg? Bzw hab ich es verständlich erklärt? Bin kein Philosoph...  ;)
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Auswahl anhand Kontrollkästchen
« Antwort #5 am: Mai 25, 2010, 20:14:42 »
Hallo,

Zitat
=[forms]![DialogLieferant]![KKStricker]

... wird nicht funktionieren außer du arbeitest mit einer englischen Version von Access.

Sonst mußt die deutsche Schreibweise verwenden (=[Formulare]![DialogLieferant]![KKStricker])
Erstell doch die Kriterien einfach mit dem Ausdrucks-Generator - unter Acc 2007 findest du diesen bei geöffnetem
Abfrageeditor unter 'Abfragesetup' ---  Generator (rechts von Tabelle anzeigen - der 'Zauberstab')

HTH

Peter
p.s. war's philosophisch genug ? ;D
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Auswahl anhand Kontrollkästchen
« Antwort #6 am: Mai 25, 2010, 23:00:33 »
Hallo,
@database:  muß gleich  mitphilosophieren..   ;D    Das geht sehr wohl so mit [Forms].   Sollte man sogar so schreiben, auch in einer nicht englischen Version.  (Zumindest war das bis A2003 so)


Ich tippe eher auf was anderes:  Ein ungebundenes KK kann "three-state"-Zustand haben, soll heißen, es kann auch NULL sein, bevor es irgendwie an/abgehakt wurde.  In diesem Fall würde die Anfrage auch keine DS liefern.


Vielleicht sollte man so schreiben im Kriteriumsfeld der entspr. Spalte:
[Forms]![DialogLieferant]![KKStricker] oder [Forms]![DialogLieferant]![KKStricker] ist Null


wobei ich trotzdem den Zusammenbau eines "Where-Condition" (Kriterien)-Strings per VBA und seine Zuweisung an die Openreport-Methode bevorzugen würde.

Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #7 am: Mai 26, 2010, 15:11:34 »
Das mit dem Ausdrucksgenerator war ein super Tipp!!! Vielen Dank.
Hab jetzt auch verschiedene Möglichkeiten durchprobiert aber leider hats nie geklappt.
Es sind ja verschiedene Kontrollkästchen. Bei dem jeder Datensatz ein oder mehrere aktiviert hat. Wenn ich jetzt im Dialog Feld nur ein Kontrollkästchen aktivieren, will ich alle Datensätze sehen die diese Kontrollkästchen auch aktiviert haben unabhängig davon ob noch andere KK im Datensatz aktiviert sind.
z.B. im DialogLieferant aktiviere ich KKStricker. Jetzt sollen im Bericht alle Datensätze kommen die auch KKStricker aktiviert haben und evtl auch KKCashmere und KK16GG.

Den Three-state Zustand umgehe ich da ich beim öffnen des Formulars alle Kontrollkästchen gleich auf "false" setze.
Der Generator bei der Abfrage hat immer [formulare] genommen.
Im Kriteriumsfeld hab ich jetzt den Befehl [formulare]![DialogLieferant]![KKStricker] aber egal ob ich jetzt dieses KK aktiviere oder nicht, es wird mir kein Datensatz angezeigt, obwohl einer vorhanden ist mit aktiviertem KK bei Stricker.
Reicht auch der Befehl [formulare]![DialogLieferant]![KKStricker] aus damit Access versteht das es jetzt alle Datensätze anzeigen soll wo Stricker aktiviert ist?

Stelle ich mich jetzt saublöd an?
Und philosophiert habt ihr beide aufjedenfall besser als ich...

Viele Grüße
Simon
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Auswahl anhand Kontrollkästchen
« Antwort #8 am: Mai 26, 2010, 15:34:24 »
Hallo,


beschreib nochmal die Tabelle(n) mit Namen und Felder, die KKs die Du in einem Formular hast und was genau(!) passieren soll, wenn die KKs eine bestimmte Konstellation aufweisen.
 (Three-State könnte durchaus sinnvoll sein, z. B. dass bei Three-State das Feld "Stricker" gar nicht geprüft wird, es also egal ist, ob es true oder false ist.

Im Prinzip sollte das so gehen:


Sub btnSuchen_Click()

If Not Isnull( me!kkStricker) Then strKrit = strKrit & " And Stricken = " & Me!kkStricker

If Not Isnull( me!kkSeide) Then strKrit = strKrit & " And Seide = " & Me!kkSeide

.
.
.

If Len(strKrit) > 0 Then  
strKrit =Mid (strKrit,6)
Docmd.Openreport "rptDeinBericht", acpreview,,strKrit
End If
End Sub


der Bericht basiert dabei direkt auf der Tabelle oder einer Abfrage über die nötigen Tabellen, aber OHNE irgendein Kriterium bezgl. der o. g. Ja/Nein-Felder..

Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #9 am: Mai 26, 2010, 16:15:53 »
Erstmal Vielen Dank wieviel Zeit du dir für mein Problem nimmst!!! Danke!!!

Ok beschreibe ich alles genau:
Tabelle: "Lieferantenstamm"
Felder: ID (Primärschlüßel) Autowert, verschiedene Textfelder für Adresse usw, 12x Kontrollkästchen (Ja/Nein); Namen dieser Kontrollkästchen: Stricker, Shirt, Web, Cashmere

Bericht: "BerLieferanten"
Felder: ID, verschiedene Textfelder, alle Kontrollkästchen mit gleichem Namen wie in Tabelle. Bericht wurde anhand der Tabelle "Lieferantenstamm" erstellt mit Hilfe des Assistenten

Formular: "DialogLieferant"
12 Ungebundene Kontrollkästchen mit Namen KKStricker, KKShirt, KKWeb usw

Abfrage: "AbLieferant"
Gleiche Felder wie im Bericht. Diese Abfrage wurde auch automatisch von Access erstellt.

Dein Ansatz unten schreibe ich wohl beim Formular "DialogLieferant" rein.
Ich werde das gleich mal versuchen sobald mein Chef mir etwas Zeit gibt...
Nochmals vielen Dank!!!
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Auswahl anhand Kontrollkästchen
« Antwort #10 am: Mai 26, 2010, 16:20:48 »
Hallo,

ja, erstell aber in diesem Form ("DialogLieferant") eine zusätzliche Schaltfläche ("btnSuchen") die in ihrem Klick-Ereignis die Ereignisprozedur btnSuchen_Click  verpasst bekommt.  Vergiss nicht, alle Namen an die gegebenen anzupassen. (d. h.den Code nicht kommentarlos nur copy&paste einbauen und erwarten, dass der dann fehlerfrei läuft.)


Die Abfrage "AbLieferant"  ist hier überflüssig, bzw. wird nicht gebraucht.

Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #11 am: Mai 26, 2010, 16:52:04 »
OK sauber,
hab jetzt folgenden Befehl produziert:
Private Sub BtSuchen_Click()
If Not IsNull(Me!KKStricker) Then strKrit = strKrit & " And Strick = " & Me!KKStricker
If Not IsNull(Me!KKSeide) Then strKrit = strKrit & " And Seide = " & Me!KKSeide
If Not IsNull(Me!KKShirt) Then strKrit = strKrit & " And Shirt = " & Me!KKShirt
If Not IsNull(Me!KKLeder) Then strKrit = strKrit & " And Leder = " & Me!KKLeder
If Not IsNull(Me!KKJeans) Then strKrit = strKrit & " And Jeans = " & Me!KKJeans
If Not IsNull(Me!KKCashmere) Then strKrit = strKrit & " And Cashmere = " & Me!KKCashmere
If Not IsNull(Me!KKWeb) Then strKrit = strKrit & " And Web = " & Me!KKWeb
If Not IsNull(Me!KKSwimwear) Then strKrit = strKrit & " And Swimwear = " & Me!KKSwimwear
If Not IsNull(Me!KKHomewear) Then strKrit = strKrit & " And Homewear = " & Me!KKHomewear
If Not IsNull(Me!KKEigeneKollektion) Then strKrit = strKrit & " And EigeneKollektion = " & Me!KKEigeneKollektion
If Not IsNull(Me!KK16GG) Then strKrit = strKrit & " And 16GG = " & Me!KK16GG
If Not IsNull(Me!KK18GG) Then strKrit = strKrit & " And 18GG = " & Me!KK18GG

If Len(strKrit) > 0 Then
strKrit = Mid(strKrit, 12)
DoCmd.OpenReport "BerLieferanten", acPreview, , strKrit
End If
End Sub

Zusätzlich hab ich noch den Befehl deaktiviert der alle Kontrollkästchen im DialogLieferant beim öffnen auf false stellt. (Me!KKStricker = false)
Hab im Bericht bei Datensatzherkunft auf "Lieferantenstamm" gestellt (Name der Tabelle)

Wenn ich jetzt bei "DialogLieferant" etwas aktiviere bekomme ich immer alle Datensätze angezeigt.
Wenn ich nix aktiviere geht der Bericht nicht auf.
Hab ich ein Kontrollkästchen aktiviert und wieder deaktiviert zeigt es mir keine Datensätze im Bericht an
Hab ich ein Kontrollkästchen aktiviert und wieder deaktiviert und dazu ein zweites Kontrollkästchen aktiviert bekomme ich die Fehlermeldung: "Laufzeitfehler 2498 Sie haben für eines der Argumente einen Ausdruck eingegeben, der nicht den für das Argument erforderlichen Datentyp hat."

 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Auswahl anhand Kontrollkästchen
« Antwort #12 am: Mai 26, 2010, 17:29:25 »
Hallo,


"strKrit = Mid(strKrit, 12)"

wie kommst Du da auf 12?  Es muß 6 lauten...



"Wenn ich nix aktiviere geht der Bericht nicht auf."

so ist es auch vorgesehen. Wenn der Bericht immer aufgehen soll, dann verschiebe die Zeile "…Openreport" unter das "End If"



"Hab ich ein Kontrollkästchen aktiviert und wieder deaktiviert zeigt es mir keine Datensätze im Bericht an" 

Wenn das Kontrollkästchen nochmal angeklickt wird, bekommt es NULL verpasst.

Um alle KKs auf NULL zu setzen, kann eine Schalttfläche benutzt werden:


Sub btnKKReset_Click()
Dim Ctl as Control
For Each Ctl in Me.Controls
If ctl.Controltype = acCheckbox Then ctl=Null
Next
End Sub


Offline Kelte81

  • Newbie
  • Beiträge: 11
Re: Auswahl anhand Kontrollkästchen
« Antwort #13 am: Mai 26, 2010, 17:54:07 »
Tiefe Verneigung! Das Ding tut! Ich glaubs ja nicht!!! Tausend Dank!
Ey nur wegen der blöden 12. Ich kam auf den Spaß wegen 12 Sätzen... Wenn ich nachher noch weitere Kontrollkästchen einfüge wie verhalte ich mich da mit dieser Zahl? Keine Ahnung wofür die steht...

Nochmals vielen Dank!!!
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Auswahl anhand Kontrollkästchen
« Antwort #14 am: Mai 26, 2010, 18:05:21 »
Hallo,

hast Du was anderes erwartet??   ;) :D

Die 6 hat nichts mit der Anzahl der "Sätze" zu tun.


Der zusammengebaute Kriterien-String beginnt ja immer mit " AND .." , egal, welche KK-Kombination man wählt.

Und dieses  " AND " am Anfang muß weg, deshalb beginnt  die MID-Funktion erst ab dem 6. Zeichen, (dort steht das erste Zeichen eines Tabellenfeldnamens,)  den restlichen Text (an die selbe  Variable) zuzuweisen.


Siehe VBA-Hilfe zur MID-Funktion.