Newsgroup: it.comp.appl.access
Titolo: recuperare il campo descrizione

Salve,
è possibile recuperare il campo descrizione di una tabella, tramite query?
Grazie,
Francesco 

 ha scritto nel messaggio 
news:46629bc5$0$36438$4faf...@reader5.news.tin.it...

Direttamente no, almeno che io sappia.
Puoi però realizzare una piccola funzione che faccia questo, per esempio:
Public Function DimmiProprietàDescrizioneTabella(Tdef As String) As String
Dim DB As Database, TBLDef As TableDef
Dim prpCiclo As Property
Set DB = OpenDatabase(CurrentDb.Name)
Set TBLDef = DB.TableDefs(Tdef)
With TBLDef
    For Each prpCiclo In .Properties
            If prpCiclo.Name = "Description" Then
                DimmiProprietàDescrizioneTabella = IIf(prpCiclo = "", 
"Nessuna Descrizione", prpCiclo)
            Exit For
            End If
    Next prpCiclo
End With
End Function
Potresti usarla, per esempio, in una query che ti elenca tutte le tabella di 
un db, come questa:
SELECT MSysObjects.Name, MSysObjects.Type, 
DimmiProprietàDescrizioneTabella([Name]) AS Descrivi
FROM MSysObjects
WHERE (((MSysObjects.Name) Not Like "Msys*") AND ((MSysObjects.Type)=1));
Provare per credere.
Ciao, Carlo 

 è possibile recuperare il campo descrizione di una tabella, tramite query?
No. Solo con VBA.
Se veramente intendi la proprietà della tabella (non dei campi)
puoi aprire un nuovo modulo standard e inserire questo codice:
Public Function fctTdfDescription(strTdfName As String) As String
    On Error Resume Next
    fctTdfDescription = 
CurrentDb.TableDefs(strTdfName).Properties("Description")
End Function
Poi per ricevere la descrizione nella query in un campo calcolato
puoi usare:
fctTdfDescription("NomeDellaTabelle")
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 ha scritto nel messaggio 
news:46629bc5$0$36438$4faf...@reader5.news.tin.it...

L'esempio che ti ho inviato è relativo alla proprietà "Descrizione" della 
tabella e non alla descrizione (etichetta) del singolo campo nella tabella.
Ciao, Carlo 

 tabella.
chiedo venia, sono stato poco chiaro: in realtà a me serve la descrizione 
dei singoli campi
utilizzo c#, soluzioni? grazie 

 ha scritto nel messaggio 
news:4662d441$0$10627$4faf...@reader2.news.tin.it...

Ok.
Giusto per fare chiarezza la "descrizione" del campo non esiste ma solo 
l'etichetta, che viene usata da Access al posto di "Nome Campo" qualora 
contenga un valore.
Con VBA si può tranquillamente fare scorrendo le proprietà degli item della 
tabella e si può fare per tutte le tabelle o per una sola.
A te serve avere il contenuto di "Etichetta" per una tabella alla volta e 
per tutti i suoi campi o per tutte le tabelle e tutti i suoi campi 
contemporaneamente?
Ciao, Carlo 

 Ciao, Carlo
Ciao,
Innanzitutto grazie per il supporto.
Per descrizione, intendo la voce "Descrizione" che viene visualizzata in 
"Struttura" di una tabella.
Mi servirebbero tutte le descrizioni (etichette?) di tutti i campi di tutte 
le tabelle, ma dovrei farlo in C#.
Eventualmente il codice vba, è possibile integrarlo in C#?
Grazie mille ancora 

 ha scritto nel messaggio 
news:46630647$0$17950$4faf...@reader1.news.tin.it...

 OK.
Ora è chiaro. In VB o VBA potresti usare una funzione simile a questa:
Public Function DimmiProprietàDescrizioneTabella(Tdef As String) As String
Dim DB As Database, TBLDef As TableDef
Dim prpCiclo As Property
Dim Fl As Field
Set DB = OpenDatabase(CurrentDb.Name)
Set TBLDef = DB.TableDefs(Tdef)
With TBLDef
    For Each Fl In .Fields
    For Each prpCiclo In Fl.Properties
    On Error Resume Next
    If prpCiclo.Name = "Description" Then
    Debug.Print prpCiclo.Name & " " & prpCiclo.Value
    DimmiProprietàDescrizioneTabella = prpCiclo.Value
    Exit For
    End If
    Next prpCiclo
    Next Fl
End With
End Function
In C# immagino che dovrai apportare delle modifiche: aggiungere un 
riferimento a DAO; sostituire
Set DB = OpenDatabase(CurrentDb.Name)
con Set DB = OpenDatabase("c:\TuoPercorsoENomeDatabase.mdb");
tutte le variabili tabledef DB o recordset vanno precedute da DAO:
Dim DB As Database diventa Dim DB As Dao.Database
Dim TBLDef As TableDef diventa TBLDef As Dao.TableDef,  ecc.
La funzione sopra riportata diventa:
Public Function DimmiProprietàDescrizioneTabella(Tdef As String) As String
Dim DB As DAO.Database, TBLDef As DAO.TableDef
Dim prpCiclo As DAO.Property
Dim Fl As DAO.Field
Set DB = OpenDatabase("C:\MioDb.mdb")
Set TBLDef = DB.TableDefs(Tdef)
With TBLDef
    For Each Fl In .Fields
    For Each prpCiclo In Fl.Properties
    On Error Resume Next
    If prpCiclo.Name = "Description" Then
    Debug.Print prpCiclo.Name & " " & prpCiclo.Value
    DimmiProprietàDescrizioneTabella = prpCiclo.Value
    Exit For
    End If
    Next prpCiclo
    Next Fl
End With
End Function
Tieni presente che dovrai comunque crearti una tabella, anche in C#, alla 
quale "appendere", "accodare" i valori trovati.
Questa tabella dovrebbe avere almeno due campi: NomeCampo e DescrizioneCampo
La funzione che ti ho postato è solo un esempio e non andrebbe bene nemmeno 
in VBA per accodare i dati in una tabella; serve solo a farti capire come 
cercare i valori che ti servono usando C# e il modello Access DAO.
La proprietà del campo (Field) di una tabella si chiama "Description" e il 
suo valore (Value) è quello che cerchi.
Non dovresti avere problemi a crearti un semplice ciclo in C#.
Fammi sapere.
Ciao, Carlo