Newsgroup: it.comp.appl.access
Titolo: Controllare l'esistenza di una tabella

Come posso controlare se la tabella "pippo" esiste per cancellarla, se c'č,
per poterne creare una con lo stesso nome con i dati aggiornati?
Grazie in anticipo.
Ciao.

 wrote:

se non ricordo male dovresti scorrere con un for each in 
l'oggetto TableDefs
Saluti.
Emanuele.

 wrote in message
news:mPud8.7108$fa5.2...@twister2.libero.it...

Ti posto una Funzione GENERICA che ho fatto per cercare qualsiasi 
OGGETTO di un DB.
Il tutto corredato di istruzioni per l'uso.
Ciao.
Public Function Esiste_Oggetto(ByVal Nome_Ogg As String, _
                               Typ_Ogg As String, _
                               ByVal Nome_Dbs As String) As Boolean
'*****************************************************************
'Name      : Esiste_Oggetto (Function)
'Purpose   : Verifie if Database Object(Table, Query, Form or ...) Exist
'Author    : Alessandro Baraldi
'Web_Site  : 
http://digilander.iol.it/ik2zok/
'E.Mail    : 
ik2...@libero.it
'Date      : 23 gennaio 2002
'Called by :
'Calls     :
'Inputs    : String=Object Name
'          : Type="Tables" or "Forms" or "Queries"
'          :      "Scripts" or "Reports" or "Modules"
'          : Nome_Dbs=Path+Database.mdb (Source where Function search)
'Output    : True if Object Exist
'*****************************************************************
   Dim dbs As Database
   Dim tdf As TableDef
   Dim qdf As QueryDef
   Dim x, num_ogg As Integer
   Set dbs = OpenDatabase(Nome_Dbs)
   Select Case Typ_Ogg
      Case fTabella
         For Each tdf In dbs.TableDefs
            If tdf.Name = Nome_Ogg Then
               Esiste_Oggetto = True
               dbs.Close
               Set dbs = Nothing
               Exit Function
            End If
         Next tdf
      Case fQuery
         For Each qdf In dbs.QueryDefs
            If qdf.Name = Nome_Ogg Then
               Esiste_Oggetto = True
               dbs.Close
               Set dbs = Nothing
               Exit Function
            End If
         Next qdf
      Case fForm, fModulo, fMacro, fReport
        num_ogg = dbs.Containers(Typ_Ogg).Documents.Count
        For x = 0 To num_ogg - 1
           If dbs.Containers(Typ_Ogg).Documents(x).Name = Nome_Ogg Then
             Esiste_Oggetto = True
             dbs.Close
             Set dbs = Nothing
             Exit Function
           End If
        Next
   End Select
Esci:
   Esiste_Oggetto = False
   dbs.Close
   Set dbs = Nothing
End Function
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:9j1d7u8lkm98qhqd0...@4ax.com...

Funziona. Grazie.
Per chi interessasse il codice č
Dim DB As database
Dim tdf As TableDef
Dim tdfs As TableDefs
Set DB = CurrentDb()
Set tdfs = DB.TableDefs
For Each tdf In tdfs
    If tdf.Name = "pippo" Then
        DoCmd.DeleteObject acTable, "pippo"
        Exit For
    End If
Next

 Il tutto corredato di istruzioni per l'uso.
L'avevo già fatta ma la tua è general purpose e mi sarà sicuramente utile in
futuro.
Grazie.
Ciao.

 ha scritto nel
messaggio news:mPud8.7108$fa5.2...@twister2.libero.it...

Premesso che puoi comunque cancellarla intercettando l'eventuale errore e
gestirtelo, invece di cancellarla, potresti semplicemente svuotarla x
accodarci poi i nuovi record.
A tal proposito ti consiglio di andare a leggere sul Sito Comune la seguente
FAQ di LBO:
http://www.sitocomune.com/tables/tables006.htm
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

Le opzione mi pare siano dunque:
-scorrere l'insieme delle tabelle
-provare ad aprire intercettando l'eventuale errore.
Sapete dirmi quella che risulta piu' rapida(ipotizzando ad esempio
di avere 30000 diverse tabelle)??
grazie.

 grazie.
Prego.


 Silvio
Chissà le Maschere e i REPORT per no parlare delle Query......!!!
Alessandro.


 
http://www.sitocomune.com/tables/tables006.htm
Ho fatto come dici: intercettare l'errore č di gran lunga + efficente che
controllare tutte le tabelle! Anche perchč oltre alle mie ci sono tutte le
tabelle nascoste di access...
Grazie.
Ciao.

 30.000 tabelle ????!!!!????
ho messo un numero cosi perche' se c'e differenza tra i due metodi
sicuramente non risulera molto evidente quando le tabelle sono 10
o 100, ma con cosi tanti oggetti probabilmente si.
ps esistono sistemi sofisticati( e commerciali) che hanno una base
di dati sottostante, costituita da oltre 60000 tabelle...........
ma no vengono gestiti con access.