DataBase "gestionale": campi con relazioni multiple

Discussioni sulle caratteristiche di database
Rispondi
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Buongiorno a tutti.

Sto facendo un database per un progetto pilota. L'intenzione sarebbe quella di avere delle funzionalità base senza perderci troppo tempo, ma mi sto rendendo conto che la cosa è più difficle del previsto e vorrei chiedere qualche consiglio. Premetto che non ho gran esperienza in database, sono autodidatta e qualche anno fa ho fatto qualche database con office.

Ora ho ripreso in mano questo mondo usando la suite LibreOffice. Ho scelto questa solo perchè già installata nel PC, se ci sono motivi per cui è meglio passare a AOO vi prego di farmeli sapere.

Il database che sto creando è una specie di gestionale, che deve poter gestire una semplice anagrafica clienti, una lista di categorie di attività (eventi, corsi formativi, serate informative e quant'altro) e un registro di queste attività. Per ognuna delle attività registrate, verranno associati i clienti a cui vi hanno partecipato che accumuleranno così dei "punti fedeltà".

I problemi che sto incontrando sono:
1) in generale, non capisco se le relazioni che sto creando sono corrette e se le chiavi primarie sono gestite al meglio
2) nel formulario RegistroAttività, vorrei inserire un campo che si popola in automatico con il valore prelevato dalla tabella Attività campo Imponibile Base
3) Come faccio a inserire un campo nel formulario RegistroAttività con una lista dei clienti dove si possa selezionare se era presente o no? anche se non sarà comodissimo, nel caso di lista lunga, per ora va bene anche una soluzione "alla buona".

Grazie a chiunque abbia voglia di aiutarmi.
Allegati
UniOneP_forum.odb
(32.69 KiB) Scaricato 147 volte
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum consulta il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Manuale già visionato in precedenza, presentazione fatta. Grazie mille.
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

Vedo che nelle tabelle fai uso di un campo ID configurato come Integer, ma poi imposti la chiave primaria su un campo Testo.
Io comincerei con impostare la chiave primaria sui campi ID e opterei per l'incremento automatico.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Ho fatto così perchè altrimenti non riuscivo a creare le relazioni che mi servivano. Mi dava continuamente errori se non collegavo le tabelle con il campo primario
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

Ciao, ho ristrutturato il database creando chiavi primarie sugli ID e, ove necessario, cambiato tipo campo da Testo a Integer.
Eliminate anche tutte le "digitazioni necessarie" perché in fase di prova complicano solo la vita :D .
Rifatte tutte le relazioni e trasformato le caselle combinate con caselle di riepilogo.
Mi pare funzioni.
Allegati
Nuovo.odb
(31.84 KiB) Scaricato 167 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Wow grazie mille. Ho preso il tuo database da esempio e sto ripartendo da zero con le nuove informazioni. Probabilmente alcune cose che avevo in mente non le farò, ma forse così un po' avanti vado. Appena mi areno, chiederò di nuovo aiuto.

Grazie
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Eccomi di nuovo qui.. Lavorando con le info di Charlie e grazie anche alla base di un database similare a quello che voglio fare io trovato in questo forum, sono arrivato a buon punto. Sono riuscito a creare le tabelle che mi servivano, le relazioni e le viste corrette.

Ora, vorrei fare dei report. Parto da quello più semplice che già ho provato a fare senza successo. Vorrei, per ogni cliente, avere un report di tutte le ore di corsi a cui ha partecipato. Riesco ad ottenere una vista delle ore di un cliente con una query statica, ma ovviamente non posso fare una query per ogni cliente.

Come posso fare? Ho provato con la somma di campo, ma non ne salto fuori.

Grazie a tutti
Allegati
UniOneP_Forum.odb
(54.78 KiB) Scaricato 132 volte
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Risolto con

Codice: Seleziona tutto

SELECT "CorsiPeriodici"."OreCorso", "Clienti"."NomeCognome" FROM "Clienti", "CorsiPeriodici" WHERE LOWER ( "NomeCognome" ) LIKE '%' || LOWER ( :NomeCliente ) || '%' ORDER BY "NomeCognome" DESC
Ora mi manca "solamente" poter fare una somma della lista che ottengo e raggruppare le righe. se non si può facilmente, non è un problema, copio la tabella su calc e via.
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

Ciao, non capisco bene le tue richieste.
È la somma che ti serve? Falla nella query:

Codice: Seleziona tutto

