Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Cancellare Tabelle
Forum - Visual Basic 6 - Cancellare Tabelle

Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 18:22
Lunedì, 16/06/2014
Salve a tutti vorrei cancellare tutte le tabelle che si sono create in un determinato db, premetto che il codice che postero esegue in parte quello che vorrei realmente, nel senso che entra nel database trova qualche tabella e l' elimina, ma il problema è che non esegue l'intero processo lasciandomi tabelle

Dim cnV As New ADODB.Connection
Dim tbV As ADOX.Table
Dim xcV As New ADOX.Catalog

cnV.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\MIODATAB.mdb" '; Persist Security; Info = False; """

xcV.ActiveConnection = cnV

For Each tbV In xcV.Tables

If tbV.Name <> "MSysAccessObjects" And tbV.Name <> "MSysACEs" And tbV.Name <> "MSysObjects" And tbV.Name <> "MSysQueries" And tbV.Name <> "MSysRelationships" Then
xcV.Tables.Delete tbV.Name
End If

Next tbV
cnV.Close

suggerimenti ? grazie in anticipo

Ultima modifica effettuata da Aangelus il 16/06/2014 alle 18:24
PM Quote
Avatar
gibra (Normal User)
Pro


Messaggi: 155
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 16:58
Martedì, 24/06/2014
Puoi usare OpenSchema per recuperare tutte le informazioni sul database:

Utilizzo del metodo OpenSchema di ADO in Visual Basic
http://support.microsoft.com/kb/186246/it#top

Il tuo modo 'empirico' di determinare le tabelle di sistema non è corretto.

Grazie ad OpenSchema puoi invece determinare con precisione quali sono le tabelle di sistema, in cui nel recordset aperto puoi filtrarle così:

Codice sorgente - presumibilmente Delphi

  1. If rsSchema!TABLE_TYPE = "ACCESS TABLE" Then
  2.     Debug.Print "Tabella di sistema: " & rsSchema.Fields("TABLE_NAME").Value
  3. End If



Le tabelle le puoi eliminare utilizzando direttamente la connessione:

cnV.Execute "DROP TABLE " & sNomeTabella

Però tieni presente che oltre alle tabelle possono esservi dei vincoli nelle Relazioni, Indici, Chiavi esterne, ecc.
che non ti permettono di eliminare una tabella senza prima aver eliminati questi vincoli.

Qual'è il vantaggio di usare ADO rispetto ad ADOX ?
Che se devi eseguire queste azioni in computer 'esterni', ADOX potrebbe non essere installato, ed il codice falirebbe miseramente.
Mentre ADO è già instalato a partire da Windows 2000 e successivi.


PM Quote
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 20:02
Lunedì, 30/06/2014
Ciao gibra grazie del consiglio come sempre molto utile, volevo farti dei complimenti speciali per gli approfondimenti in più che hai utilizzato COMPLIMENTI :k:

PM Quote