Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[Access 2010] Operacje na Recordset, uaktualnienie tabeli

Idź do strony Poprzedni  1, 2, 3, 4, 5  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Bazy danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Wto Lut 10, 2015 6:44 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Niestety ten kawałek kodu nie działa mimo próby z If Not (.BOF And .EOF) ...... :/
_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Pią Lut 13, 2015 7:06 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Witam, temat może nie ten, ale dotyczy tego samego projektu. Problem następujący, bo już zgłupiałem:
1. Jak w polu cboFDzial ustawić na stałe wartość "(wszystkie)"? Czy tylko za pomocą wartości domyślnej?
2. Jak za pomoca tego pola przefiltrować PF_Ewidencja_Summary, tak, aby źródło rekordów podformularza wskazywało tylko te rekordy, dla których "(Material_Dzial=" & Me.cboFDzial & ")", a w przypadku gdy wartość pola cboFDzial = "(wszystkie)", wskazywało wszystkie rekordy?
Pozdrawiam i z góry dziękuję za pomoc.



HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  82.92 KB
 Pobierano:  26 raz(y)


_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7901

PostWysłany: Pią Lut 13, 2015 8:42 pm      Temat postu: Odpowiedz z cytatem Pisownia

Nie napiszę, że tak powiem kodu, bo musisz sam.
Ale...
Cytat:
Me.Filter = ""
Cytat:
Me.Filter = strSQL
A może słoneczko moje ;-)) chcesz jednak filtrować nie formularz F_Ewidencja_Material_Summary (Me), ale podformularz PF_Ewidencja_Summary (Form zresztą...).
Więc…
Nawiasem mówiąc with statement się kłania…
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Pon Lut 23, 2015 5:53 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Ależ oczywiście :) Jakby ktoś się jeszcze kiedyś męczył, to u mnie działa. Dzięki :)
Kod:
Private Sub cboFDzial_AfterUpdate()
    Dim strSQL              As String

        If Me.cboFDzial = "(wszystkie)" Then
            strSQL = ""
        Else
            strSQL = "(Material_Dzial=" & Me.cboFDzial & ")"
        End If

        If strSQL = "" Then
            With Me
                With .PF_Ewidencja_Summary.Form
                    .Filter = ""
                    If .FilterOn = True Then .FilterOn = False
                End With
            End With
        Else
            With Me
                With .PF_Ewidencja_Summary.Form
                    .Filter = strSQL
                    If .FilterOn = False Then .FilterOn = True
                End With
            End With
        End If
        msgbox ";)"
End Sub


_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Czw Lut 26, 2015 3:01 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Hej, może ktoś z nudów ;) znajdzie błąd w cboMRodzaj_AfterUpdate(), bo
Cytat:
Zapamiętuj wartość na przykład we właściwości Tag tej kontrolki na zakończenie procedury zdarzenia AfterUpdate, a sprawdzaj na początku...
coś "nagle" przestało działać, gdy w zakładce: "Ewidencja materiałowa" w polu "Rodzaj" wybieram "Przychód". Powinny w tym przypadku pojawiać się niewidoczne pola podformularza. Tego problemu nie ma w przypadku "Rozchód", a także w zakładce "Ewidencja użytkowników", a przecież kod jest taki sam. I jeszcze jedno: czy błąd 2467, który pojawia się w trakcie zmiany widoku formularza na widok projektu, będzie miał znaczenie dla działania pliku? Błąd związany jest z
Kod:
Me.PF_Ewidencja_Summary.Form.Requery
w Sub SetResetSummary().
Pozdrawiam.
....................................
ehhhh... znalazłem, w Metce był na stałe wpis "Przychod"... Za to jeśli można, to jak ominąć błąd i jeszcze jedna dziwna sprawa. Po wciśnięciu btn np.: cmdDodajD, pojawia się dziwny "kwadracik" na formularzu. Skąd się takie cuda biorą? Jak wcisnę inny btn na karcie, to znika :)
Pozdrawiam.



Kwadracik.jpg
 Opis:

Pobierz
 Nazwa pliku:  Kwadracik.jpg
 Wielkość pliku:  76.46 KB
 Pobierano:  47 raz(y)


HQH_Test_Ewidencja.7z
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.7z
 Wielkość pliku:  89.83 KB
 Pobierano:  49 raz(y)


_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7901

PostWysłany: Pią Lut 27, 2015 5:14 pm      Temat postu: Odpowiedz z cytatem Pisownia

W SetResetSummary jest linijka kodu:
Cytat:
Me.PF_Ewidencja_Summary.Form.Requery
Jednocześnie SetResetSummary jest wołane w procedurze zdarzenia Form_Close,
a po co wówczas to Requery????? Sensu nie rozumiem????
--------------------------------------------
W klasie formularza PF_Ewidencja_Summary jest taki kod:
Cytat:
Private Sub Form_Open(Cancel As Integer)
If Not CurrentProject.AllForms("F_Ewidencja_Material_Summary").IsLoaded Then
MsgBox "Podformularz: <" & Me.Name & ">" & vbCrLf & _
"wyświetlany tylko z formularzem:" & vbCrLf & _
"<F_Ewidencja_Material_Summary>", vbCritical, "Uwaga"
Cancel = True
Exit Sub
End If
End Sub

A skutek tego jest taki, że jeśli mam otwarty formularz F_Ewidencja_Material_Summary,
to spokojnie w innym okienku mogę otworzyć formularz PF_Ewidencja_Summary.
Sprawdź Parent PF_Ewidencja_Summary w powyższym zdarzeniu, a nie IsLoaded

Jeśli chodzi o kwadracik, to w Twoim załączniku pomogła mi zmiana na opcję zaznaczoną na obrazku na czerwono i następnie zmiana obrazka w Commandbutton
Access 2010: Dotted line appearing in form footer after command button click



opcja.png
 Opis:

Pobierz
 Nazwa pliku:  opcja.png
 Wielkość pliku:  35.43 KB
 Pobierano:  48 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Wto Mar 10, 2015 2:40 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Witam,
nie wiem jak to
Cytat:
Parent
działa, ale grunt że działa :)
Problem jak w pierwszym poście, ale dotyczy innej tabeli (T_Ewidencja_Uzytkownik) oraz przekazywania (edycji i dodania do tabeli) rekordów, przy użyciu dwóch parametrów (ID_Material zaznaczonego w podformularzu i cboUzytkownik w formularzu). O ile dla zakładki "Ewidencja materiałowa" udało się to zrobić za pomocą kwerend i działa bardzo dobrze, o tyle w zakładce "Ewidencja użytkowników" nie wiem jak utworzyć takie kwerendy i po kilku dniach męki już skończyły mi się pomysły.
Generalnie chodzi o to, aby rekordy, które po zaznaczeniu w podformularzu i wyszczególnione w K_Statystyki_UzytkownikAdd były po kolei sprawdzone w tabeli T_Ewidencja_Uzytkownik. I dalej: jeżeli rekord zostanie odnaleziony, to musi zostać zedytowany (zmiana przychodu, sumy , stanu itd), a jeżeli nie zostanie znaleziony, to musi być dodany (przychód, suma, stan itd), a wszystko dla warunku:
Cytat:

"[Ew_U_Material]= " & [Form_PF_Ewidencja_Summary].[ID_Material] & " And [Ew_U_Uzytkownik]=" & Me.cboUzytkownik

Temat niby prosty, ale ni cholerki nie mogę sobie poradzić, więc pliiiz o pomoc albo może jakiś przykład, który przeoczyłem. Z góry mocno dziękuję.



HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  112.89 KB
 Pobierano:  58 raz(y)


_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7901

PostWysłany: Czw Mar 12, 2015 8:25 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
rst.Filter = "[Ew_U_Material]= " & [Form_PF_Ewidencja_Summary].[ID_Material] & " And [Ew_U_Uzytkownik]=" & Me.cboUzytkownik
Form_PF_Ewidencja_Summary jest nazwą klasy formularza, a nie formularza!
Nawiasem mówiąc nie każdy formularz ma klasę i wówczas użycie Form_PF_Ewidencja_Summary powoduje błąd.
Pisałam o tym na forum.
Czy Me.PF_Ewidencja_Summary.Form.[ID_Material] nie wystarczy?
Cytat:
db.Execute "UPDATE [TSL_Material] SET Material_Ewidencja = False WHERE Material_Ewidencja = True;", dbFailOnError
db.Execute "UPDATE [TSL_Material] SET Material_PR = Null;", dbFailOnError
powinno być w obrębie transakcji!
Po co poniższe ????
Cytat:
db.Close

