C'è un modo in MS-Access per eliminare i dati in tutte le tabelle contemporaneamente. Eseguiamo un database in accesso, salviamo i dati ogni mese e poi cancelliamo tutti i dati in accesso. Ma richiede l'eliminazione di dati da molte tabelle. Non c'è un modo più semplice/più semplice per farlo?Come eliminare i dati in tutte le tabelle di accesso ms in una sola volta?
risposta
Perché non tenere una copia vuota del database a portata di mano. Alla fine del mese, salva il database esistente, quindi copia il database vuoto al suo posto.
Poiché si tratta di un'azione ripetitiva, sarebbe meglio se si facesse un semplice script SQL per farlo.
DELETE FROM <table1>;
DELETE FROM <table2>;
...
DELETE FROM <tablen>;
L'accesso MS non consente di avere più di una query DELETE nello script. –
La risposta di Craig è semplice e ragionevole. Se vuoi davvero una soluzione programmatica, il seguente script VBA cancellerà tutti i dati da ogni tabella escludendo le tabelle nascoste. Richiede DAO sia abilitato - in Visual Basic Editor, andare in Strumenti -> Riferimenti, e spuntare Microsoft DAO 3.6 Object Library, quindi OK:
Public Sub TruncateTables()
'Majority of code taken from a data dictionary script I can no longer source nor find the author
On Error GoTo Error_TruncateTables
Dim DB As DAO.Database
Dim TDF As DAO.TableDef
Dim strSQL_DELETE As String
Set DB = CurrentDb()
For Each TDF In DB.TableDefs
If Left(TDF.Name, 4) <> "MSys" Then
strSQL_DELETE = "DELETE FROM " & TDF.Name & ";"
DB.Execute strSQL_DELETE
End If
Next
MsgBox "Tables have been truncated", vbInformation, "TABLES TRUNCATED"
DB.Close
Exit_Error_TruncateTables:
Set TDF = Nothing
Set DB = Nothing
Exit Sub
Error_TruncateTables:
Select Case Err.Number
Case 3376
Resume Next 'Ignore error if table not found
Case 3270 'Property Not Found
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume Exit_Error_TruncateTables
End Select
End Sub
Evidenziare tutte le righe e quindi premere il tasto Canc sulla tastiera. Se l'accesso sta facendo quella cosa, è che non ti lascia andare in fondo, quindi vai in una cella e fai clic su Ctrl + freccia giù. Per evidenziare tutte le righe, evidenzia la riga superiore, quindi scorri fino alla riga inferiore e tieni premuto Maiusc mentre selezioni la riga inferiore. Tutte le righe dovrebbero essere evidenziate.
Ottima risposta da Alistair, sebbene debba essere aggiornata. La vecchia istruzione if causerebbe errori e la vecchia stringa dinamica non funzionerebbe su tabelle con nomi che hanno uno spazio. Tratterebbe un nome come "informazioni sulla persona" come "persona". Ho aggiornato il codice e reso un po 'più semplice l'aggiunta di eccezioni all'istruzione if, se si desidera che alcune tabelle conservino i propri dati.
Public Sub TruncateTables()
'Majority of code taken from a data dictionary script I can no longer source nor find the author
On Error GoTo Error_TruncateTables
Dim DB As DAO.Database
Dim TDF As DAO.TableDef
Dim strSQL_DELETE As String
Set DB = CurrentDb()
For Each TDF In DB.TableDefs
If Not (TDF.Name Like "MSys*" Or TDF.Name Like "~*" Or Len(TDF.Connect) > 0) Then
'This will prevent system, temporary and linked tables from being cleared
strSQL_DELETE = "DELETE FROM " & "[" & TDF.Name & "]"
DB.Execute strSQL_DELETE
End If
Next
MsgBox "Tables have been truncated", vbInformation, "TABLES TRUNCATED"
DB.Close
Exit_Error_TruncateTables:
Set TDF = Nothing
Set DB = Nothing
Exit Sub
Error_TruncateTables:
Select Case Err.Number
Case 3376
Resume Next 'Ignore error if table not found
Case 3270 'Property Not Found
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume Exit_Error_TruncateTables
End Select
End Sub
Attenzione! Questo cancellerà anche qualsiasi tabella collegata. Modificherò per aggiungere la condizione 'Len (tdf.Connect) = 0' per impedirlo. – mvbentes
Verranno eliminati tutti i dati di tutte le tabelle ad eccezione di tabelle di sistema
Dim T As TableDef
DoCmd.SetWarnings False
For Each T In CurrentDb.TableDefs
If T.Name Like "d2s_*" Then
DoCmd.RunSQL "DELETE * FROM " & T.Name
End If
Next T
DoCmd.SetWarnings True
Un altro approccio: (Basato su suggerimento del Christopher Duke)
Dim T As TableDef
DoCmd.SetWarnings False
For Each T In CurrentDb.TableDefs
If Not Left(T.Name, 4) = "MSys" Then
DoCmd.RunSQL "DELETE * FROM [" & T.Name & "]"
End If
Next T
DoCmd.SetWarnings True
- 1. Come ricaricare tutte le finestre vim in una sola volta?
- 2. Importa tutte le importazioni in eclissi in una sola volta?
- 3. Annulla tutte le richieste di aggiornamento in una sola volta?
- 4. Come eliminare tutte le tabelle utente?
- 5. Come aggiornare tutte le viste materializzate in Postgresql 9.3 in una sola volta?
- 6. Come eliminare i dati da più tabelle?
- 7. Come eliminare tutti gli alias git in una sola volta?
- 8. Come eliminare tutti i dati da tutte le tabelle in Rails?
- 9. Come eliminare tutte le tabelle in un database MySQL?
- 10. Come eliminare tutte le tabelle vuote in SQLite?
- 11. Come caricare tutte le pagine di report Crystal in una sola volta
- 12. Come eliminare tutti i vincoli di chiave esterna in tutte le tabelle?
- 13. Eliminare tutte le viste da SQL Server
- 14. Rimodellare valori multipli in una sola volta
- 15. Importa Ms accesso ai dati da tecniche di programmazione
- 16. Come disabilitare i vincoli per tutte le tabelle e attivarlo?
- 17. Inserire i dati in 3 tabelle alla volta utilizzando Postgres
- 18. Come eseguire il ciclo di tutte le tabelle in un MS Access DB
- 19. Come eliminare tutte le raccolte e i documenti in ArangoDb
- 20. H2 - Come troncare tutte le tabelle?
- 21. SQL: cancella tutti i dati da tutte le tabelle disponibili
- 22. query più liste in una sola volta
- 23. requestAccessToEntityType - una volta o tutte le volte?
- 24. Linq chiama una funzione una sola volta in una dichiarazione
- 25. Come minimizzare tutte le stored procedure SQL in una volta
- 26. Ripristina tutti i tavoli in una volta
- 27. Elimina dati da tutte le tabelle in MYSQL
- 28. di corrispondenza molteplici tipi di dati in una sola volta i costruttori
- 29. ORMLite ripristina tutte le tabelle
- 30. Come eliminare tutte le sessioni Flask?
Questo significa anche che si fa non è necessario compattare e riparare. – Fionnuala
Ottima risposta. Molto pragmatico. – JohnFx
E quindi è necessario replicare eventuali correzioni o miglioramenti sul database vuoto. Lo sto facendo da un po ', ma è molto incline agli errori, per non dire noioso. Darò a provare le altre soluzioni. – mvbentes