Newsgroup: it.comp.appl.access
Titolo: VBA - recordset aprire connessione a due tabelle

Ciao a tutto L'ng,
il codice scritto sotto non funziona.  Siccome non riesco a
debuggarlo, il problema sarà che ho aperto un'unica connessione al
database???
Io vorrei scorrere due tabelle, e confrontare due valori, se sono
uguali mi prende il campo4, copia il valore e lo trascrive nel campo
c15.
Private Sub Comando5_Click()
On Error GoTo Err_Comando5_Click
Dim db As Database
'Dim rstscrivi As ADODB.Recordset
Dim rstleggi As ADODB.Recordset
Dim tabscrivi As String
Dim tableggi As String
Dim valore As String
Set db = CurrentDb
'Set rstscrivi = New ADODB.Recordset
Set rstleggi = New ADODB.Recordset
tabscrivi = "TAB_RIEPILOGATIVO"
tableggi = "COMPLETA"
rstscrivi.Open tabscrivi, CurrentProject.Connection, adOpenDynamic,
adLockOptimistic
rstleggi.Open tableggi, CurrentProject.Connection, adOpenDynamic,
adLockOptimistic
rstscrivi.MoveLast
rstscrivi.MoveFirst
Do While Not rstleggi.EOF
If rstleggi!codice = 15 And rstleggi!idsim = rstscrivi!SIM Then
        valore = rstleggi!Campo4
        Debug.Print rstleggi!codice
        Debug.Print rstleggi!idsim
        Debug.Print rstscrivi!SIM
     Else
        Exit Sub
End If
Debug.Print valore
'Debug.Print rstscrivi!c15
rstscrivi!c15 = valore
rstscrivi.Update
rstscrivi.MoveNext
rstleggi.MoveNext
Loop
Set rstscrivi = Nothing
Set rstleggi = Nothing
MsgBox "Trascrizione Campo 15 completata"
Exit_Comando5_Click:
    Exit Sub
Err_Comando5_Click:
    MsgBox Err.Description
    Resume Exit_Comando5_Click
End Sub
Grazie a tutti,
Samantha


Ciao a tuttti,
la domanda, probabilmente da ignurant è
devo aprire un db x ogni recordset che mi serve?
Samantha

Samantha
Continuo a ritenere che una query di aggiornamento sia meglio ma 
dovresti chiarire meglio cosa c'è in TAB_Riepilogativo e in COMPLETA
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
---------------------------------------- 

 Perchè lo fai così e non usi invece una query di aggiornamento?
La query di aggiornamento, stamattina sono ripartita da qua. Ecco gli
step che ho fatto:
1) Creo una copia della tabella COMPLETA e la chiamo COMPLE4RIEP
2) creo una query di eliminazione dove elimino i  record con codice
1,2,3,90,91,92,93,94
3) Nelle relazioni creo una relazione tra:
Tab_riepilogativo.SIM  1-> a molti Completa.IDSIM
Ora le tabelle sono collegate, mentre prima nei codici sopra citati
(da 1 a 94) il campo Completa.IDSIM era vuoto, e quindi non riusciva a
creare una relazione.
Creo una query di accodamento:
INSERT INTO TAB_RIEPILOGATIVO ( C15 )
SELECT COMPLE4RIEP.Campo4
FROM TAB_RIEPILOGATIVO INNER JOIN COMPLE4RIEP ON
TAB_RIEPILOGATIVO.SIM=COMPLE4RIEP.IDSIM
WHERE (((COMPLE4RIEP.CODICE)=15));
Ma quando l'avvio mi arriva l'errore:
Impossibile accodare la query di accodamento, numero di record non
aggiunti alla tabella a causa di violazione di chiave:655;
In effetti, io il TAB_RIEPILOGATIVO ho 1013 SIM = record, mentre i
valori del codice 15 sono solo 655.
Questo perchè il file da dove importo i dati, se un valore è pari a
zero, viene omesso.
Dunque, dovrei dire alla tabella di accodamento, che se 15 non esiste
per quella SIM, il valore deve essere pari a zero.
Se provo con una tabella di aggiornamento, come faccio a dirgli che il
valore in Tab_riepilogativo.C15 deve essere uguale a
Comple4Riep.Campo4 ?
Come devo costruire la query di aggiornamento??
UPDATE TAB_RIEPILOGATIVO INNER JOIN COMPLE4RIEP ON
TAB_RIEPILOGATIVO.SIM = COMPLE4RIEP.IDSIM SET
WHERE (((COMPLE4RIEP.CODICE)=15));

La tabella Completa si presenta così
328010XXXX	4	328010XXXX
328010XXXX	5	SMS                        	NON CONSEGNATO
463393326XXX      	20060930	13.33.55	0.00.00	0,01
328010XXXX	5	SMS SERVIZI INTERATTIVI    	I-BOX: SMS
49XXX             	20061002	9.15.43	0.00.00	0
328010XXXX	5	PERSONALE VS AOM           	RADIOM. ALTRO OPERATORE
3383751XXX        	20061002	16.51.53	0.00.15	0,0125
328010XXXX	15	Numero totale chiamate:	                     	661
328010XXXX	25	Durata totale chiamate:
00001:42:08
328010XXXX	35	Totale importo traffico generico utenza:	2,8024
328010XXXX	6	AZIENDALE DATI             	I-BOX
20061026	19.05.21	3.07.36	127	0,0322
328010XXXX	16	Numero totale chiamate:	                     	23
328010XXXX	26	Totale durata traffico dati utenza:
00082:15:25
328010XXXX	36	Totale pacchetti dati utenza:	                	6335
328010XXXX	46	Totale importo traffico dati utenza:	1,6083
328010XXXX	8	SERVIZI INTERATTIVI        	I-BOX: SMS
49XXX             	20061001	9.15.30	0	0
328010XXXX	18	Numero totale chiamate:
00000046
328010XXXX	28	Totale pacchetti servizi interattivi utenza: 	000000000
328010XXXX	38	Totale importo traffico servizi interattivi utenza:
000000000,0000
328010XXXX	37	Totale traffico
utenza:
4,4107
La tabella riepilogativa vorrebbe essere:
SIM          C15        c25        c35     c16
328XXXX    Valore    valore     valore  valore
per ottenere in un unico record i dati riepilogativi dove la
descrizione è totale, tenendo conto che ci sono oltre 1000 SIM.
Grazie infinite,
Samantha



Cacchio, in credi bi le ci sono riuscita!!!!
UPDATE TAB_RIEPILOGATIVO INNER JOIN COMPLE4RIEP ON
TAB_RIEPILOGATIVO.SIM = COMPLE4RIEP.IDSIM SET TAB_RIEPILOGATIVO.C15 =
COMPLE4RIEP.CAMPO4
WHERE (((COMPLE4RIEP.CODICE)=15));
quando ci penso troppo mi incasino...