Newsgroup: it.comp.appl.access
Titolo: come è possibile migliorare questo codice VBA ?

Salve a tutti.
per cortesia, ho bisogno di un piccolo aiutino:
    'le seguenti 8 righe:
    'DoCmd.OpenTable "Fatture2", acViewNormal, acEdit
    'DoCmd.RunCommand acCmdSelectAllRecords
    'DoCmd.RunCommand acCmdCopy
    'DoCmd.RunCommand acCmdClose
    'DoCmd.OpenTable "Fatture", acViewNormal, acEdit
    'DoCmd.RunCommand acCmdSelectAllRecords
    'DoCmd.RunCommand acCmdPaste
    'DoCmd.RunCommand acCmdClose
come possono essere sostituite da un'unica riga di codice contenente la 
CurrentDb.Execute ?
come devo scrivere questa riga di codice ?
Grazie
Ciao
Luciano 


Currentdb.execute "INSERT INTO  FATTURE    SELECT  FATTURE2.*  FROM 
FATTURE2  WHERE  1=1 "
Ho lasciato il where, anche se senza effetto, cosi' se lo modificassi 
potresti selezionare solo alcuni record di partenza
Preso da 
http://support.microsoft.com/kb/110588/it
Ciao
RobertoA 

 ha scritto nel messaggio 
news:4d5a277a$1...@newsgate.x-privat.org...

Purtroppo con questa soluzione non ottengo il risultato sperato.
Mi spiego meglio:
'Nella tabella Fatture ho cancellato dei record errati. Dopodich�, con la 
seguente routine, copio (ci� che rimane) la tabella Fatture in Fatture2 con 
il seguente codice:
    DoCmd.CopyObject , "Fatture2", acTable, "Fatture"
'elimino poi tutti i record della tabella Fatture con
    CurrentDb.Execute "DELETE * FROM Fatture"
'ed azzero il contatore con il seguente codice:
    CurrentDb.Execute "ALTER TABLE Fatture ALTER COLUMN IDFatture 
COUNTER(1,1);"
'la fase successiva prevede (con queste ultime otto righe di codice)  la 
copia dei record contenuti nella tabella Fatture2 nella tabella Fatture, che 
ho risolto in questo modo.
      DoCmd.OpenTable "Fatture2", acViewNormal, acEdit
      DoCmd.RunCommand acCmdSelectAllRecords
      DoCmd.RunCommand acCmdCopy
      DoCmd.RunCommand acCmdClose
      DoCmd.OpenTable "Fatture", acViewNormal, acEdit
      DoCmd.RunCommand acCmdSelectAllRecords
      DoCmd.RunCommand acCmdPaste
      DoCmd.RunCommand acCmdClose
'Il risultato ottenuto � esatto perch� cos� facendo, avendo azzerato il 
contatore di Tabelle, i record vengono copiati con una nuova ed esatta 
sequenza numerale.
Domanda:
Per cortesia, come posso sostituire le ultime otto righe con un codice VBA 
migliore avente le stesse funzionalit� ?
Grazie
Saluti
Luciano 

?"TecniCons sas"  ha scritto nel messaggio 
news:kmq6p.43885$7b4....@tornado.fastwebnet.it...

'Nella tabella Fatture ho cancellato dei record errati. Dopodiché, con la
seguente routine, copio (ciň che rimane) la tabella Fatture in Fatture2 con
il seguente codice:
    DoCmd.CopyObject , "Fatture2", acTable, "Fatture"
'elimino poi tutti i record della tabella Fatture con
    CurrentDb.Execute "DELETE * FROM Fatture"
'ed azzero il contatore con il seguente codice:
    CurrentDb.Execute "ALTER TABLE Fatture ALTER COLUMN IDFatture
COUNTER(1,1);"
'la fase successiva prevede (con queste ultime otto righe di codice)  la
copia dei record contenuti nella tabella Fatture2 nella tabella Fatture, che
ho risolto in questo modo.
      DoCmd.OpenTable "Fatture2", acViewNormal, acEdit
      DoCmd.RunCommand acCmdSelectAllRecords
      DoCmd.RunCommand acCmdCopy
      DoCmd.RunCommand acCmdClose
      DoCmd.OpenTable "Fatture", acViewNormal, acEdit
      DoCmd.RunCommand acCmdSelectAllRecords
      DoCmd.RunCommand acCmdPaste
      DoCmd.RunCommand acCmdClose
'Il risultato ottenuto č esatto perchč cosě facendo, avendo azzerato il
contatore di Tabelle, i record vengono copiati con una nuova ed esatta
sequenza numerale.
Domanda:
Per cortesia, come posso sostituire le ultime otto righe con un codice VBA
migliore avente le stesse funzionalitŕ ?
Grazie
Saluti
Luciano
__
Ciao l'azzeramento del contatore lo hai con l'alter table che hai indicato, 
quindi se lo vuoi devi tenerlo.
Poi con la insert di RobertoA hai quel copia incolla che fai tu
MA