Kod:
        With Me.PF_Ewidencja_Summary
            .SetFocus
            .Form.txtPR.SetFocus ' xxxxx
        End With
Skutkuje błędem gdy txtPR ma Visible na false i spokojnie ten błąd wywołuję.
Na przykład po co taka rozpusta ;-))

Cytat:
Set rst = db.OpenRecordset("SELECT * FROM T_Ewidencja_Uzytkownik", dbOpenDynaset)
A niżej edytujesz tylko pole:
Cytat:
rstFiltered.Fields("Ew_U_Dokument_Podstawa").Value = "zmiana"
Nie sprawdzałam w ilu miejscach… tak jest, że Recordset zawiera zbędne pola.
chociaż zupełnie nie wiem po co Filter otwórz Recordset z warunkami jak w filtrze.
P.S.
Grzesiu zrób coś wreszcie z tą edycją daty bo mnie sz... trafi przy jej edycji.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



Dołączył: 31 Paź 2012
Posty: 176

PostWysłany: Czw Mar 19, 2015 12:01 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Witam, wydawałoby się, że to proste, ale takim nie jest :/
Cytat:
Czy Me.PF_Ewidencja_Summary.Form.[ID_Material] nie wystarczy
oczywiście wystarczy, ale mnie zbił nieco z tropu błąd, który sam wygenerowałem w strSQL:
Kod:
"[Forms].[F_Ewidencja_Material_Summary].[cboUzytkownik] AS [pEw_u_Uzytkownik] " & _
, bo chciałem utworzyć kwerendę taką jak "K_Statystyki_UzytkownikAdd_pEW_U_Uzytkownik". Niestety, bez powodzenia. Przy okazji: czy można pobrać do takiego kodu wartość z pola niezwiązanego? Jeżeli chodzi o transakcje, bo nie za bardzo rozumiem, to chodzi o to by moje urocze "db.Execute "UPDATE..." znajdowało się w kodzie "Sub CheckUzytkownikSummary" i była możliwość jego anulowania (http://www.coderscity.pl/sutra209477.html + link do msdn)?. Moim celem jest tylko wyczyszczenie dwóch pól w tabeli "TSL_Material" po aktualizacji rekordów w dwóch innych tabelach i odbywa się na samym końcu tej operacji, która nota bene jeszcze się nie odbyła, bo ciagle mam problem z napisaniem kodu :] Jeśli chodzi o "db.Close", to myślałem, że "Set db = CurrentDb()" jest równoznaczne z "OpenDatabase", no ale przecież skoro w tym przypadku nie otwieram określonej bazy, tylko pracuję na bieżącej, to nie muszę zamykać :)
Cytat:
.Form.txtPR.SetFocus ' xxxxx
, ten błąd to nie rozpusta, tylko wynik:
Kod:
'If CheckPoleUzytkownikSummary() = False Then Exit Sub
, żebyś właśnie nie musiała się denerwować tą datą :) Chciałem dobrze... wyszło jak zawsze. Oczywiście data już zmieniona :) Dlatego też, edytowałem jedno pole, żeby nie trzeba było uzupełniać pozostałych. W tabeli "T_Ewidencja_Uzytkownik" powinny być uzupełnione prawie wszystkie pola w zależności od tego, co znajduje się w "K_Statystyki_UzytkownikAdd", wg zasady:
Kod:
            With rstTbl
                .AddNew
                    lSuma = 0
                    lPR = .Fields("Material_PR").Value
                    lStan = lSuma + lPR
                    .Fields("Ew_U_Material").Value = .Fields("Material_Nazwa").Value
                    .Fields("Ew_U_Uzytkownik").Value = Me.cboUzytkownik
                    .Fields("Ew_U_Suma").Value = lSuma
                    .Fields("Ew_U_Przychod").Value = lPR
                    .Fields("Ew_U_Rozchod").Value = 0
                    .Fields("Ew_U_Stan").Value = lStan
                    .Fields("Ew_U_Dokument_Podstawa").Value = Me.txtUDokument_Podstawa.Value
                    .Fields("Ew_U_Dokument_Numer").Value = Me.txtUDokument_Numer.Value
                    .Fields("Ew_U_Dokument_Data").Value = Me.txtUDokument_Data.Value
                .Update
                .Close
            End With

