automatyczne odświeżanie kwerendy
-
- Posty: 224
- Rejestracja: pn wrz 23, 2013 2:48 pm
automatyczne odświeżanie kwerendy
mam zarejestrowane połączenie z bazą base, pobieram dane i działa, ale chciałbym, żeby kwerenda odświeżała się automatycznie przy otwarciu arkusza, czy to możliwe?
LibreOffice 7.6
Re: automatyczne odświeżanie kwerendy
Jest to możliwe, musisz nagrać makro odświeżające zakres danych, a następnie przypisać je do zdarzenia Otwórz dokument, z tym że znam 2 metody utworzenia tabeli przestawnej w arkuszu z bazy danych.
Metoda 1.
Do arkusza są pobierane dane z bazy np. do zakresu Arkusz1.A1:D100 i na podstawie tego zakresu jest utworzona tabela.
Metoda 2
Tabela przestawna pobiera dane prosto z kwerendy bazy danych
EDIT:
Ups, gdzie ja wczoraj widziałem że chcesz odświeżyć tabelę przestawną ??? Wykorzystaj makro przedstawione w metodzie 1.
Metoda 1.
Do arkusza są pobierane dane z bazy np. do zakresu Arkusz1.A1:D100 i na podstawie tego zakresu jest utworzona tabela.
Kod: Zaznacz cały
sub ZakresDanychTabeliPrzestawnej_1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "Arkusz1.$B$4" 'ta komórka jest w zakresie danych pobranych z bazy
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())
end sub
Tabela przestawna pobiera dane prosto z kwerendy bazy danych
Kod: Zaznacz cały
sub ZakresDanychTabeliPrzestawnej_2
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "Arkusz1.$H$7" 'ta komórka jest w tabeli przestawnej
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:RecalcPivotTable", "", 0, Array())
end sub
Ups, gdzie ja wczoraj widziałem że chcesz odświeżyć tabelę przestawną ??? Wykorzystaj makro przedstawione w metodzie 1.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP