Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Come eliminare informazioni tabelle collegate d'un botto?

52 views
Skip to first unread message

RobertoA

unread,
Sep 3, 2019, 4:37:27 AM9/3/19
to
Progetto Access2013, su file mdb
Per 'scollegare' le tabelle collegate, uso il solito codice

For Index = CurrentDb.TableDefs.Count - 1 To 0 Step -1
DoCmd.DeleteObject acTable, CurrentDb.TableDefs(Index).name
Next Index

Le informazioni relative alle 'tabelle collegate' Access le terra' da
qualche parte

La domanda e': e' possibile eliminare le informazioni relative alle
tabelle collegate tutto d'un colpo (senza ciclare)?

Oppure (che e' la stessa): dove sono memorizzate le informazioni
relative alle tabelle collegate di Access?

@Alex

unread,
Sep 3, 2019, 9:14:40 AM9/3/19
to
Questa Tabella misteriosa ti dice qualche cosa...?

SELECT MsysObjects.Name
FROM MsysObjects
WHERE (((Left$([Name],4))<>"Msys")
AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

Tuttavia... canecellare questi Records, non equivale a cancellare gli Oggetti Tabledef con proprietà Connect...

Vedi tu...

@Alex

RobertoA

unread,
Sep 3, 2019, 10:24:29 AM9/3/19
to
Ah, non avevo mai curiosato entro i Msys...
Type 4 per le tabelle
Sembrano vedersi tutti i nomi tabelle
Dici che se sgancello tutto dalla MsysObjects che abbia type=4 non
eguivale al tabledef.delete?
Ho provato a cancellare a mano, da tabella aperta, ma dice 'accessibile
solo in lettura'

@Alex

unread,
Sep 3, 2019, 11:05:10 AM9/3/19
to
Appunto...
Devi cancellare gli oggetti fisicamente.

@Alex

RobertoA

unread,
Sep 3, 2019, 12:02:19 PM9/3/19
to
Possibile non ci sia un barbatrucco?
Non mi piace arrendermi cosi' rapidamente

Bruno Campanini

unread,
Sep 4, 2019, 6:10:44 AM9/4/19
to
RobertoA presented the following explanation :
> Progetto Access2013, su file mdb
> Per 'scollegare' le tabelle collegate, uso il solito codice
>
> For Index = CurrentDb.TableDefs.Count - 1 To 0 Step -1
> DoCmd.DeleteObject acTable, CurrentDb.TableDefs(Index).name
> Next Index
>
> Le informazioni relative alle 'tabelle collegate' Access le terra' da qualche
> parte
>
> La domanda e': e' possibile eliminare le informazioni relative alle tabelle
> collegate tutto d'un colpo (senza ciclare)?
No.

> Oppure (che e' la stessa): dove sono memorizzate le informazioni relative
> alle tabelle collegate di Access?
Sono qui:
SELECT Name
FROM MSysObjects
WHERE Type=6;

ma questa non le cancella:
DELETE Name, Type
FROM MSysObjects
WHERE Type=6;

questa invece le cancella tutte:
For Each i In CurrentDB.TableDefs
If i.Connect <> "" Then
DoCmd.DeleteObject acTable, i.Name
End If
Next

Bruno

@Alex

unread,
Sep 4, 2019, 12:37:17 PM9/4/19
to
Quando si può...

questa invece le cancella tutte:
Dim mDB As DAO.Database
Sim mTdf As DAO.Tabledef

For Each mTdf In mDB.TableDefs
If mTdf.Connect <> "" Then
mDB.Tabledefs.Delete mTdf.Name
End If
Next
mDB.TableDefs.Refresh
Set mDB=Nothing

Se le tabelle sono linkate via ODBC la discriminazione delle Linked puo essere fatta cosi:


If (mTdf.Attributes And dbAttachedTable) = dbAttachedTable THEN
....Delete mTdf.Name
End if

Meglio scrivere il giusto...

@Alex
0 new messages