i
Kod:
            With rstTbl
                .Edit
                    lSuma = .Fields("Ew_U_Stan").Value
                    lPR = .Fields("Material_PR").Value
                    lStan = lSuma + lPR
                    .Fields("Ew_U_Suma").Value = .Fields("Ew_U_Stan").Value
                    .Fields("Ew_U_Przychod").Value = lPR
                    .Fields("Ew_U_Rozchod").Value = 0
                    .Fields("Ew_U_Stan").Value = lStan
                    .Fields("Ew_U_Dokument_Podstawa").Value = Me.txtUDokument_Podstawa.Value
                    .Fields("Ew_U_Dokument_Numer").Value = Me.txtUDokument_Numer.Value
                    .Fields("Ew_U_Dokument_Data").Value = Me.txtUDokument_Data.Value
                .Update
                .Close
            End With


Próbowałem to zrobić na nowo, ale lipa, bo w ostatnim pliku tak naciukałem kodu, że już sam nie wiem co, gdzie i z czym jest sprawdzane. I mimo, że wiem, iż:
Cytat:
Babunia moja mnie uczyła, a była to mądra kobieta, że facetowi można pomóc, ale absolutnie nie można i nie należy robić za Niego wszystkiego ;-)
to pliiz o pomoc z tym kodem lub może jakieś betonowe koło ratunkowe dla zdolnych inaczej z przykładem na znalezienie/porównanie rekordów w dwóch obiektach wg warunku, bo już tyle to rzeźbię, że prawie osiwiałem :/


HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  110.22 KB
 Pobierano:  52 raz(y)


_________________
=8-T
Grzegorz Z.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7901

PostWysłany: Sob Mar 21, 2015 9:31 am      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
lipa, bo w ostatnim pliku tak naciukałem kodu, że już sam nie wiem co, gdzie i z czym jest sprawdzane
Ja tym bardziej nie wiem… obawiam się musisz to sam uporządkować... schemat blokowy...
Ale
Cytat:
Oczywiście data już zmieniona :)
Tak?
A widzę jak na obrazku data_error.png, zresztą sprawdzanie daty < czy > wobec takiej wartości????
Nie wspomnę o błędzie… bo pole Ew_M_Dokument_Data jest typu data godzina…

Cytat:
strKryteriumUzytkownik = _
rstTbl!Ew_U_Material = rstQry!Material_Nazwa And rstTbl!Ew_U_Uzytkownik = " & Me.cboUzytkownik"
Wynik tego jest jak na obrazku findfirst_false.png ?????????????

Proszę doczytać o FindFirst, bo potem ten wynik jest w Criteria
rstTbl.FindFirst strKryteriumUzytkownik

Cytat:
Criteria
String
A String used to locate the record. It is like the WHERE clause in an SQL statement, but without the word WHERE
Przykłady FindFirst + Criteria są na forum.
Sorry... ale trudno jest sprawdzać "większe" gdy przeszkadzają w tym błędy pozornie "mniejsze mniej ważne"...
P.S.
Wykonanie w kodzie kwerendy takiej jak K_Statystyki_UzytkownikAdd_pEW_U_Uzytkownik "z Forms" opisałam dziś w temacie:
http://www.coderscity.pl/ftopic53025.html
patrz: Eval



findfirst_false.png
 Opis:

Pobierz
 Nazwa pliku:  findfirst_false.png
 Wielkość pliku:  43.22 KB
 Pobierano:  29 raz(y)


data_error.png
 Opis:

Pobierz
 Nazwa pliku:  data_error.png
 Wielkość pliku:  11.66 KB
 Pobierano:  30 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Bazy danych Wszystkie czasy w strefie CET (Europa)
Idź do strony Poprzedni  1, 2, 3, 4, 5  Następny
Strona 2 z 5

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.18409 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |