Newsgroup: it.comp.appl.access
Titolo: Foglio excel con n colonne

Ciao a tutti,
devo generare un foglio excel tramite una query che suppongo dover 
essere a campi incrociati, ma non sono riuscita a costruirla.
Ho una tabella cantenente le timbrature di alcuni dipendenti nel formato
id_dipendente, data, senso di transito,ora
ovviamente ciascun dipendente può fare giornalmente un numero n di 
timbrature (forse potrei pensare di fissarlo a max 20)
Non è detto che la sequanza sia sempre perfetta (Ent,Usc,Ent,Usc), 
perchè potrebbe esserci un buco.
Vorrei generare un foglio excel dove per ogni dipendente e per ogni 
giorno ci siano sulla stessa riga tutte le loro timbrature
es.
id 001, 10/01/07  E 8.00 U9.00
id 001, 11/01/07  E 8.00 U9.00 E10.00 U11.00 E12.00 U13.00
id 002, 10/01/07  E 8.00            E11.00
etc.
qualcuno può darmi un suggerimento su come impostare la query?
Per me il problema è che non so a priori qual è il massimo numero di 
transiti (quindi non so il numero di colonne) e che non so come 
'saltare' una colonna se trattasi di 2 transiti dello stesso tipo 
consecutivi
ciao e grazie
Nicoletta

 ha scritto nel messaggio 
news:45c4c89e$0$2247$4faf...@reader3.news.tin.it...

E se mettessi in un unico record tutte le timbrature in questo formato?:
Dipendente1    02/02/2007    Ent-08.00    Usc-14.00    Ent-20.30 
Usc-22.28    ecc.
Ciao, Carlo 

Carlo Costarella ha scritto:

come faccio a metterle in un unico record se non so quante possono essere?
Nicky

 Nicky
La mia domanda tendeva a sapere se questa struttura potrebbe andare bene, in 
pratica in un unico campo memo scriveresti il tutto;
poi vediamo come si può fare.
Non che non si possa fare con una query "dinamica", ma solo per proporti una 
strada diversa.
Come la metti con i turni che entrano un giorno e smontano il successivo?
Ciao, Carlo 

Carlo Costarella ha scritto:

fortunatamente non ho giornate a cavallo della mezzanotte, per il resto 
ho la tabella come da primo post e il risultato da ottenere è quello di 
una timbratura in ogni colonna del foglio tenendo conto
dei transiti non consecutivi. Il resto è libero ad ogni interpretazione
ciao
Nicky


Dunque:
IDDip    DATA   ORAEnt1    ORAUsc1    ORAEnt2    ORAUsc2  ecc...
Si può fare ma risulta complesso l'algoritmo per le variabili possibili...ci 
vuole mezza giornata (almeno per me).
Una variabile fra tutte: se il dipendente omette una timbratura in entrata o 
in uscita?
Se non riesci e dietro pagamento di una lauta ricompensa (sic), vedrò cosa 
posso fare.
Ciao, Carlo 

 vuole mezza giornata (almeno per me).
Ciao Carlo, suggerisco una ipotesi... siccome all'OP occorre solo
presentare i dati in Excel strutturati in quel modo, potrebbe
"bastare" la tabella che ha già e "un po'" di codice , laddove:
- una select fa una distinct degli ID e li mette in una matrice, da
ciclare.
- per ogni id vengono recuperate tutte le righe ordinate per data,
orario.
- per ogni data viene creato un 'range orizzontale' in Excel, composto
da id, data, e tutte le timbrature corrispondenti. Avendo il recordset
già ordinato per data, ad ogni cambiamento della data viene creata una
riga. Ed essendo ordinato anche per orario, questi dovrebbero venire
in ordine ascendente o discendente.
Se non mi sta sfuggendo qualcosa mi sembra l'unico modo di risolvere
il problema dell'OP.
Concordo sulla mezza giornata (almeno)... se l'output fosse su file di
testo sarebbe molto più semplice.
Che ne pensi?
ciao,
Panathos

 vuole mezza giornata (almeno per me).
