Newsgroup: it.comp.appl.access
Titolo: Tabella verticale -> con vba trasformarla in orizzontale ? Possible ? imPossible is nothing..

 ha scritto nel messaggio
news:1182242042.1...@q69g2000hsb.googlegroups.com...
'ngiorno Sergio!!!
[risposta]
'ngiorno Samantha...
i passi su come procedere con questa operazione me li sono sognata di
notte, verso la mattina presto, ;)
[risposta]
Serata ristoratrice...
Qui ti copio una piccola porzione su come si presentano. Tieni
presente che erano 650 righe per questa unica SIM:
4 329051xx198
5 SMS                        463393326XXX
5 SMS SERVIZI INTERATTIVI    49XXX
5 SMS SERVIZI INTERATTIVI    49XXX
5 SMS                        3383751XXX
15 Numero totale chiamate: 661
25 Durata totale chiamate: 00001:42:08
35 Totale importo traffico generico utenza: 2,8024
6 AZIENDALE DATI             20061023
6 AZIENDALE DATI             20061024
6 AZIENDALE DATI             20061026
16 Numero totale chiamate: 23
26 Totale durata traffico dati utenza:
36 Totale pacchetti dati utenza: 6335
46 Totale importo traffico dati utenza: 1,6083
8 SERVIZI INTERATTIVI        49XXX
18 Numero totale chiamate: 1
28 Totale pacchetti servizi interattivi utenza:
38 Totale importo traffico servizi interattivi utenza: 0
37 Totale traffico utenza: 4,4107
Prime considerazioni che ho fatto:
1) I dati iniziano sempre con il campo 4 e finiscono sempre con il
campo 37
2) Se non ci sono chiamate, il campo 5 non è pari a zero ma non viene
presentato (lo stesso vale per il campo 6 e per il campo 8
3) se il campo 5 non c'è non esiste nemmeno il campo 15,25,35.
4) Per una SIM con 0 traffico c'è solo il campo 4 e il campo 37
Inizialmente pensavo di fare una query di accodamento, ma devo trovare
il modo, che dopo il campo 4 VBA(oSQL) deve controllare se esiste il
campo 5. Se esiste lo accoda, se non esiste lo crea con valore zero.
Al momento ho fatto la query che mi preleva i numeri di SIM:
INSERT INTO TBL_SIM ( sim )
SELECT [tabelladati_A].Campo2
FROM tabelladati_A
WHERE ((([tabelladati_A].Campo1)=4));
Questa del trovare i numeri di SIM è la parte più semplice, ora devo
impostare la query per estrarre  gli altri valori, sempre mettendo il
ciclo IF ISNULL(CAMPO1=15) THEN... per ogni campo che stanno tra il 4
e il 37.
E x fare questo devo trovare come fare sposare VBA+SQL  (mi piacciono
i lieti fine :D )
Devo trovare degli esempi (credo ce nesiano) nel newsgroup su come
richiamare in sql una funzione vba esterna.
Intanto grazie ebuona giornata!!!!
Samantha
[risposta]
A parte gli scherzi.
Io farei un'altra cosa; visto che i record non hanno un campo chiave
che li
accomuna alla SIM, io prima li marchio e poi li utilizzo come voglio.
Quindi se nella tabella con i dati ci crei un campo idSim (testo), poi
con
il codice:
Es.
Dim rst As New ADODB.Recordset
Dim xIdSim as string
rst.Open "nomeTab", CurrentProject.Connection, adOpenDynamic,
adLockOptimistic
Do while not rst.eof
    If rst!numero = 4 then
        xIdSim = rst!SIM
    end if
    rst!idSim = xIdSim
    rst.update
    rst.movenext
loop
rst.close
set rst = nothing
Il risultato sarà:
329051xx198 4 329051xx198
329051xx198 5 SMS                        463393326XXX
329051xx198 5 SMS SERVIZI INTERATTIVI    49XXX
329051xx198 5 SMS SERVIZI INTERATTIVI    49XXX
329051xx198 5 SMS                        3383751XXX
329051xx198 15 Numero totale chiamate: 661
329051xx198 25 Durata totale chiamate: 00001:42:08
329051xx198 35 Totale importo traffico generico utenza: 2,8024
...
329051xx198 38 Totale importo traffico servizi interattivi utenza: 0
329051xx198 37 Totale traffico utenza: 4,4107
329051xx199 4 329051xx199
329051xx199 5 SMS                        463393326XXX
329051xx199 5 SMS SERVIZI INTERATTIVI    49XXX
...
A questo punto potrai collegare i dati all'altra tabella con le SIM...
Ciao.
--
Sergio MAZZA

Samantha
si Sergino, grazie di esistere.. :-)
nnnnaggg a te... una ce n'era e te la sei beccata pure te!!!!!!
 se non fosse perchè sei un capellone, direi che è la pelata il tuo fascino!
rotfl :-D
--
Pablitomf

 ha scritto nel messaggio 
news:fbp0vu$chc$1...@tdi.cu.mi.it...

E io segno...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:1189086732.1...@22g2000hsm.googlegroups.com...
Ciao Sergio MAZZA,
Scusa del ritardo con cui rispondo, ma finalmente sono riuscita a fare
andare il DB, grazie per i tuoi preziosi consigli.
Sono riuscita ad assegnare a ogni record il numero di SIM
corrispondente, elaborando il codice che mi hai dato!!!!
Grazie ancora
Samantha
[risposta]
Bene...
Ciao.
-- 
Sergio MAZZA