Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular erstellt (soll filtern und in Listfeld ausgeben) wie realisieren?

Begonnen von Andimau, Februar 07, 2011, 10:28:34

⏪ vorheriges - nächstes ⏩

Andimau

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]

database

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
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

Andimau

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 !

database

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

Andimau

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

DF6GL

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


??

database

Hallo,

...und warum nimmst du das KeyPress - Ereignis?
nimm besser Kontrollkästchen90_Click ...  und benenn das Ding um bitte, z.B. 'chkNeueMaschinen'  ;)

Andimau

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 ?

DF6GL

Hallo,


welchen Datentyp hat "Zustand"  in der Tabelle?

Wird dort ein Nachschlagefeld verwendet?

Wenn ja, wie heißt der SQl-String des Nachschlagefeldes?

Andimau

hallo

das ist ein Kombinationsfeld  --> Wertliste --> "gebraucht";"neu"

DF6GL

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

Andimau

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.


DF6GL

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"

Andimau

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

DF6GL

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.