Hallo,
habe zwei Probleme:
1) bei rechts dem Filter setzen sollte er mir nur die Datensäte im unteren Listfeld anzeigen welche gefiltert werden. Muss ich hier eine Beziehung erstellen, oder wie würde man hier vorgehen.
2) Die Datensätze werden zwar unten schön angezeigt, jedoch wenn ich einen direkt anklicken möchte (zum Bearbeiten) wird dieser nicht auferufen bzw. muss ich immer mit dem Vorwärts oder Rückwärtspfeil den Datensatz auswählen.
Hat jemand einen Tip?
Ich bedanke mich herzlich im voraus für eine kleine Hilfestellung.
[Anhang gelöscht durch Administrator]
Hallo,
zu 1
Die Datenherkunft sdes Listenfeldes musss sich bei Auwahl eines Filterkriteriums ändern.
Das KANNST du unter Anderem erreichen mit:
Me!DeinListenfeld.RowSource = " SELECT * FROM DeineTabelle WHERE ...."
Me!DeinListenfeld.Requery
Wobei die WHERE-Klausel immer entsprechend deiner Filterauswahl umgestaltet werden MUSS.
zu 2
Wenn du das Listenfeld so einstellast, dass die ID-Spalte die gebundene Spalte ist, kannst du folgenden Code (anpassen) verwenden um die Auwahl im Formular darzustellen:
Nach donkarl.com ... http://www.donkarl.com?FAQ4.4 (http://www.donkarl.com?FAQ4.4)
z.B. ins Doppelklick-Ereignis des Listenfeldes....
Dim rs As DAO.Recordset
Dim suchID as Long
Set rs = Me.RecordsetClone
suchID = Me!DeinListenfeld
rs.FindFirst "ID= " & suchID
If Not rs.NoMatch Then
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
HTH
Hi !
Vielen Dank für deine super Hilfe!.
zu 1) Soll ich diesen Filter in der Gültigsregel im Listfeld eingeben? Steh jetzt hier bisschen am Schlauch..
zu 2) geschafft - funktioniert ! Danke !
Hallo,
ZitatSoll ich diesen Filter in der Gültigsregel im Listfeld eingeben ...
Nein, das hat nichts mit einer Gültigkeitsregel zu tun.
Ins Ereignis beim Klicken der einzelnen Filter-Checkboxen ...
z.B. 'Neue Maschinen'
Private Sub CheckboxName_Click()
If Me!ChekboxName = -1 Then
Me!DeinListenfeld.RowSource = "SELECT * FROM DeineTabelle WHERE zustand='neu'"
Me!DeinListenfeld.Requery
End If
End Sub
Analog dazu dann auch bei den anderen Checkboxen verfahren
HTH
Ich habe ein Kopie der Datei gemacht, da ich sicherheitshalber mit dieser weitarbeite. Jedoch filtert er mir nicht, bzw. kommt auch keine Fehlermeldung
FROM Kopie von Verwaltung11 von db1
Sind Leerzeichen unzulässig weil es wie gesagt nicht funktioniert?
Private Sub Kontrollkästchen90_KeyPress(KeyAscii As Integer)
Dim strSQL As String
If Me!Kontrollkästchen90 = -1 Then
strSQL = "SELECT * FROM Kopie von Verwaltung von db1 WHERE Zustand='neu'"
Me!Liste56.RowSource = strSQL
Me!Liste56.Requery
End If
End Sub
Hallo,
vermeide Leer- und Sonderzeichen in Namen...
strSQL = "SELECT * FROM [Kopie von Verwaltung von db1] WHERE Zustand='neu'"
Heißt die Tabelle in der Db wirklich jetzt
Kopie von Verwaltung von db1
??
Hallo,
...und warum nimmst du das KeyPress - Ereignis?
nimm besser Kontrollkästchen90_Click ... und benenn das Ding um bitte, z.B. 'chkNeueMaschinen' ;)
Hallo nochmal.
habe jetzt geändert in:
Private Sub Gebraucht_Click(KeyAscii As Integer)
Dim strSQL As String
If Me!Kontrollkästchen94 = -1 Then
strSQL = "SELECT * FROM [verwaltung] WHERE Zustand='gebraucht'"
Me!Liste56.RowSource = strSQL
Me!Liste56.Requery
End If
End Sub
Das Problem ist jedoch er filtert nicht. (eine Fehlermeldung erscheint auch nicht)
Ich möchte noch dazusagen, Die Filter-Checkboxen existieren in keiner Tabelle, etc.. (wurden einfach ins Formular eingefügt)
Aber das ist denk ich ja nicht ausschlaggend, da ich ja mit den Checkboxen eine Abfrage starte..
Weiss jemand warum er mir nicht filtert ?
Hallo,
welchen Datentyp hat "Zustand" in der Tabelle?
Wird dort ein Nachschlagefeld verwendet?
Wenn ja, wie heißt der SQl-String des Nachschlagefeldes?
hallo
das ist ein Kombinationsfeld --> Wertliste --> "gebraucht";"neu"
Hallo,
nach dem Anschauen des Formulares vermute ich eh einen solchen Code für die Filterung des Listenfeldes:
Sub Filtern_Afterupdate()
Select case Me!Filtern
Case 1: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Neu'"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='gebraucht"
Case 3: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE SW <> 0"
Case 4: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Farbig <> 0"
Case Else
End Select
End Sub
strSQL
hi,
habe die Case Funktion direkt wie angegeben ins Listfeld eingebaut. Leider funktioniert es noch nicht. Oder muss ich dies wo anders einbauen?
Danke nochmals kurz für Eure Hilfe.
Hallo,
was heißt "direkt wie angegeben ins Listfeld eingebaut" ?
Lt. Formular-Bild hast Du eine Optionsgruppe ("filtern"), die es erlaubt, jeweils ein Kontrollkästchen anzuklicken. Der gepostete Code ist die Ereignisprozedur des Optionsgruppen -Ereignisses "Nach Aktualisierung"
habe nun den Code dem Filteroptionen nach Aktulisierung hinzugefügt.
wenn ich Jetzt z.b eine Filterbox (gebraucht) anklicke erscheinen keine Datensätze. Auch wenn ich dann Neue Maschinen auswähle erscheinen keine.
Es kommmt ein Fehler (in der fett makierten Zeile)
Private Sub Liste56_DblClick(Cancel As Integer)
Dim rs As DAO.Recordset
Dim suchID As Long
Set rs = Me.RecordsetClone
suchID = Me!Liste56
rs.FindFirst "ID= " & suchID
If Not rs.NoMatch Then
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
End Sub
Hallo,
???
"den Code dem Filteroptionen nach Aktulisierung hinzugefügt."
nein , hast Du nicht... oder heißt die Optionsgruppe der Kontrollkästchen "Liste56"?
Selbst wenn die so hieße, dann ist der Code unsinnig/unpassend. Der Code filtert das Form nach dem doppelt angeklickten Eintrag im Listenfeld "Liste56"
Oder Deine Beschreibung ist irreführend.
Hy.
also mein Listfeld unten (wo die Daten ausgegeben werden heisst "Liste56",
Mein Filter (Checkboxen) heissen "Filter"
ich bin die ganze Zeit schon am rumbasteln, aber es will nicht wirklich funktionieren :'(
Hallo,
1) benenn erst den Namen der Gruppe um ("Filter" --> "optFilter")
2) ersetze in meinem Code "Filtern" durch "optFilter"
Hallo,
habe wie gesagt dies geändert. Jedoch wird wird mir kein einziger Datensatz mehr im Listefeld angezeigt..!
Hallo,
ich stochere im Nebel herum....
poste nochmal Deinen akt. verwendeten kompletten Code ...
Option Compare Database
Private Sub Befehl61_Click()
On Error GoTo Err_Befehl61_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Befehl61_Click:
Exit Sub
Err_Befehl61_Click:
MsgBox Err.Description
Resume Exit_Befehl61_Click
End Sub
Private Sub Befehl62_Click()
On Error GoTo Err_Befehl62_Click
DoCmd.GoToRecord , , acFirst
Exit_Befehl62_Click:
Exit Sub
Err_Befehl62_Click:
MsgBox Err.Description
Resume Exit_Befehl62_Click
End Sub
Private Sub Befehl63_Click()
On Error GoTo Err_Befehl63_Click
DoCmd.GoToRecord , , acNext
Exit_Befehl63_Click:
Exit Sub
Err_Befehl63_Click:
MsgBox Err.Description
Resume Exit_Befehl63_Click
End Sub
Private Sub Befehl64_Click()
On Error GoTo Err_Befehl64_Click
DoCmd.GoToRecord , , acPrevious
Exit_Befehl64_Click:
Exit Sub
Err_Befehl64_Click:
MsgBox Err.Description
Resume Exit_Befehl64_Click
End Sub
Private Sub Befehl65_Click()
On Error GoTo Err_Befehl65_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Exit_Befehl65_Click:
Exit Sub
Err_Befehl65_Click:
MsgBox Err.Description
Resume Exit_Befehl65_Click
End Sub
Private Sub Befehl66_Click()
On Error GoTo Err_Befehl66_Click
DoCmd.GoToRecord , , acNewRec
Exit_Befehl66_Click:
Exit Sub
Err_Befehl66_Click:
MsgBox Err.Description
Resume Exit_Befehl66_Click
End Sub
Private Sub Befehl75_Click()
On Error GoTo Err_Befehl75_Click
DoCmd.Close
Exit_Befehl75_Click:
Exit Sub
Err_Befehl75_Click:
MsgBox Err.Description
Resume Exit_Befehl75_Click
End Sub
Private Sub Gebraucht_Click()
If Me!Gebraucht = -1 Then
Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Gebraucht'"
Me!Liste56.Requery
End If
End Sub
Private Sub Liste56_DblClick(Cancel As Integer)
Dim rs As DAO.Recordset
Dim suchID As Long
Set rs = Me.RecordsetClone
suchID = Me!Liste56
rs.FindFirst "ID= " & suchID
If Not rs.NoMatch Then
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
End Sub
Private Sub Neu_Click()
If Me!neu = -1 Then
Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Neu'"
Me!Liste56.Requery
End If
End Sub
Sub optFilter_Afterupdate()
Select Case Me!optFilter
Case 1: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Neu'"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Gebraucht"
Case Else
End Select
End Sub
Hallo,
hier fehlt ein Hochkomma:
Case 2: Me!Liste56.RowSource = "SELECT * FROM [verwaltung] WHERE Zustand='Gebraucht'"
Sind die Optionsfelder wirklich Bestandteil der Optionsgruppe?
Warum gibt es die Subs
Private Sub Gebraucht_Click()
und
Private Sub Neu_Click()
?
Hallo,
@DF6GL
Wenn ich mir das eingefügte Bild im ersten Posting genau anschaue, sehe ich, dass die Checkboxen NICHT ausgerichtet untereinander stehen.
Das kann natürlich ein Zufall sein aber ... wie du schon (ich nehme an) befürchtest --->
ZitatSind die Optionsfelder wirklich Bestandteil der Optionsgruppe
glaube ich, dass das KEINE Optionsgruppe ist sondern eigenständige Checkboxen um die ein Rahmen gezeichnet wurde!
Private Sub Gebraucht_Click()
und
Private Sub Neu_Click()
....erhärten dann rapide diese 'Befürchtung'
Wenn dem so ist, ist jegliche Ausrichtung der Codes auf ein Optionsgruppe obsolet.
ZitatMein Filter (Checkboxen) heissen "Filter"
Ist, glaube ich, eine optische Täuschung - so heißt der Rahmen
Sub optFilter_Afterupdate()
Wir denn diese Sub jemals angesprungen? - Schon mal einen Haltepunkt darauf gesetzt?
Da dreht sich ja alles irgendwie im Kreis herum
hallo Leute,
- also ich habe eine Optionsgruppe erstellt (das ist gleich der Rahmen)
- in diese Optionsgruppe habe ich zwei Checkboxen erstellt.
Bin ich den hier richtig vorgegangen?
danke
Hallo,
Du bist richtig vorgegangen, wenn Du die Optionsfelder jeweils so auf/in den Rahmen gelegt hast, dass dieser dabei schwarz markiert wurde....
In den Eigenschaften der Optionfelder findest Du anschliessend die Eigenschaft "Optionswert", dessen Wert der Rahmen erhält, wenn das betreffenden Optionsfeld angeklickt wird. Dieser Wert wird im Select Case - Block überprüft.
Ich werde die Datei nun anhängen.
Viellicht könnte jemand das Problem lösen.
PS: Die Datensätze ich habe ich gelöscht (ausse einen)
Es geht wie gesagt um die Filter-Checkboxen..
Als Dank würde ich eine Geldspende entgegen sehen : -)
www.isarcolor.de/downloads/verwaltung.mdb
Hallo,
es muß einfach so heißen:
Sub optFilter_Afterupdate()
Select Case Me!optFilter
Case 1: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Neu'"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Gebraucht'"
Case Else
End Select
End Sub
Danke dir !
manchmal sieht man den Wald vor lauter Bäumen nicht! :- )
mfg
Andi
Hallo
nochmal ganz kurz: Wenn ich ein CASE3 hinzufüge, (ich habe hier CASE 3) ein Ja / Nein Feld (Kontrollkästchen)
Ist es so richtig wie ich es angegeben habe, weil er mir nicht filtert! (CASE3)
habe schon "true" probiert und "wahr". Funktioniert auch nicht"
danke!
Sub optFilter_Afterupdate()
Select Case Me!optFilter
Case 1: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Neu'"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Gebraucht'"
Case 3: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE VM1='Ja'"
Case Else
End Select
End Sub
Hallo
kommt drauf an, was du in der Tabelle stehen hast.
WHERE VM1='Ja'" ... eher nicht
Case 3: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE VM1=True"
oder
Case 3: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE VM1=-1"
True, False, Ja und Nein sind keine Texte, daher OHNE Hochkomma
Dank du hast mir sehr geholfen.
Jedoch habe ich noc ein Problem. Ich möchte datenfelder anzeigen lassen, wo noch kein Datum eingetragen ist
Case 5: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Stoerung_gemeldet_Am=False"
(Tabellefeld ist als Datum deklariert)
Hallo,
Case 5: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Stoerung_gemeldet_Am is Null"
Danke klappt!!
Nur zwei Probleme noch:
Möchte mit dem Button ID Zettel drucken Siehe screenshot unten links einen Bericht drucken der aktiv ist ( Checkbox)
weiss jemand wie ich den Bericht mit dem Button aufrufe.. ?
Und bei Filtern: Keine Wartung -> Hier sollte er mir nur die Maschinen filtern die oben mit "keine Wartung" (im Listfeld stehen filtern)
Er verlangt hier aber einen Wert, aber diesen Wert frag ich ja hier ab, bzw. klappt es nicht: (nur Case6 funktioniert nicht, die anderen fuktionieren perfekt!
Sub optFilter_Afterupdate()
Select Case Me!optFilter
Case 1: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Neu' and Eingelagert=False"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Gebraucht' and Eingelagert=False"
Case 3: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE VM1=False and Zustand='Gebraucht' and Eingelagert=False"
Case 4: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Wartung_abbauen=True and Eingelagert=True"
Case 5: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Stoerung_gemeldet_Am is Null"
Case 6: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Wartung_Kunde is Keine Wartung"
Case Else
End Select
End Sub
[Anhang gelöscht durch Administrator]
Hallo,
Sub btnIDZettelDrucken_Click()
Docmd.Openreport "EinBericht",acpreview,,"drucken <> 0"
End Sub
Case 6: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Wartung_Kunde = 'Keine Wartung'"
Hallo
also unter Berichte kann ich den Bericht aufrufen. Jedoch geht uns dem eigentlichen Formular nicht wirklich. Der Bericht wird zwar auch auferufen. jedoch ohne Daten ...
Das heisst, irgendwo muss der Wurm drin sein ;: )
Sub Befehl144_Click()
DoCmd.OpenReport "IDZettel", acPreview, , "drucken <> 0"
End Sub
PS: Habe erst eine Abfrage erstellt, wo er mit dir aktiven IDZettel filtert , darauf hab ich den Bericht erstellt...
Wie gesagt es klappt direkt aus Berichte - > bericht aufrufen und drucken aber nicht mit dem obigen Befehl :-\
Danke nochmals für deine HIlfe, hast du noch einen tip ?
LG
Andi
Hallo,
ich denke, wir reden bei verschiedenen Dingen aneinander vorbei...
Der Bericht braucht keine Abfrage, er kann direkt an die Tabelle gebunden sein (falls keine weiteren Kriterien im "Vorfeld" nötig sind)
Das Feld "drucken" muß in der Tabelle als Ja/Nein -Feld vorhanden sein.
Mit der Übergabe des Ausdrucks "drucken <> 0" an den Where-Condition-Parameter der Openreport-Methode werden in Bericht die DS gefiltert, bei denen "drucken" auf Wahr (nicht Falsch) steht.
Was heißt denn :
"die aktiven IDZettel filtert "
??
Was ist "aktiv"? sind das die, bei denen "drucken" auf Ja steht?
Mir ist gerade aufgefallen das unter Access 2010 mein Programm nicht mehr richtig läuft. Vor allem die Filter greifen nicht mehr.
Weiss hier jemand einen tip?
Fehlermeldung sende ich als Screenshot mit.
Vielen Danke!
mfg
Andi
[Anhang gelöscht durch Administrator]
Hallo,
diese Fehlermeldung besagt eigentlich nichts anderes, als dass der Code der Prozedur 'AfterUpdate' fehlerhaft ist.
Hmmm.... hast du vielleicht gar eine BeforeUpdate-Prozedur auf AfterUpdate umbenannt ?
Wie ich auf das komme? .... Die Deklaration einer Prozedur entspricht nicht der Beschreibung eines Ereignisses ..... ;)
Ein gern gemachter Fehler - man läßt Cancel As Integer danach zwichen den Klammern stehen ... sieh mal nach und wenn das so ist lösch das aus den Klammern raus.
HI
mmh, wie gesagt in Access 2003 funktioniert ja alles.
Das wichtigste Codemässig ist folgender:
Private Sub Neu_Click(KeyAscii As Integer)
Dim strSQL As String
If Me!Kontrollkästchen90 = -1 Then
strSQL = "SELECT * FROM [verwaltung] WHERE Zustand='neu'"
Me!Liste56.RowSource = strSQL
Me!Liste56.Requery
End If
End Sub
Private Sub Liste56_DblClick(Cancel As Integer)
Dim rs As DAO.Recordset
Dim suchID As Long
Set rs = Me.RecordsetClone
suchID = Me!Liste56
rs.FindFirst "ID= " & suchID
If Not rs.NoMatch Then
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
End Sub
Sub optFilter_AfterUpdate()
Select Case Me!optFilter
Case 1: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Neu' and Eingelagert=False and Wartung_Kunde = 'Isarcolor'"
Case 2: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Zustand='Gebraucht' and Eingelagert=False and Wartung_Kunde = 'Isarcolor'"
Case 3: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE VM1=False and Zustand='Gebraucht' and Wartung_Kunde = 'Isarcolor'"
Case 4: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Eingelagert=True"
Case 5: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Stoerung_gemeldet_Am is Null and Wartung_Kunde = 'Isarcolor'"
Case 6: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Wartung_Kunde = 'Keine Wartung' and Eingelagert=False"
Case 7: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1] WHERE Wartung_Kunde = 'Neuer Kunde'"
Case 8: Me!Liste56.RowSource = "SELECT * FROM [Tabelle1]"
Case Else
End Select
End Sub
PS: cancel as integer hab ich schon versucht zu löschen, dann geht es aber unter Acess 2003 nicht mehr.
danke für deine Hilfe!
mfg
Andi
Hallo,
hier ist von Hand manipuliert worden:
Private Sub Neu_Click(KeyAscii As Integer)
Die Click()-Prozedur hat kein Argument...