MySQL 2 (maisiquel tu ovvero gestire un database MySQL tramite LibreOffice) Augusto Scatolini (webmaster@comunecampagnano.it) (a.scatolini@linux4campagnano.net) 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