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
.