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 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: Sro Sty 28, 2015 12:29 am  OP    Temat postu: [Access 2010] Operacje na Recordset, uaktualnienie tabeli Odpowiedz z cytatem Pisownia

Witam,
bardzo proszę o pomoc w następujacym problemie:
1. W TSL_Material mam zebrane różne "materiały"
2. W T_Ewidencja_Material powinny być uaktualniane wszelkie zmiany w zakresie ewidencji tych materiałów
3. Za pomocą formularza PF_Ewidencja_Summary chciałbym zbiorczo dokonywać tych zmian dla zaznaczonych materiałów, ale mam problem z określeniem niezwiązanego pola "Stan" w formularzu (określenie ilości materiału, który juz znajduje się w tabeli T_Ewidencja_Material) oraz jak utworzyć kwerendę, która jednocześnie dołączy nowe rekordy lub zaktualizuje istniejące rekordy w tabeli T_Ewidencja_Material.
Z góry dziękuję za pomoc.



HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  32.07 KB
 Pobierano:  91 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: 7905

PostWysłany: Sro Sty 28, 2015 7:50 am      Temat postu: Odpowiedz z cytatem Pisownia

To jest formularz CIĄGŁY.
Więc na przykład jak na obrazku oraz NZ.



nz_zrodlo_formantu.png
 Opis:

Pobierz
 Nazwa pliku:  nz_zrodlo_formantu.png
 Wielkość pliku:  31.95 KB
 Pobierano:  151 raz(y)

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



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

PostWysłany: Pon Lut 02, 2015 2:07 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

No tak, miałem nadzieję, że zrobię to zmysłowo w kodzie :) Serdecznie dziękuję. Pole Stan potrzebne mi było do porównania z polem txtRozchod. A jeśli chodzi o dalszą część pytania, to pozwoliłem sobie bardziej szczegółowo opisać mój problem. Zamiarem jest "masowa" edycja ze zmianą i dodawanie rekordów za pomocą formularza (utworzonej kwerendy). Z góry dziękuję za pomoc.


HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  36.43 KB
 Pobierano:  66 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: 7905

PostWysłany: Pon Lut 02, 2015 6:50 pm      Temat postu: Odpowiedz z cytatem Pisownia

Powiedz mi dlaczego otwierasz Recordset z całą tabelą i potem FindFirst
Cytat:
"[Ew_M_Material] = " & Me.ID_Material
zamiast od razu tylko dla określonego Me.ID_Material ????
Tak czy tak…i tak nie ma gwarancji przy wielodostępie… na tym polu nie ma indeksu unikatowego…

W procedurze SetStatystyki dla tegoż ID_Material:
Cytat:
.Fields("Ew_M_Przychod").Value = Me.txtPrzychod.Value
potem:
Cytat:
.Fields("Ew_M_Przychod").Value = 0
?????

"Takich" też nie rozumiem:
Cytat:
With rstMaterial
.AddNew
.Fields("Ew_M_Material").Value = .Fields("Ew_M_Material").Value

A efekt jak na obrazku, bo na tym polu jest reguła Not Is Null...
Wprowadzanie daty ma format jak na obrazku nie wiem który rok.... dzień czy co...



data.png
 Opis:

Pobierz
 Nazwa pliku:  data.png
 Wielkość pliku:  5.56 KB
 Pobierano:  78 raz(y)


skutek_kodu.png
 Opis:

Pobierz
 Nazwa pliku:  skutek_kodu.png
 Wielkość pliku:  35.55 KB
 Pobierano:  70 raz(y)

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



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

PostWysłany: Pon Lut 02, 2015 11:40 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Móżdżę i móżdzę. Otwieram tabelę bo chcę znaleźć w niej rekordy, które zaznaczam w formularzu. W przypadku gdy ich nie ma, chciałbym je dopisać do tabeli, a w przypadku gdy są, to edytować i zmienić dane. Myślałem, że należy używac FindFirst, żeby zawsze przeszukiwać tabelę od pierwszego rekordu. Dlatego FindFirst.
Cytat:
zamiast od razu tylko dla określonego Me.ID_Material ????

No i właśnie z tym mam problemy, by wyszukiwać tylko zaznaczone rekordy (te które widać w kwerendzie (K_Material) po zaznaczeniu checkbox'a, dlatego:
Cytat:
"[Ew_M_Material] = " & Me.ID_Material ... + może where Material_Ewidencja = true?

Ale to, to raczej nie przejdzie, nie?
Pola w tabeli: Ew_M_Suma, _Przychod, _Rozchod to takie jakby pola pomocnicze, bo najważniejsze jest pole Ew_M_Stan:

Kod:
.Fields("Ew_M_Stan").Value = .Fields("Ew_M_Suma").Value + Me.txtPrzychod.Value - Me.txtRozchod.Value

Po zakończeniu kodu, te trzy pola powinny mieć wartość = 0, dlatego na końcu je "zeruję", żeby później móc znowu robić obliczenia. Wiem, że to może niejasny sposób na zliczanie, ale innego niestety nie udało mi się wymyśleć :/ Dlatego też są wymagane, żeby uniknąć sytuacji, w której można je pominąć. Zakładam, że mimo wszystko jest jakiś sposób, by błąd 3314 pominąć z zachowaniem właściwości "wymagane - tak" w tabeli?
Mój błąd, bo powinno być jak sądzę:
Kod:
With rstMaterial
         .AddNew
         'MsgBox strKryteriumMaterial
         .Fields("Ew_M_Material").Value = Me.ID_Material.Value

Data to: rr-mm-dd :) ale już zmieniłem na rrrr-mm-dd :)[/quote]
Wrzucam jeszcze raz z niewielkimi zmianami. Pozdrawiam.



HQH_Test_Ewidencja.rar
 Opis:

Pobierz
 Nazwa pliku:  HQH_Test_Ewidencja.rar
 Wielkość pliku:  38 KB
 Pobierano:  65 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: 7905

PostWysłany: Sro Lut 04, 2015 8:45 pm      Temat postu: Odpowiedz z cytatem Pisownia

3314 - na polu Ew_M_Przychod jest warunek >=0, skorzystaj z NZ i nie tylko tam…
Przed operacją aktualizacji :
Kod:
If Me.Dirty Then Me.Dirty = False
Jeśli korzystasz z FindFirst, Edit i AddNew to po co ten DCount taż sprawdź czy masz zaznaczone w formularzu…
I dla każdego zaznaczonego... przy tym projekcie.
Co unikalnie identyfikuje materiał w tabeli T_Ewidencja_Material bo nie rozumiem ????
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



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

PostWysłany: Nie Lut 08, 2015 12:29 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

No tak, Nz, dziękuję za podpowiedź :)
Nie bardzo rozumiem działanie dirty w tym przypadku.
Cytat:
Co unikalnie identyfikuje
też nie za bardzo rozumiem o co pytasz? O pole ID_Ew_M, indeks unikatowy? Nie mniej jednak kompletnie nie idzie mi ten kod, więc wymyślliłem coś innego, no i jakoś działa. Zakładam, że nie jest to najlepsze rozwiązanie, ale póki co musi być :) Mam prośbę z problemem w cboMRodzaj_AfterUpdate, który pojawia się gdy 2 razy wybieram "Rozchód" lub "Przychód" i dane są wprowadzone. Powinno wtedy nie działać, a działa :/ Coś w stylu
Kod:
If Me.cboMRodzaj.oldValue = Me.cboMRodzaj.Value Then Exit Sub



HQH_Test_Ewidencja.rar
 Opis:

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


cbo_powtorzenie_wartosci.png
 Opis:

Pobierz
 Nazwa pliku:  cbo_powtorzenie_wartosci.png
 Wielkość pliku:  24.06 KB
 Pobierano:  48 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: 7905

PostWysłany: Nie Lut 08, 2015 4:36 pm      Temat postu: Odpowiedz z cytatem Pisownia

oldValue tylko dla związanych kontrolek.

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.
Po co CreateQueryDef, utwórz kwerendy z parametrami.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
elfface



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

PostWysłany: Pon Lut 09, 2015 7:22 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Czy błąd 3021 może być związany z brakiem kodu:
Kod:
Set rstQryEdit = qdfQryEdit.OpenRecordset(dbOpenDynaset)
bezpośrednio przed:
Kod:
With rstQryEdit
          .MoveFirst
              Do While Not .EOF
                   .Edit
                      .Fields("Ew_M_Suma").Value = 0
                      .Fields("Ew_M_Przychod").Value = 0
                      .Fields("Ew_M_Rozchod").Value = 0
                       .Fields("Material_PR").Value = Null
                       .Fields("Material_Ewidencja").Value = False
                  .Update
                  .MoveNext
              Loop
End With
? Bo jak dodałem w dwóch miejscach CheckMaterialSummary(), to zasadniczo działa ok :) Tylko zastanawiam się dlaczego muszę rst otwierać, skoro go nigdzie nie zamykałem? No albo czegoś nie jarzę. Jak zwykle dzięki wielkie za podowiedź z Tagiem :) Tak coś czułem że tak trzeba ;) A CreateQueryDef bo nie bardzo wiem jak stworzyć taką kwerendę. No chyba, że mówimy o tych, które już są stworzone K_Statystyki_MaterialAdd i K_Statystyki_MaterialEdit.
Pozdrawiam i biorę się dalej do roboty, bo analogicznie muszę ogarnąć jeszcze dwie podobne tabele.



err3021.jpg
 Opis:

Pobierz
 Nazwa pliku:  err3021.jpg
 Wielkość pliku:  51.45 KB
 Pobierano:  70 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: 7905

PostWysłany: Pon Lut 09, 2015 9:36 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
With rstQryEdit
.MoveFirst

Kod:
With rstQryEdit
    If Not (.BOF And .EOF) Then
               .MoveFirst
Nie wiem ile tego masz w tym kodzie...
Siądź sobie i narysuj schemat blokowy...
Kwerendy parametryczne były na forum...
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 1, 2, 3, 4, 5  Następny
Strona 1 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.18219 sekund, zapytan = 13
contact

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