SELECT SUM( "CorsiPeriodici"."OreCorso" ) "OreTotali", "Clienti"."NomeCognome" FROM "Clienti", "CorsiPeriodici" WHERE LOWER ( "NomeCognome" ) LIKE '%' || LOWER ( :NomeCliente ) || '%' GROUP BY "Clienti"."NomeCognome" ORDER BY "Clienti"."NomeCognome" DESC
Poi ci costruisci sopra il report.
N.B. Se la versione standard del report di Open Office non ti soddisfa, c'è l'estensione Report Builder che puoi installare. È uno strumento pieno di problemi, ma per le cose semplici può funzionare.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Si è la somma che mi serve. Avevo provato anche io a farla, ma esattamente come con il codice tuo la somma è sempre uguale a prescindere dal nome inserito come filtro, come se lui contasse indifferentemente le ore di corsi, anche se un cliente non vi ha partecipato.

Torno a spiegare il mio obiettivo, sperando in tal modo di riuscire a farmi aiutare meglio. Il mio progetto prevede una serie di corsi formativi, individuali o di gruppo, a cui potranno accedere i clienti registrati nella piattaforma. Questi corsi avranno un prezzo di base che equivale ad un guadagno in punti e una durata in ore che varranno come formazione individuale. Io ho quindi bisogno di un database che registri tutti i corsi di formazione e che mi crei il report dei punti e delle ore acquisite dai clienti.

Grazie ancora e buon weekend
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Ho quasi risolto così

Codice: Seleziona tutto

SELECT "CorsiPeriodici"."OreCorso", "Clienti"."NomeCognome", "Corsi_con_partecipanti"."Id_Partecipante", "Clienti"."ID" FROM "Corsi_con_partecipanti", "Clienti", "CorsiPeriodici" WHERE "Corsi_con_partecipanti"."Id_Partecipante" = "Clienti"."ID" AND "Corsi_con_partecipanti"."Id_Corso" = "CorsiPeriodici"."ID_Corso" AND LOWER ( "NomeCognome" ) LIKE '%' || LOWER ( :NomeCliente ) || '%' ORDER BY "Clienti"."NomeCognome" DESC
In tal modo vedo le ore di corsi solo in base al nome del cliente.

Ora sarebbe bellissimo :D se facesse anche la somma, ma non mi funziona (mi da un errore di unione) :oops: ...

Sempre grazie !!
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

Non mi pare un problema:

Codice: Seleziona tutto

SELECT SUM( "CorsiPeriodici"."OreCorso" ) "SommaOreCorso", "Clienti"."NomeCognome", "Corsi_con_partecipanti"."Id_Partecipante", "Clienti"."ID" FROM "Corsi_con_partecipanti", "Clienti", "CorsiPeriodici" WHERE "Corsi_con_partecipanti"."Id_Partecipante" = "Clienti"."ID" AND "Corsi_con_partecipanti"."Id_Corso" = "CorsiPeriodici"."ID_Corso" AND LOWER ( "NomeCognome" ) LIKE '%' || LOWER ( :NomeCliente ) || '%' GROUP BY "Clienti"."NomeCognome", "Corsi_con_partecipanti"."Id_Partecipante", "Clienti"."ID" ORDER BY "Clienti"."NomeCognome" DESC
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Funziona.. devo aver fatto un banale errore di sintassi. Grazie
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Altro problema. Ora, la somma funziona, il database ha un corpo che è quasi sufficiente per quel che mi serve. Mi manca solo una cosa importante.
Ho creato un formulario basato sulla query PuntiForzaUsati_noSUM. In questo formulario, vorrei aggiungere sotto un paio di box che mi dicano la somma dei PuntiForzaUsati, la somma dei PuntiAcquisiti e la differenza tra i 2 (PuntiAcquisiti-PuntiForzaUsati).

Non riesco a capire come fare, se usando una macro o altro.

Grazie ancora.
Allegati
UniOneP_forum.odb
(62.33 KiB) Scaricato 132 volte
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da charlie »

La reportistica standard è piuttosto limitata.
Installa l'estensione Report Builder che, pur essendo piuttosto datata e piena di bug, per le cose semplici di solito funziona (Libre Office ce l'ha già incorporata quando lo si installa).
Report Builder ha alcune (pochissime) funzioni utili quali Accumulo che permette di fare delle somme di un campo direttamente nel report.
Nel file trovi un banale esempio.
Allegati
UniOneP_forum_2.odb
(66.67 KiB) Scaricato 156 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
guglia87
Messaggi: 17
Iscritto il: domenica 20 maggio 2018, 15:13

Re: DataBase "gestionale": campi con relazioni multiple

Messaggio da guglia87 »

Con il Report Builder sono riuscito a fare tutto quello che mi serviva.

Finalmente sono arrivato ad una prima versione "stabile" e ora inizia la sperimentazione.

Grazie dell'aiuto.
Buon proseguimento
AOO 4.1 e LibreOffice 5.1.4.2 on Windows 10 (a breve aggiornamento a 6)
Rispondi