Newsgroup: it.comp.appl.access
Titolo: Clonare i dati tra due tabelle (3)

Ciao,
Gli esami non finiscono mai!
Ho una tabella "Tbl1" con due campi "Data" e "Numero".
I numeri sono 21:
12;13;14;15;16;17;23;24;25;26;27;34;35;36;37;45;46;47;56;57;67
Ho un'altra tabella "Tbl2" con 21 campi "A1" : "A21".
Per comodità la "Tbl2" la riduco a 4 campi "A1 : A4".
La Tbl1 la visualizzo tramite maschera e sottomaschera in modo da
avere per ogni data in maschera principale tanti records di
"Numero"in
sottomaschera appartenenti alla stessa data.
Data
01/01/2008
 Numero
    12
    13
    14
 Data
02/01/2008
 Numero
    12
    15
 Data
03/01/2008
 Numero
    13
    14
ecc...
Quello che dovrei fare è prendere i numeri del campo "Numero" della
Tbl1 ed inserirli nella "Tbl2" in questo modo:
tutti i numeri (records) appartenenti alla prima data (primo record)
uguali al n.12 vanno a finire
nel primo record della "Tbl2" nel campo A1, il n.13 in A2, il n.14 in
A3 ecc...( in altre parole, così come sono elencati i 21 numeri,
rispettivamente vanno a finire in A1 : A21), tutti i numeri
appartenenti alla
seconda data vanno a finire nel secondo record della "Tbl2" allo
stesso modo e così
via.
Ad es:
A1  A2  A3  A4
12  13   14
12               15
      13   14
Come posso fare?
Grazie Vladimiro.

 Come posso fare?
Con una query pivot?
TRANSFORM First(tbl1.Numero) AS Numero
SELECT tbl1.Data
FROM tbl1
GROUP BY  tbl1.Data
PIVOT tbl1.Numero;
cia'
Max


Ciao Max,
la query va bene, solo che ho sbagliato a non specificare il seguito.
Il seguito sarebbe quello di eliminare i numeri doppioni in questo
modo;
primo record: visualizza tutti i numeri
secondo record elimina i numeri doppioni riferiti al primo record
terzo record elimina i doppioni riferiti al primo ed al secondo record
e così via
( se guardi il post dell'altro giorno "Funzione Replace" può darsi che
riesci a capire meglio quello di cui ho bisogno).
Fammi sapere.
Grazie Vladimiro.

 riesci a capire meglio quello di cui ho bisogno).
Non so se ho capito bene (ma questo mi succede spesso...), se e' come
penso ti conviene prima di tutto isolare la prima occorrenza di
ciascun numero:
SELECT min(Data) as PrimaData, Numero FROM tbl1 GROUP BY Numero
e poi su questa roba fai la pivot.
cia'
Max


No, no, va bene la query a campi incrociati così come l'hai fatta.
Solo che a questo punto, se non arrivano altre idee, debbo inventarmi
chissà che cosa!
Ci proverò... comunque grazie mille sei stato molto gentile :-)
Vladimiro.

vlad...@alice.it
 ha scritto:

Non ci giurerei di aver capito cosa ti serve 'sta volta.
Cosa c'e' di differente rispetto all'ultima "clonazione"?
Ho la vaga impressione, pero', che ti servano 90 caselle (da quello che 
immagino).
--
ac

 - Mostra testo citato -
Ciao Alessandro, provo a spiegarmi meglio.
In Tbl1 possono solo presentarsi i seguenti 21 numeri:
12;13;14;15;16;17;23;24;25;26;27;34;35;36;37;45;46;47;56;57;67
Siccome l'ultimo numero è il 67 potrei usare lo stesso sistema che ho
usato nei 90 numeri, cioè a prescindere dal valore del numero,
inserirli nei primi campi della Tbl2.
A1  A2  A3  A4
24  35   23
12  36         24
46  56
in questo caso però, essendo in totale 21 numeri, sarebbe meglio usare
lo stesso sistema dei 45 numeri dicendo al programma che il n.12 deve
andare in A1, il n.13 in A2, il numero14 in A3 ... il n. 67 in A21.
Esempio A1 : A4:
A1  A2  A3  A4
12  13   14
12               15
      13   14
Ciao Vladimiro.
.

 - Mostra testo citato -
Debbo abbandonare questo tipo di inserimento o sono stato poco chiaro
nell'esporre il problema?
Mi fate sapere?
Grazie Vladimiro.

vlad...@alice.it
 ha scritto:
[cut]
Dim strNumeri
strNumeri="12;13;14;15;16;17;23;24;25;26;27;34;35;36;37;45;46;47;56;57;67;"
  Dim iNext as long
  do until myrs.eof
    wkData = myrs!data
     rstbl2.addnew
     do until myrs.eof or wkdata <> myrs!data
            iNext = (instr(strNumeri,myrs!Numero & ";") mod 3)+1
            tstbl2("A" & iNext) = myrs!Numero
      myrs.movenext
      if myrs.eof then exit do
     loop
     rstbl2.update
  loop


 - Mostra testo citato -
Ciao Alessandro ci avevo provato pure io con l'array senza risultato;
però con il tuo codice succede la stessa cosa, cioè tutti i dati si
incolonnano solo in A2.
Solo tu puoi capirne il motivo.
Grazie Vladimiro.

 Grazie Vladimiro.
e' che mi sono sbagliato
    iNext = (instr(strNumeri,myrs!Numero & ";") \ 3)+1
Nota: questa routine non tglie i doppi, e quella e' proprio una backslash
--
ac

 - Mostra testo citato -
Ciao Alessandro, siccome non vedo la mia risposta, ti scrivo nuovamente
( scusandomi dell'eventuale replica).
Ti dicevo che tutti i numeri prelevati dalla Tbl1 me li incolonna solo
nel campo A2 della Tbl2.
Non saprei che fare.
Ciao Vladimiro

 - Mostra testo citato -
Non ho parole:
s e i u n f e n o m e n o
in 13 campi A1 : A13
campi d'oro naturalmente
:-)
Ciao Vladimiro.