Scusa Carlo, provo a suggerire una ipotetica soluzione. Se a lui serve
solo l'output in Excel strutturato in quel modo, allora si potrebbe
creare una tabella contenente ID_dipendente, data_timbratura,
tipo_timbratura (E oppure U), orario
Il resto lo si dovrebbe fare tutto da codice:
- una select fa una distinct sugli ID e prepara una matrice da
ciclare.
- per ogni ID si  recuperano le righe con le timbrature corrispondenti
ordinandole per data.
- si costruisce la "riga orizzontale" con id, data e  timbrature
corrispondenti, preparando il range da scrivere in Excel.
E' una ipotesi, eh, ma mi pare l'unico modo di gestire un numero di
timbrature variabile ed ottenere in Excel il tipo di output che vuole
l'OP.
Concordo che non è proprio banale, in termini di tempo per scrivere il
codice (più che altro per gestire il "lato Excel", fosse un file di
testo da ottenere in output sarebbe molto più semplice in quanto
basterebbe concatenare le stringhe).
ciao,
Panathos
---------------------------
Potrebbe essere una soluzione...ma con qualche modifica. Per esempio 
id_Dipendente e Data sono sempre gli stessi nel senso che lei ha bisogno di 
farlo per ciascun dipendente e per una data bene precisa. Verso, e orario 
sono superflui perchè è sufficiente dare al campo il "verso" + 1 con valore 
l'orario trovato, così per l'uscita: Verso + 1 e orario, e così di seguito.
Rimane il problema delle timbrature vuote.
Io stavo lavorando a una soluzione tutta da codice che crea una tabella di 
appoggio aggiungendo n field, corrispondenti ai valori che preleva da una 
query con i due criteri già impostai: ID_Dip e Data.
Certo possono esserci anche altre soluzioni...ma tutte con un po' di lavoro.
A tempo perso...si potrebbe anche fare.
Vediamo che dice l'interessata.
Ciao, Carlo

 Vediamo che dice l'interessata.
Se te ne fai carico, non potrà che dire un sostanzioso grazie :-)
ciao,
Panathos

 Vediamo che dice l'interessata.
Se te ne fai carico, non potrà che dire un sostanzioso grazie :-)
-------------------------
E' esattamente quello che dirà l'autore del "lavorino" quando vedrà 
l'assegno.
O cronos didascalos estin tu antropon...
Scherzi a parte, in questo NG si lavora free...ma non tutti i lavori si 
possono fare immediatamente.
ciao,
Panathos
Ciao, Carlo
P.S. hai origini greche?

 P.S. hai origini greche?
No sono bolognese :-) e non ho mai studiato il greco, quindi non posso
risponderti (di quello che hai scritto deduco a malapena tempo,
descrizione, uomo...). Della grecia apprezzo molto la storia, la
cucina ed alcune musiche tradizionali... mai dedicato seriamente alla
lingua.
ciao,
Panathos

Panathos ha scritto:

io adoro le spiagge :-)
sto cercando di prendere spunto da tutti i vostri post, anche se 
tutt'oggi l'ho passato a curare i bambini con l'influenza!!!!!
ciao
nicky

 tutt'oggi l'ho passato a curare i bambini con l'influenza!!!!!
Auguri di rapida guarigione... ma ora, come non aiutare una mamma
premurosa? L'hai scritto apposta, confessa :-)
(P.S.: nei gruppi c'è anche la regola di evitare i messaggi off-topic
come questo che ho scritto, non riguardante Access :-))
ciao,
Panathos

 P.S. hai origini greche?
No sono bolognese :-) e non ho mai studiato il greco, quindi non posso
risponderti (di quello che hai scritto deduco a malapena tempo,
descrizione, uomo...).
"Il tempo è maestro degli uomini"...
Dal greco e dal latino derivano praticamente tutte le parole italiane.
Pensa a "cronos", cronometro, tempo cronometrato, cronografo...;
"antropos", antropologia, antropomorfo e tutti i derivati...
"didascalos", qui nell'accezione di maestro, insegnante;
Io provengo da studi classici ma la Grecia l'ho vista solo in tv...chissà 
forse un giorno riuscirò a farci una sia pur breve vacanza, magari in una 
delle tante isolette.
Ciao, Carlo

 delle tante isolette.
Te lo auguro :-)
ciao,
Panathos