Dostęp do BD na zewnętrznym serwerze

Użytkowanie arkusza kalkulacyjnego

Dostęp do BD na zewnętrznym serwerze

Postprzez zwora » Cz wrz 13, 2018 6:10 pm

Witam,

Czy jest możliwość przesłania zawartości arkusza do zewnętrznej bazy danych (na zewnętrznym serwerze)? Mogłoby to być na zasadzie makra, albo wywołania programu (lub np. skryptu php). Czy coś takiego w ogóle jest wykonalne z poziomu calc? Ewentualnie z poziomu zewnętrznego (wyciągnięcie danych z arkusza bez jego uruchamiania). Wolałbym przy tym uniknąć generowania plików csv. Idealnie byłoby, gdybym mógł to zrobić przyciskiem w arkuszu.

Dziękuję i pozdrawiam
OpenOffice 3.4.1, Windows 7 SP1 64bit
zwora
 
Posty: 24
Dołączył(a): Pn sty 20, 2014 1:23 pm

Re: Dostęp do BD na zewnętrznym serwerze

Postprzez Jan_J » Cz wrz 13, 2018 8:52 pm

I tak, i tak jest możliwe.

a. Makro, np. w reakcji na przycisk: nawiązuje połączenie z bazą, coś robi ze sczytywanymi z arkusza danymi; zamyka połączenie.
Można skorzystać z obsługi źródeł danych przez interfejs odb albo innymi sposobami;
dla Basica patrz https://wiki.openoffice.org/wiki/Docume ... ase_Access,
dla Pythona masz jego własne metody komunikacji z bazami

b. Skrypt zewnętrzny: nawiązuje połączenie z bazą, pobiera dane z pliku ods i coś z nimi robi; zamyka połączenie.
Tu środowisko wybierasz dowolnie, ważne by mieć dostęp do danych w Twoim formacie, powiedzmy ods; źródło danych jest plikiem, Calc nie jest potrzebny. Np. Python ma liczne moduły do komunikacji z różnymi bazami, a do czytania skoroszytu np. ezodf, patrz https://pypi.org/search/?q=ezodf

php? z dostępem do baz nie ma problemu. Ale Calc nie ma interpretera php jako języka makr; a czy php dysponuje gotowym modułem do czytania skoroszytów ods, to nie wiem.

a czy b? zależy, czy bardziej patrzysz na Calca jako środowisko pracy, czy na skoroszyty ods jako na sposób przechowywania danych.
JJ
LO (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3687
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Dostęp do BD na zewnętrznym serwerze

Postprzez zwora » Pt wrz 14, 2018 6:13 am

Dziękuję za odpowiedź. Najbardziej odpowiadałoby mi to pierwsze rozwiązanie z makrem a Basicu. Ale nie mogę nigdzie znaleźć przykładów z połączeniem z bazą danych na zewnętrznym hoście, czyli coś w rodzaju connect(hostname,username,password).
OpenOffice 3.4.1, Windows 7 SP1 64bit
zwora
 
Posty: 24
Dołączył(a): Pn sty 20, 2014 1:23 pm

Re: Dostęp do BD na zewnętrznym serwerze

Postprzez Jan_J » Pt wrz 14, 2018 9:05 am

Na przykład
https://forum.openoffice.org/en/forum/v ... 20&t=24251
https://forum.openoffice.org/en/forum/v ... 40&t=24209
https://forum.openoffice.org/en/forum/v ... 13&t=62082

Kluczowe jest zainicjowanie obiektu połączenia jdbc.

Miałem podobny działający kod do współpracy z postgresem, ale umarł na nieużywanie. Jak znajdę, podeślę.

Może coś wyjaśni rozdział 8 w http://www.pitonyak.org/database/AndrewBase.pdf
JJ
LO (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3687
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Dostęp do BD na zewnętrznym serwerze

Postprzez zwora » So wrz 22, 2018 7:59 am

Miałem mało czasu, więc nie zajmowałem się tym problemem, ale muszę już wrócić do tematu. Utworzyłem sobie bazę testową, ale mam problem z połączeniem. A w zasadzie wygląda na to, że ze zmiennymi połączenia:

Nie działa nawet coś takiego:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Dim sDatabaseName$
Dim sUserName$
Dim sUserPassword$
Dim sDatabaseHost$
Dim oParams () As New com.sun.star.beans.PropertyValue
sDatabaseHost = "mojadomena.pl:3306/"
sDatabaseName = "mojabaza"
sUserName = "mojlogin"
sUserPassword = "mojehaslo"
AppendProperty(oParams(), "user", sUserName)
AppendProperty(oParams(), "password", sUserPassword)
AppendProperty(oParams(), "JavaDriverClass", "com.mysql.jdbc.Driver")

print oParams.sUserName


W ostatniej linijce wyskakuje: "Błąd pracy BASIC'A. Nie ustawiono zmiennej obiektu"

Oczywiście dodałem wcześniej funkcje AppendToArray(), CreateProperty(), AppendProperty() zgodnie z podanym wcześniej linkiem.

print oParams też daje ten komunikat (zamiast o nieprawidłowej wartości właściwości), czyli tak jakby w ogóle obiekt nie został utworzony.
OpenOffice 3.4.1, Windows 7 SP1 64bit
zwora
 
Posty: 24
Dołączył(a): Pn sty 20, 2014 1:23 pm


Powrót do Calc

Kto przegląda forum

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