Base - zawartość listy pola kombi wg parametru z formularza

Użytkowanie programu bazodanowego

Base - zawartość listy pola kombi wg parametru z formularza

Postprzez Don_Sledzion » Cz sie 24, 2017 8:16 am

Witam wszystkich,

W moim formularzu chciałbym aby zawartość rozwijanej listy pola kombi zawierała tylko pozycje zawierające frazę podaną w polu tekstowym / liczbowym obok.

Stworzenie samej kwerendy szukającej rekordów zawierających frazę załatwione, ale mnie w żadne sposób nie ratuje - kwerenda nie chce się dać zagnieździć w formularzu a jej uruchomienie powoduje wyświetlenie okna dialogowego "na parametr".

To czego potrzebuję, to:

- Pole kombi zawierające listę wszystkich rekordów z interesującej mnie tabeli
- Pole tekstowe / liczbowe, w którym wpisuję frazę (4 - 6 znaków) i automatycznie zawężam listę dostępnych na liście rekordów

Czy da się w ogóle?
Czy da się bez makra?
LibreOffice = Wersja: 5.2.6.2
MS Windows 10 Pro
Don_Sledzion
 
Posty: 1
Dołączył(a): Cz sie 24, 2017 7:48 am

Re: Base - zawartość listy pola kombi wg parametru z formula

Postprzez Rafkus » Wt lip 03, 2018 8:24 pm

Z tego opisu wnioskuję, że źródłem danych do listy pola kombi jest kwerenda parametryczna, np. coś w tym guście:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
SELECT "Towar", "IDDane"  FROM "Dane" WHERE UPPER ( "Towar" ) LIKE '%' || UPPER ( :Czego_szukasz ) || '%'
czyli lista jest tworzona na podstawie kolumny Towar z tabeli Dane.

Teraz zamiast parametru trzeba wpisać adres komórki, w której będzie wpisywana poszukiwana fraza. Chciałbyś aby ta wartość była wpisana w jakimś polu w BIEŻĄCYM REKORDZIE (też tak bym chciał), niestety takiej możliwości jeszcze nie znalazłem. Zamiast tego można tą frazę przechowywać w pomocniczej tabeli np: Filtr w polu Szukaj. Wówczas zamiast parametru :Czego_szukasz należy wpisać:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
(SELECT "Szukaj" FROM "Filtr")
UWAGA: trzeba dbać aby tabela Filtr zawierała tylko 1 rekord, w przeciwnym wypadku zacznie wyskakiwać komunikat o niemożliwości załadowania danych.

Innym miejscem na przechowywanie poszukiwanej frazy jest przeznaczenie do tego celu rekordu zerowego np.w tabeli Dane.Wówczas kwerenda lista będzie prezentować się następująco:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
SELECT "Towar", "IDDane" FROM "Dane" WHERE   UPPER ( "Towar" ) LIKE '%' || UPPER ( ( SELECT "Towar" FROM "Dane" WHERE "IDDane" = '0' ) ) || '%' AND "IDDane" > 0
Teraz tylko trzeba pamiętać aby w przypadku dalszego przetwarzania danych nie brać pod uwagę właśnie rekordu zerowego, czyli w kryterium dopisywać warunek "IDDane" > '0'

UWAGA: aby wyświetlić wszystkie rekordy, w polu do którego wpisywana jest poszukiwana fraza należy wpisać znak %


Kolejnym problemem jest automatyczność listy.
Nie jestem programistą, to co teraz napiszę to tylko moje domysły: sądzę, że formularze podczas uruchamiania pobierają dane z tabel/kwerend do jakiejś swojej podręcznej pamięci a podczas zamykania bądź odświeżenia przesyła je z powrotem. Tak więc pole listy/kombi samo się, niestety, nie zaktualizuje - trzeba wpisaną frazę zapisać a następnie odświeżyć formularz.
OpenOffice 4.1.5. Widows 10
Rafkus
 
Posty: 13
Dołączył(a): Cz kwi 12, 2018 10:26 pm


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości