[RISOLTO] Registrare di partecipanti a eventi

Discussioni sulle caratteristiche di database
Rispondi
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

[RISOLTO] Registrare di partecipanti a eventi

Messaggio da magal »

Ciao a tutti.

utilizzo Libreoffice 3.5 su ubuntu 12.04 sa molto poco.

Ho necessità di registrare i partecipanti a degli eventi e volevo utilizzare Base.

I nomi dei partecipanti sono raramente modificati.

Degli eventi, alcuni sono periodici ed altri saltuari e vanno inseriti volta per volta, il numero dei partecipanti è variabile per ogni evento (max 40)

Mi sto perdendo a progettare un database per:
- associare a ogni partecipante gli eventi a cui ha partecipato
- estrarre i dati per vedere chi ha partecipanto a ogni evento
- estrarre i dati per vedere tutti gli eventi ha cui ha partecipato ciascun partecipante.

Mi potete dare una mano?

Grazie
Ultima modifica di magal il giovedì 29 novembre 2012, 12:19, modificato 2 volte in totale.
LIbreoffice 3.5 - ubuntu 12.04
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: Registrare di partecipanti a eventi

Messaggio da gimbo_71 »

Ciao.

Io creerei 2 tabelle, una con i dati dei partecipanti e una con i dati degli eventi; in queste 2 tabelle dovrai avere ameno un campo in comune per poterle mettere in relazione. Poi con un formulario e un sotto formulario legati dal campo in comune (o dai campi in comune - massimo 4) potrai scrivere contemporaneamente in entrambe le tabelle i dati condivisi.

Per estrarre i dati usi le ricerche, filtri i dati che ti interessano con un criterio che scegli.
LibreOffice 3.6.2.2 su Ubuntu 12.10
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Grazie, ma ancora on mi è chiaro, scusa.

Faccio un esempio.

Tabella 1
- ID1
- NomePartecipante

Tabella 2
- ID2
- NomeCorso
- DataCorso
- NomepartecipanteCorso

Ho provato a mettere in relazione Nomepartecipante - NomepartecipanteCorso ma mi da un errore vincolo di unicità.

Inoltre in questo modo non capisco come posso registrare chi è stato presente ad un dato corso.

Credo mi servidebbe una terza tabella dove mettere in relazione i corsi di tabella2 con i partecipanti di tabella1. Questa però dovrebbe avere record di lunghezza variabile a seconda del numero di partecipanti (o forse record molto lunghi con campi vuoti se non utilizzati).

Mi pare di star complicando le cose!!
LIbreoffice 3.5 - ubuntu 12.04
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: Registrare di partecipanti a eventi

Messaggio da gimbo_71 »

Io direi:

tabella 1 con:

id_corso
data_corso
argomento_corso

tabella 2 con

id_partecipante
id_corso
nome_e_cognome_partecipante

L'importante è che id_corso sulla tabella 1 sia anche la chiave primaria, mentre nella tabella 2 la chiave primaria sarà id_partecipante, così non ti dovrebbe più dare vincoli di unicità.
Quando creerai il formulario dovrai decidere se preferisci avere come principale la tabella corsi oppure quella partecipanti, mi spiego meglio: preferisci inserire tutti i partecipanti a un corso (caso 1) oppure tutti i corsi di ogni partecipante (caso 2)?
Penso sia più comodo il caso 1, perciò metti come principale la tabella corsi e come sottoformulario la tabella partecipanti legandole per id_corso, in questo caso il report si allungherà automaticamente al crescere dei partecipanti.

La terza tabella in realtà sarà il risultato della query.
LibreOffice 3.6.2.2 su Ubuntu 12.10
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Grazie, comincio a capire.

Posto l'abbozzo del database se avete tempo per aiutarmi ancora.

Ho fatto come mi hai detto e creato il form CorsiPeriodici:
- in questo devo inserire volta per volta i nomi dei partecipanti e tutti il database mi si forma sulla tabella Dipendenti

Ho provato a modificare:
- Ho creato le 2 tabelle CorsiPeriodici e Dipendenti perchè contengano i dati (devo inserire i corsi volta per volta; mentre i dipendenti sono prevalentemente stabili)
- ho creato la tabella Corsi_con_Dipendenti perchè sia il trait di union tra le 2 tabelle; sarà in questa che si registra il collegamento tra corsi e dipendenti (lo so mi avevi detto di utilizzare una query ma cosi mantengo pulite le altre tabelle).
- Ho creato un form CorsiPeriodici2 con Main la tabela dei corsi e sub quella composita (corsi_con_dipendenti), usando una listbox per recuperare e mostrare i nomi dei dipendenti.

Quello che non risco a fare ora è avere nel form CorsiPeriodici2 una lista di tutti i dipendenti inseriti da cliccare per far prima a iscriverli ai vari corsi (mi servirebbe tipo una tabella con checkbox).

Si può fare?

Grazie
Allegati
databaseFormazione.odb
(20.93 KiB) Scaricato 170 volte
LIbreoffice 3.5 - ubuntu 12.04
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: Registrare di partecipanti a eventi

Messaggio da gimbo_71 »

Perdona il ritardo.

Potresti anche provare con una soluzione meno elegante ma, forse, più pratica.

Crei l'evento e associ le presenze come semplice variabile booleana (si/no). Così avresti una tabella con in orizzontale le date dei corsi e in verticale le persone e giocando a battaglia navale hai i risultati. Poi, se ti servono, altri dati te li cerchi o con una query oppure con una vista.

Comunque mi sembra che il lavoro sia impostato bene e appena ho 2 minuti provo a mettere mano al tuo database e te lo rimando.

P.S. Non ti scusare se scegli una strada diversa da quella che suggerisco, io non conosco ne perfettamente le tue esigenze ne ho la certezza di riuscire meglio di altri.
LibreOffice 3.6.2.2 su Ubuntu 12.10
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Grazie

Avere una tabella come quella di cui parli sarebbe ottimo.

Tra l'altro è simile al foglio di Calc che sto utilizzando.

La messa in pratica però mi sfugge ancora.

Intanto posto il db con alcuni aggiornamenti

Ora posso sciegliere i partecipanti ad un corso e vedere contestualmente quelli già presenti.

Il passo successivo sarebbe avere un elenco completo dei dipendenti dove cliccare per iscriverli senza dover pasasre al record successivo del subform ogni volta. Qualcosa tipo lista con checkbox associato.
Allegati
databaseFormazionev2.odb
(14.93 KiB) Scaricato 142 volte
LIbreoffice 3.5 - ubuntu 12.04
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: Registrare di partecipanti a eventi

Messaggio da gimbo_71 »

Per fare questo crei una tabella con i nomi dei possibili partecipanti impostati come nomi dei vari campi e come tipo di campo metti booleano, un campo lo metti come data, un come id_corso, altri come vuoi.

Quando crei il formulario metti come campi scrivibili quelli data, ecc e come pulsanti di spunta i campi che hanno il nome delle persone.
LibreOffice 3.6.2.2 su Ubuntu 12.10
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Se non ho capito male così se devo aggiungere un dipendente devo modificare la struttura della tabella aggiungendo un campo.

Non esiste un modo per fare questo prelevando i nomi da un'altra tabella?
LIbreoffice 3.5 - ubuntu 12.04
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Ho fatto qualche passo avanti

Ora ho una lista che si aggiorna se aggiungo dipendenti ed una che si aggiorna quando li iscrivo.

Il processo di iscrisione è ancora macchinoso (devo andare ad un nuovo record e selezionare il dipendente); inoltre se per errore seleziono la I rida mi si cancellano tutti.

Hai consigli?
Allegati
databaseFormazionev3.odb
(17.04 KiB) Scaricato 113 volte
LIbreoffice 3.5 - ubuntu 12.04
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Ho risolto il problema della cancellzione dei record già inseriti mettenso a 'NO' Allow modifications del subform.

Sono anche riuscito a avere una lista dei partecipanti già iscritti al corso che si modifica quando aggiungo un partecipanre ed è specifica per ogni corso.

Allego il file
Allegati
databaseFormazionev4.odb
(17.79 KiB) Scaricato 128 volte
LIbreoffice 3.5 - ubuntu 12.04
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Registrare di partecipanti a eventi

Messaggio da vladko »

hai fatto un bel lavoro :)
ora, il mio pensiero è che
  • manca la tabella -->titolo corso<-- con id e titolo che alimenta il primo controllo
    modificare la tabella -->corso partecipanti<-- eliminare titolocorso e inserire idtitolocorso che prende da tb titolo corso
perchè dico questo? per evitare a una nuova data di inserire sempre il titolo e questo evita la ridondanza di dati che è il principio dei database
poi con formulari e caselle di riepilogo si usano per inserire i dati come bene hai capito
complimenti
fai sapere grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Ho seguito il tuo consiglio (che tra l'altro era già un organizzazione che avevo in mente) con una piccola modifica, i corsi li raggruppo su un'altra tabella per TIPO.

Ho un altro problema. Nel FORM CorsiPeriodici2 la lista sulla sinistra potrebbe crescere molto e vorrei poterla dividere un colonne per mantenerla sulla stessa pagina ma non ci riesco. Suggerimenti?

Grazie
Allegati
databaseFormazionev7.odb
(54.79 KiB) Scaricato 145 volte
LIbreoffice 3.5 - ubuntu 12.04
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Registrare di partecipanti a eventi

Messaggio da vladko »

una select che filtra alcune iniziali può aiutare?

Codice: Seleziona tutto

SELECT "NomeCognome" AS "NomeCognome", "ID" AS "ID" FROM "Dipendenti" WHERE ( "NomeCognome" LIKE 'a%' OR "NomeCognome" LIKE 'b%' OR "NomeCognome" LIKE 'c%' OR "NomeCognome" LIKE 'd%' OR "NomeCognome" LIKE 'e%' )
naturalmente è solo un indizio :D
fai sapere grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Grazie, ottima idea.

Sto provando utilizzando BETWEEN.. funziona ma con 1 problema. non riesco a vedere le 'a'.

Funziona prendendo il range indicato, esclude il primo limite e include il secondo.

Allego al query

Codice: Seleziona tutto

SELECT "NomeCognome" FROM "Dipendenti" WHERE "NomeCognome" BETWEEN 'a%' AND 'm%' ORDER BY "NomeCognome" ASC.
Vedo dalla 'b' alla 'l'. E non riesco a trovare cosa c'e prima della 'a'.

Spero di essere stato chiaro
Ultima modifica di magal il martedì 20 novembre 2012, 17:07, modificato 1 volta in totale.
LIbreoffice 3.5 - ubuntu 12.04
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Registrare di partecipanti a eventi

Messaggio da vladko »

una preghiera,
quando si inserisce codice meglio usare il tag code, grazie
ora veniamo al tuo problema,
puoi provare a togliere %

Codice: Seleziona tutto

SELECT "NomeCognome" FROM "Dipendenti" WHERE "NomeCognome" BETWEEN 'a' AND 'm%' ORDER BY "NomeCognome" ASC
fai sapere grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
magal
Messaggi: 15
Iscritto il: martedì 23 ottobre 2012, 16:07

Re: Registrare di partecipanti a eventi

Messaggio da magal »

Perfetto funziona.

I caratteri sono ordinati con le minuscole prima delle maiuscole.

Ecco il codice definitivo.

Codice: Seleziona tutto

 SELECT "NomeCognome" FROM "Dipendenti" WHERE "NomeCognome" BETWEEN 'a' AND 'L' ORDER BY "NomeCognome" ASC 
LIbreoffice 3.5 - ubuntu 12.04
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Registrare di partecipanti a eventi

Messaggio da vladko »

:super:
se tutto funziona inserire risolto nel ttolo del primo messaggio
grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Rispondi