[S]Automatyczne wypełnienie wolnych pól po wybraniu elementu

Użytkowanie programu bazodanowego
Brox
Posty: 12
Rejestracja: czw sty 13, 2022 12:48 pm

[S]Automatyczne wypełnienie wolnych pól po wybraniu elementu

Post autor: Brox »

Cześć,
czy ktoś z was wie jak najlepiej zrobić, żeby po wybraniu nazwy firmy uzupełniła się reszta danych w tabeli NABYWCA np. adres i NIP ?
Załączniki
BazaDanych - Befama.odb
(17.05 KiB) Pobrany 118 razy
Ostatnio zmieniony czw sty 20, 2022 12:05 pm przez Brox, łącznie zmieniany 1 raz.
OpenOffice 4.1.11
Windows
Base
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Rafkus »

Coś ni się zdaje, że zamierzasz zrobić formularz, który następnie będziesz chciał drukować jako fakturę. Nie polecam tobie takiego rozwiązania. Lepiej byłoby zrobić formularz do wprowadzenia danych od faktury a jako fakturę zrobić raport.

W tej chwili tworzysz formularz do wprowadzania danych do Tabeli Klienci (Kontrachenci) niby wprowadzając teraz dane do tego formularza tak naprawdę będziesz zmieniał - czyli mieszał w już istniejących danych.
Według mnie musisz najpierw zrobić jeszcze jedną tabelę Faktury posiadające pola które zdefiniowałeś w swoim formularzu tj: pola dat, sposób płatności, numer pro-formy oraz pola odwołującego się do pola klucza z tabeli Klienci. I na takiej tabeli zrobić ten formularz z podformularzem.

Widziałeś ten wątek? https://forum.openoffice.org/pl/forum/v ... 854#p21854
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Brox
Posty: 12
Rejestracja: czw sty 13, 2022 12:48 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Brox »

Nie widziałem, ale zaraz obadam wszystko. Czyli mówisz że, najlepiej fakturę zrobić w raportach. Będzie to działało tak, że po wpisaniu np. numeru NIP reszta danych się uzupełni sama?
OpenOffice 4.1.11
Windows
Base
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Rafkus »

Raporty będą generowały dokument tekstowy na podstawie danych wpisanych do formularza. Więc to zależy od zaprojektowanej struktury formularza. Możesz zerknąć na ten plik tam jest formularz 6.Zamówienie2, można powiedzieć że to taki zarys do fakturowania.
Załączniki
MagazynA.odb
(164.04 KiB) Pobrany 106 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Brox
Posty: 12
Rejestracja: czw sty 13, 2022 12:48 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Brox »

Pobierać to rozszerzenie od Oracle ? Czy pomaga to w stworzeniu takiego raportu z fakturą. Nie mogę odczytać twoich raportów bez tego rozszerzenie, a ciężko mi się za zabrać za zrobienie faktury VAT w raporcie.

Nie wiem czy dam rady zrobić to w raporcie bo niektóre dane trzeba wprowadzić ręcznie takie jak datę sprzedaży, czy zapłaty. Tak samo mam problem z wyciągnięciem do raportu tylko 1 (wybranej przez siebie) firmy, a nie wszystkich od razu.
OpenOffice 4.1.11
Windows
Base
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Rafkus »

Czy pobrać rozszerzenie - to zależy od Ciebie. Jesteś zadowolony z raportów czy też nie?. Sugerowałbym raczej abyś zastanowił się nad przejściem tak w ogóle na LibreOffice - jest bardziej rozwijany niż OpenOffice.

Znalazłem dzisiaj trochę czasu i przyjrzałem się dokładniej twojej bazie. Dodałem tabelę Faktury z polami zdefiniowanymi przez Ciebie w formularzu. Podczas podmiany źródła danych w formularzu odkryłem, że potraktowałeś go tak, jakby to był dokument tekstowy tj. pola formularza dopasowywałeś do wpisanego tekstu. W efekcie podczas mojej edycji wszystko zaczęło mi się rozjeżdżać. Radzę abyś taki formularz traktował jakby to była tablica ogłoszeń i tylko na niej "doczepiał karteczki". Do podpisywania pól służą pola etykiet.
No więc zaprojektowałem ten formularz od nowa. I przedstawiłem w nim dwa sposoby na wyświetlanie informacji o danych zawierających się w innej tabeli (Klienci).

Sposób pierwszy: polega na wykorzystaniu pól listy. One właśnie potrafią wyświetlać jedno a do tabeli wpisywać co innego. I tak w moim formularzu pola listy: KlientNIP (ten zielony) oraz te leżące na szarym prostokącie Nazwa, Adres, Miasto one wszystkie tak naprawę pobierają (a raczej zmieniają) wartość z jednego pola: KlientNip z tabeli Faktury. Po zmianie wartości w którymś z tych pól wystarczy kliknąć inne aby wszystkie zaktualizowały swój wyświetlony wynik.

Sposób drugi: polega na zrobieniu formularza z podformularzem. Połączenie danych pomiędzy dwiema tabelami odbywa się dzięki polom: KlientNIP z tabeli Faktury z polem NIP z tabeli Klienci. W tym przypadku aby zaktualizować pola podformularza po zmianie wartości w np. zielonym polu KlientNip, należy jeszcze kliknąć dołączony przycisk Odśwież formularz .
Ostatnio zmieniony pt sty 21, 2022 6:57 pm przez Rafkus, łącznie zmieniany 1 raz.
Powód: Usunięcie pliku, poniżej zamieszczono nową wersję
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Brox
Posty: 12
Rejestracja: czw sty 13, 2022 12:48 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Brox »

Jestem zaskoczony, dokładnie o to mi chodziło, dziękuję. Powiedziałbyś mi jeszcze jak zrobiłeś obszary SPRZEDAWCA i NABYWCA bo widzę że to tabele nie są.

Rozumiem, że w sposobie pierwszym wszystkie pola w obszarze NABYWCA to są pola listy, tylko czemu jak wejdziemy w ich opcje to wyświetla się WYBÓR WIELOKROTNY. Nie musiałeś tego niczym łączyć tylko wystarczyło wybrać odpowiednie pola ?
OpenOffice 4.1.11
Windows
Base
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Rafkus »

Brox pisze:jak zrobiłeś obszary SPRZEDAWCA i NABYWCA
Na pasku narzędziowym RYSUNEK są dostępne różne kształty i symbole które można umieścić w dokumencie. Wybrałem prostokąt i narysowałem go w formularzu. Dwukrotne kliknięcie go pozwala na wpisanie do niego jakiegoś tekstu.
Brox pisze:wyświetla się WYBÓR WIELOKROTNY.
Tworząc lub edytując formularz zazwyczaj korzystam z pomocy paska narzędziowego PROJEKT FORMULARZA. Na nim Znajduje się polecenie DODAJ POLE. Przy jego pomocy wstawia się do formularza jednocześnie pole etykiety i jakieś inne pole formularza (zależy to od typu danych w tabeli) - te dwa elementy są zgrupowane w jedno. Aby w takim zgrupowanym elemencie zaznaczyć tylko jedną rzecz, należy wcisnąć klawisz CTRL i dopiero wtedy kliknąć wybrany element. Inny sposób to dany twór kliknąć Prawym Klawiszem Myszki aby wywołać menu opcji, i wybrać z niej opcję Grupuj ---> Rozgrupuj.
Brox pisze:wystarczyło wybrać odpowiednie pola ?
Dokładnie. Przy pomocy polecenia DODAJ POLE z paska PROJEKT FORMULARZA, wstawiłem do formularza cztery razy pole KlientNip. Następnie, w każdym z nich, zmieniłem tekst etykiety oraz pole formatowane zamieniłem na pola listy, w opcjach ustawiłem, że ma być rozwijane, typ zawartości listy ustawiłem na SQL i stworzyłem kwerendę - zawartość pola listy.
Powtórzę jeszcze raz: cała sztuczka z wyświetlaniem wartości z innej tabeli tkwi w tym, że te pola listy współużytkują tylko jedną daną zapisaną w polu KlientNip.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Brox
Posty: 12
Rejestracja: czw sty 13, 2022 12:48 pm

Re: Automatyczne wypełnienie wolnych pól po wybraniu 1 eleme

Post autor: Brox »

Okej dzięki wielkie, problem rozwiązany, a ja wszystko rozumiem.
OpenOffice 4.1.11
Windows
Base
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: [S]Automatyczne wypełnienie wolnych pól po wybraniu elem

Post autor: Rafkus »

W dziale CALC Autor tego wątku zadał pytanie (link do niego):
Brox pisze:Cześć, może trywialny problem ale nie mogę sobie z nim poradzić, jaka jest formuła na podsumowanie całej kolumny, gdy nie wiem ile będzie w niej wierszy
oraz, nieco później:
Brox pisze:Myślałem, że to działa tak samo w tabeli w formularzu w bazie danych, ale widzę, że nie.
Otóż BASE i CALC to dwa odrębne programy. Mimo, że pewne elementy są wspólne (np. formatki formularza) to jednak inne działają na całkiem innej zasadzie. Aby przedstawić sposób na rozwiązanie tego problemu w przykładowej bazie danych stworzyłem nową (bylejak) tabelę Zamowienia z polami:
  • IDZam - pole klucz tabeli (z autonumeracją)
  • NrFak - Pole przechowujące numer faktury
  • Towar, Ilosc, Jednostka, CenaNetto, Vat - pola opisujące dany towar
Do przeprowadzania jakiś obliczeń (filtrowania, łączenia tabel) służą KWERENDY. Uruchamiam projekt kwerendy, wybieram z której tabeli będą pochodziły dane (Zamowienia), wybieram które pola będą miały być wyświetlone (wybrałem wszystkie). I teraz chcę mieć dodatkowe pola które będą obliczały wartość netto danego produktu - do pustego pola wpisuję że to ma być iloczyn dwóch pól: "Ilosc" * "CenaNetto" oraz nadaje jakiś alias. Podobnie postępuję z kwotą vat oraz wartością brutto. Tak stworzoną kwerendę zapisałem jako Zamowienia2 - będzie ona podforularzem w projektowanym formularzu (Formularz2). W języku HSQL stworzone zapytanie będzie prezentować się następująco:

Kod: Zaznacz cały

SELECT 
	"Zamowienie".*, 
	"Ilosc" * "CenaNetto" AS "WartoscNetto", 
	"Ilosc" * "CenaNetto" * "Vat" AS "KwotaVat", 
	"Ilosc" * "CenaNetto" * ( 1 + "Vat" ) AS "WartoscBrutto" 
FROM "Zamowienie"
Teraz chcę podliczyć całą fakturę, więc znowu uruchamiam projekt kwerendy, lecz tym razem źródłem danych będzie wcześniejsza kwerenda Zamowienia2. Następnie wybieram które pola będą brały w podsumowaniu: NrFak, WartoscNetto, KwotaVat, WartoscBrutto. A ponieważ będę dokonywał pewnych obliczeń na kilku wierszach jednocześnie, muszę wybrać odpowiednie Funkcje. I tak chcę aby wyniki były poGRUPOwane według nr faktury a resztę pozycji mają zostać zSUMOwane. Tak stworzoną kwerendę nazwałem jako Razem. W języku HSQL stworzone zapytanie będzie prezentować się następująco:

Kod: Zaznacz cały

SELECT 
	"NrFak", 
	SUM( "WartoscNetto" ) AS "SumaNetto", 
	SUM( "KwotaVat" ) AS "SumaKwotyVat", 
	SUM( "WartoscBrutto" ) AS "SumaBrutto" 
FROM "Zamowienie2" 
GROUP BY "NrFak"
Wiem, że dla większości użytkowników podane kody nic nie mówią dlatego zapraszam do obejrzenia tych kwerend w dołączonym pliku: BazaDanych - BefamaX.odb
X - to jakiś kolejny numer określający wersję.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: [S]Automatyczne wypełnienie wolnych pól po wybraniu elem

Post autor: Rafkus »

I kolejne pytanie zamieszczone w CALC:
Brox pisze:jest jakaś możliwość dodać podformularz nie tworząc nowego formularza ?
Jest taka możliwość. Otwórz dany formularz w trybie edycji. Na pasku narzędziowym Projekt formularza jest Ikonka wywołująca Nawigator formularza, a w nim przedstawiona jest w formie drzewka struktura całego twojego formularza. Wyświetla listę wszystkich elementów - to kolejny sposób zaznaczania jakiś pojedynczych elementów. Aby dodać nowy podformularz musisz w nawigatorze wybrać do którego "folderu" chcesz go dodać i kliknąć go prawym klawiszem myszki. Z wywołanej listy wybrać nowy Formularz. We właściwościach dodanego elementu na karcie Dane musisz podać typ zawartości (czyli skąd będą pochodziły dane: tabela, kwerenda, polecenie SQL) i wybrać odpowiednią nazwę tabeli, kwerendy albo stworzyć zapytanie (jeśli wybrałeś SQL). W przypadku podformularzy podaje się tu jeszcze które pola formularza i podformularza zawierają te same dane (wypełnij pola: Połącz pola nadrzędne/podrzędne)
Zrzut ekranu 2022-01-21 134452.png
Załączniki
BazaDanych - Befama4.odb
(209.68 KiB) Pobrany 153 razy
Ostatnio zmieniony wt sty 25, 2022 1:14 pm przez Rafkus, łącznie zmieniany 3 razy.
Powód: Dodałem plik z nową wersją bazy.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
ODPOWIEDZ