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

Użytkowanie programu bazodanowego
Don_Sledzion
Posty: 1
Rejestracja: czw sie 24, 2017 7:48 am

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

Post autor: Don_Sledzion »

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
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

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

Post autor: Rafkus »

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

 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

(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

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.
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