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

Buongiorno a tutto Ng,
ho una tabella verticale strutturata come segue,
CAMPO 4    348/5812478
CAMPO 5    Chiamata di x minuti
CAMPO 5    Chiamata di x minuti
CAMPO 15  Totale durata chiamate
CAMPO 25  Costo chiamate x
CAMPO 6    Traffico dati x minuti
CAMPO 6    Traffico dati x minuti
CAMPO 16  Totale durata traffico dati
CAMPO 26  Costo traffico dati x
CAMPO 17  Totale costi x
In totale ho 900 nr. ditelefono. Ogni telefono può avere zero
chiamate, oppure zero traffico dati, o uno e anche l'altro.
La testa  del record inizia con CAMPO 4 e la fine con CAMPO 17
Posso mettere in una query codice VBA , che scorre la tabella e
operare da codice come con le maschere?
Perchè se fosse una maschera, aprirei  una connessione la db, con
recordsetclone leggo i record della maschera continua... ma in questo
caso non so come fare...
Come faccio a lanciare un VBA in una query ????
Io vorrei avere tutti questi dati in tabelle diverse. Tipo
TBL_SIM  (Qui ci metto il campo 4)
idSIM
SIM
TBL_CHIAMATE (Qui ci metto il campo 5)
id_call
idSIM
descrizione
ETC...
Grazie mille infinite
Samantha

 ha scritto nel messaggio news:1181913829.3...@m36g2000hse.googlegroups.com...
Buongiorno a tutto Ng,
ho una tabella verticale strutturata come segue,
CAMPO 4    348/5812478
CAMPO 5    Chiamata di x minuti
CAMPO 5    Chiamata di x minuti
CAMPO 15  Totale durata chiamate
CAMPO 25  Costo chiamate x
CAMPO 6    Traffico dati x minuti
CAMPO 6    Traffico dati x minuti
CAMPO 16  Totale durata traffico dati
CAMPO 26  Costo traffico dati x
CAMPO 17  Totale costi x
In totale ho 900 nr. ditelefono. Ogni telefono puň avere zero
chiamate, oppure zero traffico dati, o uno e anche l'altro.
La testa  del record inizia con CAMPO 4 e la fine con CAMPO 17
Posso mettere in una query codice VBA , che scorre la tabella e
operare da codice come con le maschere?
Perchč se fosse una maschera, aprirei  una connessione la db, con
recordsetclone leggo i record della maschera continua... ma in questo
caso non so come fare...
Come faccio a lanciare un VBA in una query ????
[risposta]
Qui non c'ho capito nulla.
Io vorrei avere tutti questi dati in tabelle diverse. Tipo
TBL_SIM  (Qui ci metto il campo 4)
idSIM
SIM
TBL_CHIAMATE (Qui ci metto il campo 5)
id_call
idSIM
descrizione
ETC...
Grazie mille infinite
Samantha
[risposta]
Qui č un po' piů chiaro.
Prima identifica i campo/record che contiene il numero SIM e li inserisci nella tabella TBL_SIM (ottenendo l'idSim). Il CAMPO 4 lo 
identifica sempre?
Poi, con gli stessi dati sopra, dovrai confrontare lo stesso campo (numero SIM) con quello appena inserito per prendere l'idSim, 
inserirlo nel campo idSIm in TBL_CHIAMATE insieme al campo descrizione.
Tutto questo sicuramente col codice...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Buongiorno SERGIO!!!
Grazie della risposta
la domanda è,
1) posso lavorare con codice VBA in una query?
2) In una query dove metto il  codice VBA ?
altrimenti dovrei trasformare in SQL quello che vorrei fare in VBA...
:) :D
Grazie mille
Samantha

 ha scritto nel messaggio 
news:1182158587.2...@g4g2000hsf.googlegroups.com...
Buongiorno SERGIO!!!
[risposta]
Buongiorno a te (alle 11:23!?)
Grazie della risposta
la domanda è,
1) posso lavorare con codice VBA in una query?
2) In una query dove metto il  codice VBA ?
[risposta]
Eheeee?! Non Marzulliamo.
Diciamo che in una query puoi inserire solo le istruzioni sql riconosciute 
dal motore (appunto) SQL; poi hai la possibilità di utilizzare qualche 
funzione VBA e cosa più importante puoi richiamare una (tua) funzione che 
esegue tutto il codice che vuoi.
Ma soprassediamo un attimo; quello che devi fare tu è inizialmente "non 
SQL".
altrimenti dovrei trasformare in SQL quello che vorrei fare in VBA...
[risposta]
E non credo che così tu risolva.
:) :D
Grazie mille
Samantha
[risposta]
La soluzione, in questo caso, è l'utilizzo congiunto di VBA e query; ma devi 
definire i passaggi da fare.
Te ne ho illustrati alcuni...
Ciao.
-- 
Sergio MAZZA 

Sergio MAZZA ha scritto:

'ngiorno Sergio!!!
i passi su come procedere con questa operazione me li sono sognata di
notte, verso la mattina presto, ;)
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

 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...







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