Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

checkbox Frage

Begonnen von silentwolf, Oktober 23, 2013, 19:24:30

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo mal wieder :)
Habe leider noch nichts passendes gefunden und würde deshalb Euch gerne um Rat bitten!
Ich habe ein HF mit verschiedenen txtFelder und einer Checkbox um einen Filter im Unterformular zu setzen.

Das ist mein Code um den Filter für eine TextBox Auswahl zu treffen.

Private Sub txtObjName_AfterUpdate()
    If Not IsNull(Me.txtObjName) Then
        Me.Filter = "[Obj_Name] LIKE '*" & Me.txtObjName & "*'"
        Me![frmKontaktObjekte].Form.Filter = Me.Filter
        Me![frmKontaktObjekte].Form.FilterOn = True
    End If
End Sub

Jetzt habe ich aber eine Checkbox mit dem Namen Atkiv (chxObjektAtiv) im HF
Wenn ich diese anklicke möchte ich gerne das mein Formular also frmKontaktObjekte mir nur die gecheckten Objekte anzeigt.

Ich bin mir sicher es ist ein einfacher code aber ich bekomme es leider nicht hin.

Würde mich freuen wenn mir jemand hier helfen könnte.

Mfg

Albert

bahasu

Hi Albert,

anbei ein Beispiel. Im Formular "_Formular1" gibt es eine Checkbox, die die Anzeige im UFO regelt.
Ist das, was Du brauchst?

Harald

[Anhang gelöscht durch Administrator]
Servus

silentwolf

Hallo Harald,

danke Dir herzlich für Deine mail ja genau das brauche ich!!
Muss es nur noch bei meinem code einbauen und zum laufen bekommen aber das hoffe ich werd ich zusammen bringen :)
Sonst melde ich mich wieder wenn ich darf :)

Schöne Grüße und Danke!!

Albert

silentwolf

Hallo nochmals!
Ja Harald hat mir schon einen guten Ansatz geliefert.
Nur leider bekomme ich immer noch Fehlermeldungen mit meinen Code.

Private Sub chkObjektAktiv_AfterUpdate()
    If Me.chkObjektAktiv Then
        Me!frmKontaktObjekte.Filter = "Obj_Aktiv = true"
        Me!frmKontaktObjekte.FilterOn = True
    Else
        Me!frmKontaktObjekte.Filter = ""
        Me!frmKontaktObjekte.FilterOn = False
    End If
End Sub

Laufzeitfehler 438 Objekt unterstützt die Methode nicht oder Objekt...
Leider bin ich hier überfragt welchen Verweis ich eventuell setzen muss oder ist sonst noch ein Fehler in meinem Code??

Wäre sehr dankbar wenn jemand eine Lösung wüsste.


Albert

cyorps

Hallo silentwolf,

der Fehler besagt, dass diese (vom Filter) angesprochene Eigenschaft bei diesem Objekt nicht vorhanden ist. Daher vermute ich, dass du für "Obj_Aktiv" eine falsche Eigenschaft ansprichst. Dabei könnte es sich beispielsweise um ein Textfeld "Obj_Aktiv" handeln, dass man mit dieser Eigenschaft nicht ansprechen kann.

Im Moment verstehe ich deinen Code so: Im UFO "frmKontaktObjekte" existiert ein Objekt wie z.B. ein Kontrollkästen oder Optionsfeld namens "Obj_Aktiv". Mit deinem Filter möchtest du nur Datensätze anzeigen lassen, bei dem das Objekt "Obj_Aktiv" den Wert "true", also "aktiviert", besitzt. Ist das richtig? Oder willst du (eigentlich) etwas anderes filtern?

Gruß
cyorps
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

silentwolf

Hallo Corps,
danke für Deine mail!
Ja genau ich möchte nur die Daten ansehen die mit einer Checkbox im Uformular angeklickt sind.
und das Obj_Aktiv ist eine Checkbox ..

Gruß

Albert

cyorps

Achso! Deine Checkbox ist im HFO und du möchtest ein Objekt im UFO "frmKontaktObjekte" filtern! Hast du es einmal mit Private Sub chkObjektAktiv_AfterUpdate()
   If Me.chkObjektAktiv Then
       Me!frmKontaktObjekte.Form.Filter = "Obj_Aktiv = true"
       Me!frmKontaktObjekte.Form.FilterOn = True
   Else
       Me!frmKontaktObjekte.Form.Filter = ""
       Me!frmKontaktObjekte.Form.FilterOn = False
   End If
End Sub

probiert?
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

silentwolf

Hallo,

ja mit diesem Code habe ich es probiert.
Also ich habe eine Checkbox im HF die mir das UF wo auch Checkboxen enthalten sind filtern soll.

:(


silentwolf

Hi hmm jetzt verstehe ich gar nichts mehr jetzt hat es funktioniert  ???
Hab den Code nochmal neu eingefügt und jetzt klappt es schon komisch.
Na ja bin froh :)

Vielen Dank!!
Aber jetzt hätte ich noch eine Frage.
Ich habe ja noch zwei weitere Textfelder die das Formular filtern.
Wie kann ich denn das ganze jetzt kombinieren.
Ein Textfeld filtert mir "s" alle Objekte die mit "S" beginnen und nun sollen nur aktive Objekte die mit "S" beginnen gefiltert werden.

Also hier der Code für ein Textfeld


Private Sub txtKonName_AfterUpdate()
    If Not IsNull(Me.txtKonName) Then
        Me.Filter = "[KontaktName] LIKE '*" & Me.txtKonName & "*'"
        Me![frmKontaktObjekte].Form.Filter = Me.Filter
        Me![frmKontaktObjekte].Form.FilterOn = True
    End If
End Sub

Private Sub txtObjName_AfterUpdate()
    If Not IsNull(Me.txtObjName) Then
        Me.Filter = "[Obj_Name] LIKE '*" & Me.txtObjName & "*'"
        Me![frmKontaktObjekte].Form.Filter = Me.Filter
        Me![frmKontaktObjekte].Form.FilterOn = True
    End If
End Sub

Wie könnte man denn nun alle drei Codes in einem einbauen??

Schöne Grüße
Albert

cyorps

ZitatHi hmm jetzt verstehe ich gar nichts mehr jetzt hat es funktioniert
Hast du denn schon einmal deinen Code, mit meinen korrigierten Code verglichen?

Du kannst die einzelnen Filter mit AND/OR ( Me.Filter = "Obj_Aktiv = true AND ...." ) verketten. Ich würde aber für eine bessere Übersichtlichkeit die einzelnen Filter in Variablen packen und dann die Variablen verketten.
- Peripherie: Win XP Prof; Office 2000
- VBA Copy&Paste; ansonsten Dummy

silentwolf

Ja ich hab den Code verglichen hatte frmKontaktObjekte in ["Klammern"] dachte aber das ich gestern auch schon den code ohne versucht hatte ... na ja jetzt geht es eh :)
Danke für Deine Meinung bezüglich in Variablen aber hier bin ich doch noch etwas unsicher wie das funktioniert.
Hättest Du hierfür eine Idee?

Dankeschön

Albert

bahasu

Hi Albert,

Zitat von: silentwolf am Oktober 24, 2013, 10:47:35
Wie könnte man denn nun alle drei Codes in einem einbauen??

Du hast eine private Sub, die Du bei den drei Selektionsfeldern im Ereignis ,,nach Änderung" aufrufst:

Call Daten_selektieren


Private Sub Daten_selektieren
Dim Bedingung as String

Bedingung = ""
if nz(Me.KombiFeld_1, "") > "" then Bedingung = " and [DeinName_1] ='" & Me.Kombifeld_1 & "'"
if nz(Me.Kombifeld_2, "") > "" then Bedingung = Bedingung & " AND [DeinName_2]='" & Me.Kombifeld_2 & "'"
if  CheckBox = true then Bedingung = Bedingung & ,, and DeineCheckbox = true"

Bedingung = mid (Bedingung, 6)

If Bedingung > "" then
  Me.Dein_Unterformular.Form.Filter = Bedingung
  Me.Dein_Unterformular.Form.Filteron = true
Else
  Me.Dein_Unterformular.Form.Filter = ""
  Me.Dein_Unterformular.Form.Filteron = false
End if

End sub


Harald
Servus

silentwolf

Hallo Harald,

danke für Deine mail!!
Ich hab nun mal meinen Code angepasst aber ich verstehe leider es nicht ganz wie Du es mir beschrieben hast.
Private Sub Daten_selektieren()
Dim Bedingung As String

Bedingung = ""
If Nz(Me.txtObjName, "") > "" Then Bedingung = " and [Obj_Name] ='" & Me.txtObjName & "'"
If Nz(Me.txtKonName, "") > "" Then Bedingung = Bedingung & " AND [KontaktName]='" & Me.txtKonName & "'"
If chkObjektAktiv = True Then Bedingung = Bedingung & " And chkObjektAktiv = true""

Bedingung = Mid(Bedingung, 6)

If Bedingung > "" Then
  Me.frmKontaktObjekte.Form.Filter = Bedingung
  Me.frmKontaktObjekte.Form.FilterOn = True
Else
  Me.frmKontaktObjekte.Form.Filter = ""
  Me.frmKontaktObjekte.Form.FilterOn = False
End If

End Sub


In meinen Code habe ich TextBoxen und keine Comboboxen und deshalb bin ich mir nicht sicher ob der Code so stimmt.
Zusätzlich hab ich es noch nicht ganz verstanden wo nun der Code hinterlegt werden muss oder soll?
Nun brauche ich ja nur noch diesen einen Code oder?

Ich habe nun im jeden von den Textfeldern den Code von oben hinterlegt und auch in der Checkbox...
Das führt aber auch zu einen Fehler es fragt mich nach einer Parametereingabe für Wahr...


Dankeschön

Albert

bahasu

Hi Albert,

Zitat von: silentwolf am Oktober 24, 2013, 14:14:41
In meinen Code habe ich TextBoxen und keine Comboboxen und deshalb bin ich mir nicht sicher ob der Code so stimmt.
ist ok.

Zitat
Zusätzlich hab ich es noch nicht ganz verstanden wo nun der Code hinterlegt werden muss oder soll?
Nun brauche ich ja nur noch diesen einen Code oder?


Der Code von der Sub ist einmal zu hinterlegen.
Da war noch ein " zuviel:


Private Sub Daten_selektieren()
Dim Bedingung As String

Bedingung = ""
If Nz(Me.txtObjName, "") > "" Then Bedingung = " and [Obj_Name] ='" & Me.txtObjName & "'"
If Nz(Me.txtKonName, "") > "" Then Bedingung = Bedingung & " AND [KontaktName]='" & Me.txtKonName & "'"
If chkObjektAktiv = True Then Bedingung = Bedingung & " And chkObjektAktiv = true"  ' hier war " zuviel

Bedingung = Mid(Bedingung, 6)

If Bedingung > "" Then
  Me.frmKontaktObjekte.Form.Filter = Bedingung
  Me.frmKontaktObjekte.Form.FilterOn = True
Else
  Me.frmKontaktObjekte.Form.Filter = ""
  Me.frmKontaktObjekte.Form.FilterOn = False
End If

End Sub


Bei den drei Feldern für Deine Datenauswahl gibt es die Eigenschaft "Nach Änderung".
Dort trägst Du als VBA Zeile ein:
call Daten_selektieren.

Harald
Servus

silentwolf

Hi Harald,

vielen Dank nochmals!
Irgendwie bekomme ich es leider nicht hin :(
Ich sehen nur entweder bei Änderung oder Nach Aktualisierung.
Bei beiden Ereignissen habe ich dann z.B.

Private Sub txtObjName_AfterUpdate()
    Call Daten_selektieren
End Sub

Ein Sub wie Du es mir beschrieben hast habe ich auch.
Nur es filtert mir leider nicht das richtige...

Irgendwie ist noch der Hund drin begraben grr

Danke

Albert