MySQL 2 - Comune di Campagnano di Roma

Transcript

MySQL 2 - Comune di Campagnano di Roma
MySQL 2
(maisiquel tu ovvero gestire un database MySQL tramite LibreOffice)
Augusto Scatolini ([email protected]) ([email protected])
Miniguida n. 182
Ver. 1.0 marzo 2013
La prima guida che ho scritto su MySQL risale ad aprile 2004 ed è disponibile all'indirizzo
http://www.comunecampagnano.it/gnu/accessless/fromMySQL/index.htm
la seconda parte della guida sempre di aprile 2004 è disponibile all'indirizzo
http://www.comunecampagnano.it/gnu/accessless/fromMySQL/index2.htm
ho ripreso l'argomento nel febbraio del 2011 con
http://www.comunecampagnano.it/gnu/mini-howto/mysqlbiblibre/mysqlbiblibre.pdf
poi a marzo 2011 con
http://www.comunecampagnano.it/gnu/mini-howto/phpmyedit/phpmyedit.pdf
e infine a marzo 2013
http://www.comunecampagnano.it/gnu/mini-howto/2013_181_MySQL_HOWTO/maisiquel_autu.pdf
Gestire un database MySQL tramite l'interfaccia di LibreOffice Base
Una volta deciso di gestire il nostro database con l'interfaccia di LibreOffice Base che ci permette di
creare Maschere, Query e Report molto agevolmente bisogna puntualizzare alcuni prerequisiti:
Come si abilitano le Macro su LibreOffice?
Come si registra un database su LibreOffice?
Come si costruiscono le macro per navigare nell'applicativo?
Come ci si collega al database MySQL?
Come si abilitano le Macro su LibreOffice?
Dal menu Strumenti, apriamo Opzioni, poi Sicurezza
poi apriamo Sicurezza delle
macro che troveremo settata
su Alto.
Settiamo la sicurezza su
Medio se vogliamo
confermare ogni volta
l'abilitazione delle macro o su
Basso per non avere più
fastidi.
Come si registra un database su LibreOffice?
La via maestra è quella di registrare il database in fase di creazione, ma può sempre essere registrato
in un secondo momento.
Aprendo, come al solito, il menu Strumenti, poi Opzioni, LibreOffice Base e infine Database
possiamo vedere tutti i database registrati sul computer, in questo caso nessuno.
Cliccando su nuovo si apre una maschera
attraverso la quale
possiamo scegliere il
database da registrare
Scegliamo il nostro database
clicchiamo su OK
e il nostro database
verrà registrato come
mostrato in figura
Come si costruiscono le macro per navigare nell'applicativo?
Normalmente un database di LibreOffice avrà una maschera che funge da menu, con una serie di
pulsanti che attivando delle macro aprono altre maschere, chiudono maschere, aprono Query e
Report.
Altre due macro sono opportune, anche se non necessarie, (nessuna macro è necessaria), una macro
con funzioni analoghe a quella di MS Access denominata Autoexec che permette l'apertura
automatica della maschera Menu quando viene aperto il database di LibreOffice e un'altra che,
posizionata sul menu chiude tutto l'applicativo.
Macro per LibreOffice 4
Macro per aprire una maschera (formulario):
Sub apri_maschera_nome_maschera
ThisDatabaseDocument.FormDocuments.getbyname("nome_maschera").open()
End Sub
inserire il vero nome della maschera qui
Macro per chiudere una maschera:
Sub chiudi_maschera_nome_maschera
ThisDatabaseDocument.FormDocuments.getbyname("nome_maschera").close()
End Sub
inserire il vero nome della maschera qui
Macro per aprire una Query:
sub OpenQueryDataView( aQueryName as string, aConnection as variant )
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Dim aURL as New com.sun.star.util.URL
aURL.Complete = ".component:DB/DataSourceBrowser"
oDispatchObject = oDesktop.queryDispatch(_
aURL, _
"_Blank",_
com.sun.star.frame.FrameSearchFlag.CREATE)
Dim aProps(5) as New com.sun.star.beans.PropertyValue
aProps(0).Name = "ActiveConnection"
aProps(0).Value = aConnection
aProps(1).Name = "CommandType"
aProps(1).Value = com.sun.star.sdb.CommandType.QUERY
aProps(2).Name = "Command"
aProps(2).Value = aQueryName
aProps(3).Name = "ShowMenu"
aProps(3).Value = True
aProps(4).Name = "ShowTreeView"
aProps(4).Value = FALSE
aProps(5).Name = "ShowTreeViewButton"
aProps(5).Value = FALSE
oDispatchObject.dispatch(aURL, aProps)
End Sub
sub apri_query_nome_query( oEvent as object )
openQueryDataView( "nome_query", oEvent.Source.Model.Parent.ActiveConnection )
end sub
nome della query
per aprire altre query non è necessario riscrivere tutta la funzione OpenQueryDataView
sarà sufficiente aggiungere tanti sub apri_query …. quante sono le query da aprire
Macro per aprire un report
Sub apri_report_nome_report
ThisDatabaseDocument.ReportDocuments.getByName("nome_report").open()
End Sub
inserire il vero nome del report qui
Macro autoexec:
Sub autoexec
Dim InteractionHandler As Object
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
ThisDatabaseDocument.CurrentController.connect("","")
ThisDatabaseDocument.FormDocuments.getByName ( "nome_maschera" ).open
End Sub
inserire il vero nome della maschera menu
Macro per chiudere LibreOffice:
sub esci
ThisDatabaseDocument.close(True)
end sub
Il codice delle macro deve essere scritto in:
Strumenti → Macro → Organizza macro → LibreOffice Basic...
la gerarchia è formata da una serie di macro che fanno riferimento al module1 della libreria standard
del database in oggetto, che in questo caso si chiama “Nuovo database.odb”
Qui si vede una parte del listato (il codice vero e proprio)
Questa è una rudimentale maschera
con funzioni da menu.
Ho creato 7 pulsanti, ho scritto sul
pulsante quello che dovrebbe fare
quando premuto e ho associato una
specifica macro ad ogni pulsante.
Agendo sulle proprietà del pulsante, sulla scheda Eventi, alla voce “Eseguire l'azione” è associata la
macro “aprimascheratabella1” del “Module1” della libreria “Standard”
Tutte le macro devono
essere associate in questo
modo, tranne l'autoexec
che
invece va associata
all'evento “Apri
documento” nella scheda
Eventi del pannello
Personalizza al quale si
accede dal menu Strumenti.
Come ci si collega al database MySQL?
Guardando i seguenti filmati su Youtube si può apprendere come connettere LibreOffice a un
database esterno MySQL usando il connettore JDBC oppure ODBC oppure direttamente
LIBREOFFICE 3 BASE - Connect to an external MYSQL Server using JDBC
http://www.youtube.com/watch?v=TYN4umIVnCo
Connect Access / OOBase to MySQL Using ODBC Part 1 of 2
http://www.youtube.com/watch?v=P_QU1-BVWpU
Connect Access / OOBase to MySQL Using ODBC Part 2 of 2
http://www.youtube.com/watch?v=Wyz-SZsTtYo
LIBREOFFICE BASE - Directly connection to MYSQL Server
http://www.youtube.com/watch?v=5px1cqC4dM8
Proviamo ad installare l'estensione “MySQL Connector for OpenOffice.org” della Oracle ( 3,2 MB)
dall'indirizzo mostrato in figura
Purtroppo questa estensione non funziona su LibreOffice 4 (montato su Windows 7)
Se invece andiamo all'indirizzo http://extensions.openoffice.org/node/5644 possiamo scaricare il
connettore MySQL per Apache OpenOffice
Questo funziona, nel senso che si installa senza errori.
Ma purtroppo riporta un errore quando si stenta di collegarsi con MySQL
Proviamo a collegarci con il connettore ODBC scaricandolo dall'indirizzo mostrato in figura
scarichiamo il file msi,
installiamolo
apriamo LibreOffice,
nuovo database e
scegliamo “collega a un
database esistente”
selezioniamo il tipo di
database “MySQL”
scegliamo il tipo di connessione
ODBC
sfogliamo per selezionare la
sorgente dati ODBC
non dobbiamo farci ingannare
dal “contrassegni” presente tra
i sorgenti.
Non è di MySQL, dobbiamo
cliccare su “Gestisci”
Dobbiamo aggiungere una nuova
sorgente cliccando su “Aggiungi”
diamo un nome significativo,
il server sarà “localhost”,
l'utente sarà “root”,
con la sua password,
la port adi default è 3306
il database “contrassegni” potrà
essere selezionato dal menu a tendina
a condizione di averlo
precedentemente creato tramite
PhpMyAdmin
è buona norma verificare la connessione premendo il
pulsante “Test” che, in caso affermativo riporterà il
messaggio “Connection successful”
ora, finalmente, apparirà anche la
connessione “contrassegni” ma
tramite il connettore
“MySQL ODBC 5.2W Driver”
dopo aver premuto OK
inseriamo il nome dell'utente, in
questo caso “root”
registriamo il database
digitiamo la password di root
salviamo e finalmente apriamo il database che appare come un comunissimo database di
LibreOffice. Sarà veramente quello di MySQL?
proviamo ad inserire un record (in questo caso sulla riga 9) “ultimo inserito”
a questo punto, come verifica, apriamo un browser e puntiamo all'indirizzo
http://localhost/phpmyadmin e successivamente apriamo il database MySQL contrassegni, poi la
tabella contrassegni e verifichiamo se l'ultimo record aggiunto via LibreOffice è realmente presente
nell'archivio MySQL.
E' presente. Questo significa che lo stesso database MySQL può essere amministrato (gestito) sia
via web tramite phpmyadmin o altro servizio che via LibreOffice tramite il connettore ODBC.
FINE
Questo documento è rilasciato con licenza Copyleft
(tutti i rovesci sono riservati) altre miniguide su
http://www.comunecampagnano.it/gnu/miniguide.htm
oppure direttamente su http://miniguide.tk
sito consigliato: http://www.linux4campagnano.net
blog consigliato: http://campagnano-rap.blogspot.com