Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Access 2007] Filtrowanie za pomocą pola kombi
SQ7RJH
post 14.03.2013, 10:16:34
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2013

Ostrzeżenie: (0%)
-----


Dzień dobry.

Mam taki mały problem z procedurą do pola kombi.
W bazie mam formularz powiedzmy o nazwie "fw_X'. W tym formularzu wyświetla się w polu 'szczegóły' pod formularz stworzony na podstawie kwerendy "kw_dzialki". W nagłówku znajduje sie pole kombi o nazwie "Kombi4'.
Mam prośbę o jakąś przykładową procedurę która pozwoli filtrować ten pod formularz za pomocą listy pola kombi.
Ponieważ dopiero zaczynam prosił bym o cierpliwość i w miarę "łopatologiczne" omówienie co do czego służy.
Go to the top of the page
+Quote Post
mar1aczi
post 14.03.2013, 11:25:50
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Wykorzystaj zdarzenie "Po aktualizacji" dla combobox'a - ustawi filtr dla podformy z danymi.
Kod
Me.Filter = "[Fieldname] = " & Me.comboname
DoCmd.RunCommand acCmdApplyFilterSort

Coś podobnego tutaj

Ten post edytował mar1aczi 14.03.2013, 11:26:58


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
SQ7RJH
post 14.03.2013, 11:43:00
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2013

Ostrzeżenie: (0%)
-----


Czyli powinno to wyglądać tak:
Kod
Private Sub Kombi4_AfterUpdate()
     ' Find the record that matches the control.
    Dim rs As Object

    Set rs = Me.Recordset.Clone ( tu jest błąd)
    rs.FindFirst "[KW_DANE_DO_WYJAZDU_DZIAŁKI podformularz3] = " & Str(Nz(Me![Kombi4], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub


Ale chyba nie będzie to poprawne ponieważ wyskakuje mi błąd:

Cytat
Run-time error '91':
Object variable or With block variable not set.


albo takiego:
Kod
Private Sub Kombi4_AfterUpdate()
     Me.Filter = "[KW_DANE_DO_WYJAZDU_DZIAŁKI podformularz3] = " & Me.Kombi4
DoCmd.RunCommand acCmdApplyFilterSort
End Sub


Ten post edytował SQ7RJH 14.03.2013, 11:51:38
Go to the top of the page
+Quote Post
mar1aczi
post 14.03.2013, 13:06:39
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Zamiast "Me" powinieneś użyć nazwy podformularza. Jak to nie problem to wystaw do pobrania "projekt".


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
SQ7RJH
post 14.03.2013, 15:04:46
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2013

Ostrzeżenie: (0%)
-----


... ok, ale w którym miejscu kodu?
Go to the top of the page
+Quote Post
mar1aczi
post 14.03.2013, 15:14:13
Post #6





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


W tej linii
Kod
Me.Filter = "[KW_DANE_DO_WYJAZDU_DZIAŁKI podformularz3] = " & Me.Kombi4

"Me.Filter" to ma być odwołanie do podformularza, bo jego zamierzasz przefiltrować, a "Me.Kombi4" ma odwoływać się do pola kombi na formularzu.

Dodane:
Proszę: http://www.access-programmers.co.uk/forums...amp;postcount=9

Ten post edytował mar1aczi 14.03.2013, 15:37:37


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
SQ7RJH
post 15.03.2013, 09:20:33
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2013

Ostrzeżenie: (0%)
-----


Skorzystałem z tego przykładu który kolega wstawił. I po wstawieniu nazw swoich do kodu wyszło mi coś takiego:
Kod
Private Sub Kombi4_AfterUpdate()
    Call RunFilter
End Sub
Private Sub kwDzialkiSubForrm_Load()
Call RunFilter
End Sub
Private Sub RunFilter()

    Dim strFilter       As String
    Dim bFilter         As Boolean

bFilter = False
strFilter = ""
    

If Nz(Me.Kombi4, "<All>") > "<All>" Then   'ShortCode'
    If Len(Nz(strFilter)) > 0 Then strFilter = strFilter & " And "
    strFilter = strFilter & "ShortCode = '" & Me.Kombi4 & "'"
    bFilter = True
    End If
If bFilter Then
    Me.kwDzialkiSubForm.Form.OrderBy = ""
    Me.kwDzialkiSubForm.Form.Filter = strFilter
    Me.kwDzialkiSubForm.Form.FilterOn = True
    Else
    Me.kwDzialkiSubForm.Form.FilterOn = False
    End If



End Sub


Problem polega na tym, że w zasadzie instrukcja nic nie zmienia w wybranym pod formularzu „kwDzialkiSubForm” (pole kombi ma nazwę „Kombi4”) może coś pominąłem? sciana.gif


ps. co zauwarzyłem w przykładzie (notabene działającym) a czego u mnie nie ma, to że ja stworzyłem podformularz z kwerendy za pomocą Formantu : "Podformularz/Raport", a w przykładzie jest osobny formularz z tabelką. Czy to może mieć znaczenie questionmark.gif

Ten post edytował SQ7RJH 15.03.2013, 12:15:42
Go to the top of the page
+Quote Post
mar1aczi
post 15.03.2013, 12:44:45
Post #8





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Jeśli nie zmienia zawartości podformularza, to coś nie tak - jak piszesz.
Jaka wersja Accessa? Mając źródła jest gdzie spojrzeć.

Ten post edytował mar1aczi 15.03.2013, 12:44:58


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
bubaguba
post 1.08.2013, 13:02:48
Post #9





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 1.08.2013

Ostrzeżenie: (0%)
-----


Dla potomnych
Private Sub kwDzialkiSubForrm_Load()
w pozostałych jest błąd samo "r" lub odwrotnie sprawdzałem kod z powyżej podanej strony działa prawidłowo.

Ten post edytował bubaguba 1.08.2013, 13:04:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 07:45