Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Access] Nomi tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42

    [Access] Nomi tabelle

    Ciao Ragazzi,
    devo recuperare i nomi delle tabelle presenti nel database e metterli, ad esempio, in una casella combinata. E' possibile farlo con una query? Se no, con il codice vba qual'e il comando?

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42

    Origine Record Maschera

    allora ho risolto con la seguente query che ho collegato alla casella combinata.

    SELECT NAME FROM MSYSOBJECTS
    WHERE TYPE = 1
    AND NAME NOT LIKE 'MSYS*'
    ORDER BY NAME;

    Ora però ho un'altro problema... come faccio a cambiare l'origine record della maschera in base al valore selezionato dalla casella combinata?

    grazie

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42
    per chi puo servire ho risolto anche questo punto...

    dal vba sul form_load

    Me.RecordSource = nome variabile

    ciao

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quella query non va bene,
    la ho testata con Access2010 e mi restituisce
    oltre alle tutte le tabelle anche questa:

    f_9E8203D96A754B0890DAF9414007C362_Data






    ___ Se vuoi fare una Query io farei cosi______________________________


    In access se abiliti la visualizzazione delle tabelle di sistema
    trovi la tabella MSysObject


    Microsoft di quella tabella NON ( ripeto NON ) ha pubbliato nessuna
    documentazione ( in quanto appunto "tabella di sistema " )

    Tuttavia se la guardi bene ti accorgi che se gli applichi
    questa query arrivi al tuo risultato:
    codice:
    SELECT 
    MSysObjects.Name
    FROM 
    MSysObjects
    WHERE 
    (
    ((MSysObjects.Flags)=0) 
    AND 
    ((MSysObjects.Type)=1)
    )
    ;
    Attento pero NON è documentata, quindi potrebbe
    non funzionare piu alla prossima versione di Access
    ( fino al 2010 garantisco io )


    ___( comunque gode di anche supporti più autorevoli )
    http://allenbrowne.com/func-DDL.html#AdjustAutoNum




    ____ Se invece preferisci VBA ______________________________


    Puoi usare il TableDefs per recuperare il nome di tutte le tabelle
    codice:
    Public Function ScannTab()
     
    Dim Tbl As DAO.TableDef
     
        For Each Tbl In CurrentDb.TableDefs
            If (Tbl.Attributes And dbSystemObject) = 0 Then
            ' Stampo nome tabella e lo evidenzio come intestazione
        
                Debug.Print "__ "; Tbl.Name; " _____________________"
     
            End If
        Next
    
    ' NB  Abilita la visualizzazione della  "Finestra Immediata" 
    ' ed esegui la funzione direttamente nel VBA 
    End Function




    e se ti servono anche i campi di ogni tabella
    codice:
    Public Function ScannTabCampi()
     
    Dim Tbl As DAO.TableDef
    Dim Fld As DAO.Field
     
        For Each Tbl In CurrentDb.TableDefs
            If (Tbl.Attributes And dbSystemObject) = 0 Then
            ' Stampo nome tabella e lo evidenzio come intestazione
        
                Debug.Print "__ "; Tbl.Name; " _____________________"
     
                For Each Fld In Tbl.Fields
                    ' per ogni tabella stampo il nome dei suoi campi
                    Debug.Print "      "; Fld.Name
                Next
            
            End If
        Next
    
    ' NB  Abilita la visualizzazione della  "Finestra Immediata" 
    ' ed esegui la funzione direttamente nel VBA 
    End Function


    http://support.microsoft.com/kb/210362/it


    __________________________________________________ _____________________________________


    Tanto per chiudere se devi popolare una
    Casella Combinata di nome "CasCom3"
    che sia impostata al "tipo origine riga" come "elenco valori " <<<------

    sull'evento "attivato" della casella stessa:
    codice:
     
    Private Sub CasCom3_GotFocus()
    
    Dim Tbl As DAO.TableDef
    Dim str As String
    str = ""
     
        For Each Tbl In CurrentDb.TableDefs
            If (Tbl.Attributes And dbSystemObject) = 0 Then
            ' ad ogni ciclo aggiungi il nome della tabella e un ";"
            str = str & Tbl.Name & ";"
     
            End If
        Next
        
        ' adesso togli l'ultimo ";"
        str = Left(str, (Len(str) - 1))
        
        Debug.Print str
        ' str è la stringa che puoi mettere nella casella combinata
        ' che sia impostata al "tipo origine riga" come "elenco valori "
        
        Me.CasCom3.RowSource = str
        'metti la stringa prodotta come RowSource della tua casella combinata
        
        
        str = ""
        
    End Sub



    Spero di non essermi dilungato troppo


    .

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42
    No assolutamente! anzi ti ringrazio per avermi spiegato il problema di quella tabella di sistema. Io avevo risolto molto rozzamente mettendo un filtro!

    Tra l'altro mi piace molto di più la tua soluzione, è molto più gestibile!

    Se non è troppo disturbo vorrei chiederti aiuto anche ad un'altro problema. In una maschera ho una chekbox che, se messa su "checked", mi deve far visualizzare un campo di una query di selezione quando viene lanciata.

    Ho visto nella guida ed anche alcuni esempi che ho trovato ma non riesco a venirne a capo. mi sapresti dire come dovrei programmare la checkbox e la query?

    ti ringrazio infinitamente

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da sky998
    Se non è troppo disturbo vorrei chiederti aiuto anche ad un'altro problema.
    Non è di distirbo

    pero è meglio ch apri una domanda separata ( tanto è gratis )



    Imposta un buon titolo cosi hai piu possibilita di ricevere risposte centrate
    perche chiunque non deve leggersi 2 schermate prima di arrivare alla seconda domanda


    poi faciliti le ricerche future per titoli


    .

  7. #7

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.