[SOLVED]Przycisk w formularzu otwierający kwerendę

Użytkowanie programu bazodanowego
wbp
Posty: 31
Rejestracja: czw lip 20, 2023 2:18 pm

[SOLVED]Przycisk w formularzu otwierający kwerendę

Post autor: wbp »

Witam.
Jak w temacie.
Nie mogę tego znaleźć w necie. Może ktoś podpowie. Jest pod przyciskiem możliwość definiowania Akcji lecz jest ograniczony wybór i nie ma otwórz kwerendę. Jest makro openqery ale jak z niego skorzystać.
Musi być możliwość wpisania nazwy kwerendy.
W Access było bardzo prosto zrobić taki przycisk aż dziw , że w Libre tego nie ma.
Pozdrawiam
Ostatnio zmieniony pn lip 24, 2023 8:17 am przez wbp, łącznie zmieniany 1 raz.
LibreOffice 7.37.2 Windows10
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Przycisk w formularzu otwierający kwerendę

Post autor: Jan_J »

Dokumentacja jest w http://www.access2base.com/access2base.html
A to prosty kod otwierający okno kwerendy o wskazanej nazwie:

Kod: Zaznacz cały

Sub callq()
    If GlobalScope.BasicLibraries.hasByName("Access2Base") Then
        GlobalScope.BasicLibraries.loadLibrary("Access2Base")
    End If
    Call Application.OpenConnection(ThisDatabaseDocument)
    qname = "q1"
    DoCmd.OpenQuery(qname, 0)
End Sub
Makro podpięte do przycisku musi być w tym przypadku bezparametrowe. Procedura
callq() powyżej spełnia to wymaganie. W porządnym projekcie nawiązanie połączenia powinno się odbyć raz, na początku.

Nazwa kwerendy jest daną String. Możesz ją wpisać na sztywno (jak w przykładzie), pobrać z formularza (np. z pola kombi), wpisać z palca etc.

Załączam plik testowy.
call_query_from_form.odb
(12.63 KiB) Pobrany 71 razy
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
wbp
Posty: 31
Rejestracja: czw lip 20, 2023 2:18 pm

Re: Przycisk w formularzu otwierający kwerendę

Post autor: wbp »

Dziękuję za szybka odpowiedź.
Pobrałem plik ale przycisk nie uruchamia otwarcie kwerendy. Być może .
coś źle robię. Wchodzę na Pana bazę , kliknięciem otwieram formularz , naciskam przycisk i nic się nie otwiera.
Może trzeba coś zrobić z makrami.
Pozdrawiam.
LibreOffice 7.37.2 Windows10
wbp
Posty: 31
Rejestracja: czw lip 20, 2023 2:18 pm

Re: Przycisk w formularzu otwierający kwerendę

Post autor: wbp »

Makro się nie otwierało była blokada w opcjach Bezpieczeństwo makr.
LibreOffice 7.37.2 Windows10
wbp
Posty: 31
Rejestracja: czw lip 20, 2023 2:18 pm

Re: Przycisk w formularzu otwierający kwerendę

Post autor: wbp »

Witam.
Jeszcze dopiszę , że miałem zamieszanie z lokalizacją makra. Musi być przypisane do mojej bazy.
Zaproponowane rozwiązanie powoduje , że do każdego przycisku trzeba tworzyć nowe makro callq1, callq2 ... podstawiając nazwę kwerendy .
Ale i tak dziękuję za rozwiązanie.
Sprawa rozwiązana
LibreOffice 7.37.2 Windows10
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Przycisk w formularzu otwierający kwerendę

Post autor: Jermor »

wbp pisze: pt lip 21, 2023 9:35 am Zaproponowane rozwiązanie powoduje, że do każdego przycisku trzeba tworzyć nowe makro callq1, callq2 ...
No nie koniecznie. @Jan_J napisał przecież, że nazwę kwerendy możesz dostarczyć z np. pola kombi albo pola listy.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Przycisk w formularzu otwierający kwerendę

Post autor: Rafkus »

Otwierając formularz w trybie edycji, zyskasz dostęp do właściwości przycisku (od innych elementów również). Jest tam pole "Dodatkowe informacje......", tam możesz wpisać nazwę kwerendy, którą chcesz otworzyć a poniższe makro właśnie z tej właściwości będzie pobierać nazwę do otwarcia.

Kod: Zaznacz cały

Sub callq1(oEv)
	If GlobalScope.BasicLibraries.hasByName("Access2Base") Then
		GlobalScope.BasicLibraries.loadLibrary("Access2Base")
	End If
	Call Application.OpenConnection(ThisDatabaseDocument)
	qname = oEv.Source.Model.Tag
	DoCmd.OpenQuery(qname , 0)
End Sub
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
wbp
Posty: 31
Rejestracja: czw lip 20, 2023 2:18 pm

Re: Przycisk w formularzu otwierający kwerendę

Post autor: wbp »

Witam.
Dziękuję za podpowiedź. Po ostatnim wyjaśnieniu przycisk działa tak jak chciałem.
Temat uważam za rozwiązany.
LibreOffice 7.37.2 Windows10
ODPOWIEDZ