Gestionale con MySql e OpenOffice – 4 primo Formulario


Una volta installato mysql e libre/open office, creato la prima tabella in sql, modificata per renderla più funzionale usando una seconda tabella “elenco”, si passa a creare un Form in libreoffice o openoffice.

Da questo momento in poi mi riferirò specificamente a openoffice, dal momento che in alcuni dettagli mi è parso più stabile rispetto a libreoffice, ad esempio le left join andavano in crash, Anche se in effetti mi è parso che in alcuni casi anche openoffice avesse alcune difficoltà con le left join: in particolare non riusciva a gestire elenchi lunghi generati da left join. Inoltre i report – anche se noi non li utilizziamo – sono più agevoli in openoffice. Tuttavia libreoffice sembra in qualche caso avere delle funzioni in più.

In ogni caso di qui in poi mi riferisco a openoffice, anche se i due programmi sono intercambiabili e utilizzano gli stessi file, con la stessa estensione .odb.

Va poi specificato che openoffice e libreoffice non hanno la stabilità dei programmi proprietari ad esempio della microsoft, quindi ci possono essere piccoli o grandi bug a seconda del computer dove sono installati: quello che viene detto qui, funziona sul mio computer e in linea di massima funziona in tutti gli altri ma può anche capitare che alcune funzionalità si inceppino semplicemente passando da un pc all’altro (per esempio le left join facevano esplodere libreoffice ma non davano particolari problemi in openoffice.
Tuttavia oltre a essere programmi liberi, permettono molta più possibilità di inventiva per il programmatore rispetto ai programmi proprietari.

Quindi si apre openoffice base.

Si seleziona
collega ad un database esistentescegliendo “mysql, poi
connetti con ODBC”
poi si clicca su sfoglia e si seleziona la sorgente dati, da noi si chiamava banalmente
odbcname.
Poi si inserisce l’utente, da noi root,
Infine si selezionea “
no, non registrare il database” e si dà il nome al file. Noi lo chiameremo “primodatabase

nella prima schermata è anche possibile scegliere “collega ad un database esistente” → “odbc”. Tuttavia questa scelta a me ha creato qualche problema di comunicazione tra base e mysql.

Un file ODF è suddiviso in quattro parti: Tabelle, Query, Formulari, Report.

Nel nostro caso quando il file si apre sono già presenti le tabelle create su MySql. Dal momento che le tabelle le creiamo e modifichiamo direttamente da mysql non useremo la sezione tabelle di openoffice base, anche se a volte torna utile aprire una tabella da openoffice, mentre magari si sta impostando una query o un altro comando in MySql.

Anche la sezione query ha un interesse marginale per i nostri scopi (ma anche in generale impostare query ha una utilità ridotta). Le nostre query verranno eseguite direttamente all’interno dei forulari. Una volta che si sanno fare quelle si possono fare quante query si vogliono.

La sezione report è più interessante ma ha il limite di poter usare – per quel che ne so – una sola tabella o query alla volta

Si va nella sezione Formulari, e si clicca su “Crea formulario in vista struttura”.

Appare il formulario vuoto.
Un formulario è composto da alcuni oggetti, alcuni visuali altri non visuali, che interagiscono col database oltre ad altri oggetti fissi che non interagiscono col database.
Soprattutto i formulari sono composti da degli oggetti non visuali “Forms”, ossia proprio “Formulari”.
Nonostante il nome sia lo stesso il formulario inteso come la pagina bianca appena apparsa è un foglio su cui si possono disegnare tabelle o inserire campi di testo, mentre i Forms, ossia sempre i Formulari, che sono contenuti dentro al foglio, sono degli oggetti invisibili che hanno il compito di comunicare con il database.
Ogni form può connettersi al massimo a una tabella o una query proveniente dal database mysql.

La prima cosa da fare in un formulario, in un foglio vuoto è quella di andare ad inserire ed impostare il primo Form.

Si clicca sull’icona “navigatore formulario” in basso a sinistra (da non confondersi col navigatore del documento di openoffice):

Si clicca col tasto destro su Moduli → Nuovo → Formulario

Qualora non fosse visibile il tasto del navigatore, serve attivare il gruppo “Struttura del formulario” andando a selezionarlo in Visualizza → Barra degli strumenti.
Stessa cosa per i controlli del formulario che devono essere visibili. Si gestiscono da Visualizza → Barra degli strumenti → Controlli per formulario

Si ottiene la seguente finestra

Si clicca tasto destro su “Moduli” poi → Nuovo → Formulario e si ottiene:

Una volta giunti qui suggerisco di salvare il formulario, inteso come pagina, prima di procedere. Si clicca File → Salva.

Salvare il formulario permette di evitare di dover inserire nelle proprietà la sorgente dati. In ogni caso se venisse richiesta vi andrebbe inserito il file di base stesso a cui il formulario appartiene (“primodatabase”).

Da questa schermata si fa tasto destro sul formulario → modifica e si entra nel formulario in modalità di modifica.

Ora si clicca di nuovo sul navigatore

Tasto destro su Formulario, sotto la scritta Moduli → proprietà.

Nella tab “Dati” nel campo “Tipo di contenuto” si seleziona “Comando SQL” e si scrive nel campo “Contenuto”:

SELECT * FROM fatture;

Che vuol dire: tieni in memoria tutte le colonne della tabella fatture.

Nella tab “Dati” è in generale opportuno selezionare come “Tipo di contenuto”Comando SQL”. Questo perchè permette poi di manipolare meglio il form attraverso le macro che possono cambiare quel comando SQL che introduciamo ma che non potrebbero agire a riguardo se scegliessimo una Tabella o una Query.

Ora, si clicca la freccia in basso a sinistra o comunque si deve arrivare a cliccare “Altri campi di controllo”.

E si seleziona l’icona griglia:

Con il mouse si indica l’area che si vuole ricoprire con la griglia (è conveniente all’inizio farla piuttosto grande), e si segue il wizard per la composizione delle colonne della griglia. Inizialmente si può anche selezionare il tasto =>> che aggiunge alla griglia tutte le colonne presenti nella tabella del formulario (che nel nostro caso è SELECT * FROM fatture; ossia è la tabella fatture).

Per capire che cosa fa il wizard della griglia si può allargare la griglia a sufficienza così che sia possibile cliccare tasto sulla barra dell’intestazione della griglia destro, fuori dalle colonne già esistenti. Si seleziona “Nuova colonna” e quindi Campo di testo, che è una modalità che va bene un po’ per tutto.

Oppure se si ha a che fare con un numero si può scegliere campo numerico, campo data o campo formattato se si ha a che fare con una data o con un campo che si preferisce formattare come si fa con writer o calc (i corrispettivi open di word e excel). Se si ha un campo binario si può scegliere l’opzione Casella di controllo. Campo maschera serve per vincolare la digitazione di quel campo: se voglio che in quel campo si inseriscano tre lettere e sue numeri, col campo a maschera riesco a imporre all’utente questo formato.
Invece Casella combinata e soprattutto Casella di riepilogo presentano funzioni più avanzate che useremo per unire i campi numerici come ragionesociale_fat ai nominativi corrispondenti negli elenchi,

Ora di può cliccare su Modo bozza on/off:

E “eseguiamo” il nostro formulario.

In griglia non appare niente ancora perchè non abbiamo inserito dati in tabella. Si può provare a inserire dati in tabella (ricordandosi che il campo ragionesociale_fat è per ora ancora un campo numerico dove si possono inserire solo numeri interi).

E’ il caso di ricordare che i dati che scriviamo in griglia verranno trascritti nella tabella collegata del database (nel nostro caso la tabella fatture) solo quando andiamo a capo di una riga. Quando ci sono dati scritti in griglia ma non ancora passati alla tabella del database vengono segnalati con una matita nella barra laterale sinistra della grigli che sostituisce il triangolino verde che è invece presente quando tutte le cose scritte in griglia sono state anche memorizzate nella tabella del database.

Dopo aver provato a inserire righe nella tabella, si possono cancellare le righe che si sono scritte cliccando col tasto destro sulla barra laterale sinistra della griglia, a livello della riga che si vuole eliminare e selezionando Elimina righe.

Ora per prima cosa serve che nel campo ragionesociale_fat appaia il nominativo in lettere della ditta che si intende indicare.

Per fare questo creiamo in mysql una tabella in cui ogni nominativo sia associato a un numero.

Apriamo la workbench, entriamo in nuovoschema, e creiamo una nuova tabella (vedi qui su come creare tabelle) che chiamiamo elenco_nominativi, con due colonne, la colonna idelenco_nominativi,(con PK, NN, AI) e la colonna nominativi_en di tipo VARCHAR(127) con NN.

Ora, quando si creano nuove tabelle o le si modifica o si agisce in qualche modo sulla struttra dello schema tramite workbench, può capitare che base (libreoffice base) non recepisca le modifiche. E’ per questo opportuno andare nella sezione tabelle e cliccare da menu Visualizzaaggiorna tabelle. Oppure serve salvare i formulari aperti, chiuderli, salvare il file di base, e chiudere il file. Una volta che tutte le finestre relative al file primodatabase.odb siano state chiude si può riaprire il file, e lo si ritrova aggiornato.

Ora andiamo sulla sezione “tabelle”, e apriamo la tabella elenco_nominativi (se non appare probabilmente l’avete creata nello schema sbagliato) e inseriamo sotto la colonna nominativi_en un po’ di “nomi”.

Inseriamo:

Mario srl
Verdi spa
Arch. Bianchi
Ing Rossi
Mario Rossi

Si ricorda che nella prima colonna idelenco_nominativi non si deve scrivere niente perchè è una colonna che aggiorna automaticamente il database.

Ora ritorniamo nella sezione Formulari e riapriamo il formulario creato in precedenza con tasto destro → modifica.

Clicchiamo con tasto destro sopra la colonna ragionesociale_fat e scegliamo Sostituisci con → Casella di riepilogo.

Ora si clicca di nuovo con tasto destro sopra ragionesociale_fat e stavolta però si sceglie Colonna… che permette di entrare nelle proprietà della colonna.

Si va nella sezione Dati e sul campo Tipo del contenuto della lista si seleziona Sql.

Si clicca quindi sui puntini a lato del campo Contenuto elenco

Si entra in una finestra apposita dove già dovrebbe comparire la finestra Aggiungi tabella o query. Se non apparisse è sufficiente cliccare su inserisci → Aggiungi tabella o query.

Si fa doppio click sulla tabella elenco nominativi, e si può cliccare Chiudi.

Sulla tabellina che appare nella sezione alta si fa doppio click prima su nominativi_en e poi su idelenco_nominativi. Si può cliccare quindi su salva e si può uscire da questa finestra.

Ora nella sezione Dati della colonna ragionesociale_fat, nel campo Contenuto elenco dovrebbe apparire questo comando:

SELECT `nominativi_en`, `idelenco_nominativi` FROM `nuovoschema`.`elenco_nominativi` AS `elenco_nominativi`

Che andiamo a modificare aggiungendo la clausola finale ORDER BY, clausola sql che permette di ordinare una query a seconda del campo è composta da ODER BY nomecampo ASC (oppure DESC a seconda se si vuole ordinare in maniera crescente o descrescente):

SELECT `nominativi_en`, `idelenco_nominativi` FROM `nuovoschema`.`elenco_nominativi` AS `elenco_nominativi` ORDER BY `nominativi_en` ASC

Possiamo ora eseguire il nostro formulario cliccando sul tasto Modo bozza on/off.

Se prima avevamo lasciato una riga con un numero intero da 1 a 4 nel campo ragionesociale_fat ora ci appare un nome. Il nome associato a quel numero nella tabella elenco_nominativi

Si noti che se ci si posiziona nel campo ragionesociale_fat, anche se non è possibile vedre il cursore, si può scrivere con la tastiera “mario ” apparirà la scritta “Mario Rossi” ma appena si procede e si arriva a scrivere “mario s” apparirà il nominativo di “Mario srl”.
Mi accorgo ora che questa funzione presente in openoffice, non è ancora stata implementate in libreoffice.

Per ora abbiamo sistemato la parte che riguarda il campo ragionesociale_fat.

Per quanto riguarda il campo idfatture, si tratta di un campo eccezionale, come lo sono tutti i campi id.
Si incrementa da solo e soprattutto ogni volta che una futura tabella vorrà fare riferimento a una certa fattura indicherà proprio il numero del campo id.
E’ quindi importante che questo numero non venga modificato perché scombinerebbe le eventuali associazioni.
Inoltre, nella tabella del nostro formulario, la colonna id costringe l’utente ogni volta a battere invio per uscire da un campo che non utilizza e che non deve utilizzare.
Eliminiamo quindi la colonna idfatture.

Ri-clicchiamo sul tasto Modo bozza on/off e andiamo a cliccare col tasto destro sulla colonna idfatture e selezioniamo Elimina Colonna.

Dopodichè clicchiamo e manteniamo premuto sul campo data_dat e trasciniamo col mouse senza mollare a sinistra arrivando all’inizio della colonna ragionesociale_fat, qui molliamo la presa.
La data dovrebbe così apparire nella griglia come il primo campo, e la ragione sociale come il secondo.

Clicchiamo su salva per salvare il formulario.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: