![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taki problem. Jak zaktualizować pole w tabeli np StanSurowca według pola w formularzu IloscPobrana. Pozdrawiam i z góry dzięki za pomoc. Ten post edytował rafal_r1123 17.10.2007, 09:36:38 |
|
|
![]() |
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ostro...
proponuję więcej szczegółów podać wtedy będzie wiadomo o czym mowa. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Chce zrobić bazę która pomoże mi kontrolować rozchód materiału z magazynu tzn. ilość pobraną, ilość wykorzystaną oraz ilość jaka została nie wykorzystana i musi być zwrócona na magazyn.
Mam tabele: Materiał{ Id_mat;Nazwa; aktualny stan} Rozliczenie { nazwa; data_pobrania; iloścpobrana; ilośćwykorzystana;} na podstawie której chce utworzyć formularz w którym konrolował bym rozchód materiału. Niewiem czy taka koncepcja jest dobra ale tak to wymyśliłem. I teraz chodzi mi o to żeby pole aktualny stan w tabeli Materiał automatycznie aktualizowało stan po wpisaniu w formularzu iloscpobrana i iloscwykorzystana. Czyli pole aktualnystan w tabeli Materiał musiało by się aktualizować według wyniku odejmowania : iloscpobrana - iloscwykorzystana . Czy jest to do zrobienia? Ten post edytował rafal_r1123 17.10.2007, 12:20:27 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że to jest do zrobienia. Z tego co rozumiem to po prostu chodzi Ci o zaktualizowanie danych w tabeli `Material`, dopiero wtedy, gdy rozliczenie przyjdzie do skutku.
Oczywiście możesz to zrobić za pomocą polecenia SQL UPDATE: Proponuję jeszcze całość wrzucić to tranzakcji (BEGIN, COMMIT, ROLLBACK) , po to aby w ustrzec się przed błędami bazy danych i przed tym aby w ostatecznym rozrachunku nie okazało się, że w bazie danych widnieje jakiś towar a w magazynie jest pustka. Czyli pseudokod wyglądałby tak:
mam nadzieje że to pomoże, albo przynajmniej naświetli problem Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze zrozumiałeś problem i dzięki za twoją propozycję.
Tylko jeden mały szczegół chciałbym to wykonać pod Accessem + VBA ponieważ dostałem takie zlecenie w pracy zrobienia tego pod accessem. Czy wykonalne jest to pod accessem teraz po twojej odpowiedzi myślę że można to zrobic pisząć odpowiednią kwerendę w accessie lub kod w VBA. Tylko do jakiego zdarzenia to przypisać? Sorry, że odrazu nie napisałem, że w grę wchodzi Access z wykorzystaniem VBA. Pozdrawiam Ten post edytował rafal_r1123 17.10.2007, 14:56:13 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 1.12.2006 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Witam
Błąd w zaprojektowanym fragmencie bazy. Przy określaniu potrzebnych pól należy pamiętać o tym, by nie wprowadzać danych pośrednich lub obliczonych (danych, które są wynikiem wyrażenia). Pole "Aktualny stan" jest niewątpliwie polem, którego wartość jest wynikiem wyrażenia. Tabele "Rozliczenia" należy rozbić na dwa oddzielne tematy. Przy Twoim rozwiązaniu w dniu pobrania pewnej ilości materiału należy również coś wykorzystać! Proponuje takie rozwiązanie: 1) Materiały={ID Materiału, Nazwa,...} 2) Przychód={ID Przychodu, ID Materiału, Data, Ilość,...} 3) Rozchód={ID Rozchodu, ID Materiału, Data,...} Nie zapomnij o połączeniach! Nie ma konieczności, a wręcz nie należy przechowywać danych "Stan aktualny" w tabeli. Przy takim rozwiązaniu informację o aktualnej ilości materiału w każdej chwili możesz otrzymać poprzez proste pole obliczeniowe [Stan aktualny]=Suma([Przychód].[Ilość])-Suma([Rozchód].[Ilość]) umieszczone na formularzu, czy na raporcie lub kwerendzie |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam Błąd w zaprojektowanym fragmencie bazy. Przy określaniu potrzebnych pól należy pamiętać o tym, by nie wprowadzać danych pośrednich lub obliczonych (danych, które są wynikiem wyrażenia). Pole "Aktualny stan" jest niewątpliwie polem, którego wartość jest wynikiem wyrażenia. Tabele "Rozliczenia" należy rozbić na dwa oddzielne tematy. Przy Twoim rozwiązaniu w dniu pobrania pewnej ilości materiału należy również coś wykorzystać! Proponuje takie rozwiązanie: 1) Materiały={ID Materiału, Nazwa,...} 2) Przychód={ID Przychodu, ID Materiału, Data, Ilość,...} 3) Rozchód={ID Rozchodu, ID Materiału, Data,...} Nie zapomnij o połączeniach! Nie ma konieczności, a wręcz nie należy przechowywać danych "Stan aktualny" w tabeli. Przy takim rozwiązaniu informację o aktualnej ilości materiału w każdej chwili możesz otrzymać poprzez proste pole obliczeniowe [Stan aktualny]=Suma([Przychód].[Ilość])-Suma([Rozchód].[Ilość]) umieszczone na formularzu, czy na raporcie lub kwerendzie Dzięki za podpowiedz zmienię strukturę bazy i zobaczę jak mi to będzie działało. A co jeśli chce również miec informacje o tym do jakiej grupy materiałowej został zaliczony wydany materiał. tzn na którą maszynę został wydany i jaki produkt powstał. Czy mogę dodać te dwa pola do tabeli ROZCHÓD czy lepiej utworzyć osobne tabele np : GrMatriałowe{id_mat; nazwa} chyba z tego co widzę to lepiej mi je bedzię dodać do tabeli ROZCHÓD . Jakie jest twoje zdanie ? Ten post edytował rafal_r1123 17.10.2007, 16:30:48 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 1.12.2006 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Ciężko mi jest jednoznacznie odpowiedzieć na Twoje pytanie, gdyż nie znam tematu bazy. Zanim cokolwiek zaczniesz implementować w jakimkolwiek systemie bazodanowym, musisz dogłębnie poznać temat i zaprojektować schemat bazy najlepiej na kartce papieru, a zauważysz w późniejszej pracy, że wszystko działa tak jak sobie tego życzysz.
Pozdrawiam |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
zmieniłem formę bazy na następującą: Tabele: 1)Materiały {Id_Materiału;Nazwa} 2)Przychód {Id_Przychodu; Id_Materiału;Data_przyjęcia; Ilość} 3)Rozchód {Id_Rozchodu; Id_Materiału;Data_wydania; Ilość_wydana;; Grupa_Materiałowa} Relacje: Materiały - Przychód = jeden do wielu Materiały - Rozchód = jeden do wielu Formularz: Rozchody ( do którego dodałem pole tekstowe [Aktualny stan] w którym chce mieć aktualny stan materału, który mi pozostał.) po wpisaniu w tym polu wyrażenia Suma([Przychód].[Ilość]) - Suma([Rozchód].[Ilość_wydana]) w polu powstaje mi Błąd!!!! Jak powinno wyglądać to wyrażenie ponieważ próbowałem kilku rozwiązań i albo pojawia mi się #BŁAD albo Nazwa?. Co byście zmienili? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 1.12.2006 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przykładowe rozwiązanie: Użyj formularza z dwoma podformularzami. Formularz główny "Materiały", podformularz I - "Przychód" II - "Rozchód". Podformularze najlepiej w widoku Arkusz Danych. W podformularzach zsumuj ilości, a dopiero w formularzu głównym wykonaj różnicę. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ok! dzięki spróbuje tak jak napisałeś. Chociaż chyba dodam dodatkowe pola do podformularz Rozchód: { oprócz ilość_wydana jeszcze wyrobiono i pozostało ) ponieważ, ten materiał musi być z powrotem zwrócony na magazyn. i wtedy na podformularzu Rozchody napiszę :
w polu pozostało= Suma(ilość_wydana- wyrobiono) i otrzymam wartość do zwrotu. A w formularzu głównym Materiał w polu obliczniowym wpiszę Suma(ilość - ilość_pobrana+pozostało) może coś otrzymam. Niestety nie działa z tymi dwoma podformularzami nie wiem dlaczego ponieważ używa konstuktora wyrażeń i za każdym razem wyrzuca mi bład #Nazwa?. Czy możliwe, że coś z nazwami mam nie tak ? Pozdrawiam Ps. Czy mógłbyś mi polecić jakąś książę do accessa bądż stronę internetową gdzie znajdę dobrze opisane tworzenie baz w accessie oczywiście z użyciem także VBA. Ponieważ dopiero zacząłem się tym zajmować. Ten post edytował rafal_r1123 18.10.2007, 12:25:46 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 1.12.2006 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Odwołując się do podformularzy spróbuj użyc właściwości "Me!"..., albo podaj mi swój adres e-mail, podrzucę Ci jakiś przykład, być może odzwieciadlający to co byś chciał uzyskać.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
To jest mój email rafal_rafalski@op.pl
Z góry dziękuje za pomoc Chciałem podziękować z rozwiązanie mojego problemu. Wielkie dzięki dla spook za pomoc. Ale niestety mam teraz kolejny problem ponieważ gdy wpisuje rozchód towaru to faktycznie widnieje aktualny stan po odjęciu ilości wydanej i po dodaniu ilości materiału którego nie wykorzystano. Problem w tym, że gdy przechodzę do kolejnego rekordu aby wpisać ilośc wydaną to w Polu aktualny stan pojawia sie całkowita ilość materiału bez uwzglednienia o tą wartość którą wydałem w pierwszym rekordzie. Gdzie popełniłem błąd ? Ok. problem z poprzedniego pytania już rozwiązałem wię wszystko działa tak jak chchiałem. Pozdrawiam wszystkich. dzięki za pomoc spook Ten post edytował rafal_r1123 19.10.2007, 09:52:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 01:05 |