Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato L'avatar di primeros
    Registrato dal
    Sep 2010
    Messaggi
    20

    Access - Verificare esistenza tabella

    Ciao ho la necessita di un consiglio e di seguito vi spiego il problema. All'avvio di un programma (fatto con ACCESS 2003) devo verificare (con VBA) che la tabella ARCHIVIO sia stata duplicata e rinominata ex. ARCHIVIOGENNAIO. Domanda esiste un'istruzione tipo "if ARCHIVIOGENNAIO esiste then apri maschera MENU else rinomina ARCHIVIO chiamandolo ARCHIVIOGENNAIO apri maschera MENU" Grazie per qualsiasi aiuto. Primeros

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Devi interrogare lo schema del database, e controllare se c'è.
    Se l'operazione devi farla frequentemente, ne vale la pena.
    Se sei in VBA allora in DAO puoi usare l'oggetto TableDef.

    Ma se ti serve solo per questo è più comodo tentare di aprire la tabella:
    - se non esiste restituisce un'errore
    - se esiste la chiudi immediatamente

    Poi agisci di conseguenza.

    Riguardo al rinominare una tabella via codice non è proprio possibile farlo, perchè vi possono relazioni e indici che andrebberro a farsi friggere.

    Dall'ambiente di progettazione di MSAccess è possibile farlo in modo banale perchè il programma ha dei meccanismi interni che provvedono ad aggiornare tutti gli oggetti correlati alla tabella (anche se non sono sicuro al 100% che valga proprio per TUTTI gli oggetti).

    Non sono per niente esperto di MSAccess, ma forse esiste un comando interno del programma stesso che lo permette.
    Prova a guardare tra i comandi di MSAccess se esiste qualcosa.


  3. #3
    Utente bannato L'avatar di primeros
    Registrato dal
    Sep 2010
    Messaggi
    20

    risolto

    ti ringrazio Gibra per il tuo interessamento ma ho risolto. Tra poco metterò un nuovo messaggio con un titolo più appropriato così sarà a disposizione di tutti. Ciao e grazie ancora

  4. #4
    Utente bannato L'avatar di primeros
    Registrato dal
    Sep 2010
    Messaggi
    20

    soluzione

    Codice:
    Public Function EsisteOggetto(OggSTR As String, Optional IngType As AcObjectType = acForm) As Boolean
    Dim Tipo As AccessObject
    On Error Resume Next
    Select Case IngType
    Case acDataAccessPage
    Set Tipo = CurrentProject.AllDataAccessPages(OggSTR)
    Case acForm
    Set Tipo = CurrentProject.AllForms(OggSTR)
    Case acMacro
    Set Tipo = CurrentProject.AllMacros(OggSTR)
    Case acModule
    Set Tipo = CurrentProject.AllModules(OggSTR)
    Case acReport
    Set Tipo = CurrentProject.AlIReports(OggSTR)
    Case acStoredProcedure
    Set Tipo = CurrentData.AllStoredProcedures(OggSTR)
    Case acDiagram
    Set Tipo = CurrentData.AllDatabaseDiagrams(OggSTR)
    Case acServerView
    Set Tipo = CurrentData.AllViews(OggSTR)
    Case acQuery
    Set Tipo = CurrentData.AllQueries(OggSTR)
    Case acTable
    Set Tipo = CurrentData.AllTables(OggSTR)
    Case Else
    Err.Raise 1
    End Select
    EsisteOggetto = (Err.Number = 0)
    Err.Clear
    End Function

    Poi all'interno del tuo programma la usi richiamandola così:

    Codice:
    If EsisteOggetto(“Nome_tua_tabella”, acTable) Then

    ......tuo codice

    End If

    Con questo sistema si può verificare l'esistenza di: tabelle, macro, query ecc.
    soluzione gentilmente postata NICEMAN iscritto al sito MasterDrive.it
    Spero di essere stato utile. Ciao Primeros

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.