Newsgroup: it.comp.appl.access
Titolo: proprietà Field

Le istruzioni di Access rimandano a proprietà dell'oggetto Field dove in
realtà non esistono.
DecimalPlaces, InputMask e Caption dice che sono proprietà valide anche per
l'oggetto Field ma in relatà sembra di no.
Come è possibile ottenere il valore di queste proprietà dei campi di un
recordset?
Ciao, Sandro

 wrote in message
U3Dsa.86739$DT4.2...@twister1.libero.it...

Quelle che hai citato non sono proprietà DAO di oggetti DAO, ma sono
proprietà di Microsoft Access per oggetti DAO: esiste molta differenza
nell'utilizzo in VBA di tali due tipi di categorie di proprietà.
Per maggiori dettagli dai un'occhiata sull'help all'argomento Impostare le
proprietà di oggetti DAO in Visual Basic.
Dai anche uno sguardo all'insieme Properties, al metodo CreateProperty, alla
proprietà Type ecc ecc.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Forse mi sono espresso male, ma resta il problema che da codice VBA non
riesco a leggere tutte le proprietà assegnate ad un campo di una tabella in
modalità struttura. L'oggeto Field che uso è un oggetto dell'insieme Fields
dell'oggetto TableDef e quindi di Access e non di DAO. Usando l'oggetto
Container (sempre di Access) è la stessa cosa.
In definitiva le proprietà impostate in modalità struttura ai campi di una
Tabella dovrebbero far parte dell'oggetto Field ma in realtà Field ammette
solo alcune di queste proprietà.
A meno che ci sia un altro metodo per leggere le proprietà delle tabelle via
codice.
Ciao. Sandro

 via codice.
Roberto ti ha già detto cosa fare. Puoi ottenere quasi tutti
questi proprietà con chiamare i Properties con DAO.
L'esempio la più breve se la proprietà già esiste:
MsgBox CurrentDb!TuaTabella!TuoCampo.Properties!InputMask
o più lungo
****************
On Error Resume Next ' se prp non esiste ecc.
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim prp As DAO.Property
Set db = CurrentDb
Set tdf = db.TableDefs("TuaTabella")
For Each fld In tdf.Fields
    For Each prp In fld.Properties
        Debug.Print fld.Name, prp.Name, prp.Value
    Next prp
Next fld
db.Close: Set tdf = Nothing
Set fld = Nothing
Set prp = Nothing
*****************
Ci sono solo 2 proprietà che non sono raggiungibile con DAO ma
solo ADO: Precision e NumericScale di un campo Decimal di JET4.
Per queste basta p.e.
    Dim rst As New ADODB.Recordset
    rst.Open "TuaTabella", CurrentProject.Connection
    Debug.Print rst!Campo.Precision, rst!Campo.NumericScale
    rst.Close
-- 
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 via codice.
Puoi ottenere quasi tutti questi proprietà con DAO.
L'esempio più breve se la proprietà già esiste:
MsgBox CurrentDb!TuaTabella!TuoCampo.Properties!InputMask
o più lungo
****************
On Error Resume Next ' se prp non esiste ecc.
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim prp As DAO.Property
Set db = CurrentDb
Set tdf = db.TableDefs("TuaTabella")
For Each fld In tdf.Fields
    For Each prp In fld.Properties
        Debug.Print fld.Name, prp.Name, prp.Value
    Next prp
Next fld
Set prp = Nothing
Set fld = Nothing
Set tdf = Nothing
*****************
Ci sono solo 2 proprietà che non sono raggiungibile con DAO ma
solo ADO: Precision e NumericScale di un campo Decimal di JET4.
Per queste basta p.e.
    Dim rst As New ADODB.Recordset
    rst.Open "TuaTabella", CurrentProject.Connection
    Debug.Print rst!Campo.Precision, rst!Campo.NumericScale
    rst.Close:Set rst = Nothing


 ha scritto nel messaggio
news:Q7Tsa.88566$DT4.2...@twister1.libero.it...

Ti ha risposto Karl e come vedi le proprietà che vuoi visualizzare fanno
parte dell'insieme Properties del campo; non sono proprietà DAO di Field ma
proprietà Microsoft Access.
