ACCESS - Copia tra due tabelle

mercoledì 25 agosto 2004 - 16.13

bornslippy Profilo | Newbie

Dim rs As DAO.Recordset
Dim rsapp As DAO.Recordset
Dim DB As DAO.DataBase

Set DB = CurrentDb
Set rs = DB.OpenRecordset("SELECT * FROM tblFornitori")
Set rsapp = DB.OpenRecordset("SELECT * FROM tblAppFornitori")
For I = 1 To cstNumFields
rsapp.Edit
rsapp.Fields(I).Value = rs.Fields(I).Value
rsapp.Update
Next I

Tramite questo codice riesco a copiare solo il primo record dalla tabella Fornitori alla tabella AppFornitori. Come posso fare per copiare tutti i record?

Brainkiller Profilo | Guru

E' un'operazione che esegui una tantum oppure il tuo software dovrà eseguire questa operazione più volte nel tempo ?
Non escludo che si possa fare anche direttamente in SQL con una query di accodamento piuttosto che ricorrere a 10 righe di codice VBA.

ciao
david

bornslippy Profilo | Newbie

Ogni volta che devo annullare le modifiche dei dati contenuti in una tabella. L'idea è quella di memorizzare prima di eventuali modifiche i dati contenuti nella tabella originale in quella di appoggio in modo tale se annullo le modifiche (con un opportuno pulsante) posso recuperare tutti i dati andanto a copiare la tabella di appoggio su quella originale.

Ho migliorato il codice come segue:While Not rs.EOF
For I = 1 To cstNumFields
rsapp.Edit
rsapp.Fields(I).Value = rs.Fields(I).Value
rsapp.Update
Next I
rs.MoveNext
Wend

Concettualmente credo che sia giusto ma non funziona penso per vari motivi.
Per prima se la tabella AppFornitori è vuota quando esegue l'istruzione rsapp.Edit da il seguente messaggio "Nessun record corrente". Supponiamo che questa tabella abbia un record definito; in tal caso succede che i vari record di tblFornitori vengono sempre copiati sul medesimo record di tblAppFornitori in quanto dovrei eseguire anche l'istruzione rsapp.MoveNext ma anche in questo caso si ripresenta il problema sopra accennato.
La soluzione intuitivamente sembrerebbe che ogni volta che avanzo in tblFornitori crea un nuovo record (possibilmente vuoto) in tblAppFornitori e che questo diventi quello corrente per poi essere aggiornato con i dati contenuti nell'altra tabella. Il punto è esiste una istruzione VB che mi permetta di fare questo.
Mi rendo conto di essere stato molto contorto. GRAZIE

Bronzo Profilo | Junior Member

Perché non fai una storedquery in access che si occupa di copiare i dati da una tabella d un'altra (queri di accodamento se vuoi aggiungerli di update se li vuoi sovrascriverli) e poi in vb non richiami semplicemente la storedquery?!

Ciao ;)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5