Newsgroup: it.comp.appl.access
Titolo: Tramite VBA non riesco a modificare in tabella le “impostazioni” ("proprietà"?) di campi

Ahimé, sono due giorni che mi sbatto con i vecchi post.
Ho scolpito nel marmo quello dove Federico Luciani fornisce dritte
illuminanti.. ma NON per me, purtroppo (vedi link che segue)
http://groups.google.com/group/it.comp.appl.access/browse_thread/thread/29ba7790029d6043/33cb83f53b1b21d9?lnk=gst&q=.fields+etichetta#33cb83f53b1b21d9
Riesco a creare un nuovo campo (Numerico, Precisione doppia) in una
tabella con:
    Dim dbs As Database, tdf As TableDef, fld As Field, prp As
Property
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("MiaTabella")
    Set fld = tdf.CreateField("camponuovo", dbDouble)
    tdf.Fields.Append fld
e dopo riesco a vedere le sue proprietà nella finestra di debug,
sempre tramite un modulo:
Sub prop()
On Error Resume Next
    Dim dbs As Database
    Dim tdf As TableDef
    Dim fld As Field
    Dim prp As Property
    Dim strRptName As String
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("MiaTabella")
    Set fld = tdf.Fields("camponuovo”)
    For Each prp In fld.Properties
        Debug.Print prp.Name, prp.Value
    Next prp
    Set dbs = Nothing
End sub
NON RIESCO ASSOLUTAMENTE AD ATTRIBUIRE
utilizzando i concetti di fld.properties e fld.createproperty:
Description 	->  mio campo bellissimo
Format      	->  Fixed
DecimalPlaces  	->  2
Caption       	->  mio_campo_bellissimo
Siccome ho l’impressione che la cosa si possa fare, non esiste qualche
anima pia che possa postare del codice che guidi passo-passo a questa
operazione di vitale importanza per l'intera umanità?
Buona Domenica (.. nella quale io ho cercato di non guardare soltanto
la TV ..)
Roberto Testa

 ha scritto nel messaggio 
news:259d7d18-9c44-4752...@v13g2000yqm.googlegroups.com...

http://groups.google.com/group/it.comp.appl.access/browse_thread/thread/29ba7790029d6043/33cb83f53b1b21d9?lnk=gst&q=.fields+etichetta#33cb83f53b1b21d9







Pubblicato su 
www.accessgroup.it
 credo al più presto sarà online.
Ciao
-- 
Roberto da Parma 

 ha scritto nel messaggio 
news:259d7d18-9c44-4752...@v13g2000yqm.googlegroups.com...

da errore perché alcune proprietà non sono state create...
se hai problemi a capire il codice..posso commentare...
Option Compare Database
Private Sub Comando2_Click()
On Error Resume Next
    Dim dbs As Database
    Dim tdf As TableDef
    Dim fld As Field
    Dim prp As Property
    Dim strRptName As String
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("Indirizzi")
    Set fld = tdf.Fields("ContactName")
    Dim description As String
    description = GetDescrip(fld)
    'For Each prp In fld.Properties
    '    Debug.Print prp.Name, prp.Value
    'Next prp
    On Error GoTo DesNotFound
    fld.Properties("Description") = "Campo descrittivo"
    Set dbs = Nothing
Exit Sub
DesNotFound:
MsgBox "Crea Descrizione"
Call SetPropertyDAO(fld, "Description", dbText, "My new description.")
End Sub
Function GetDescrip(obj As Object) As String
    On Error Resume Next
    GetDescrip = obj.Properties("Description")
End Function
Function SetPropertyDAO(obj As Object, strPropertyName As String, _
intType As Integer, varValue As Variant, Optional strErrMsg As String) As 
Boolean
On Error GoTo ErrHandler
'Purpose:   Set a property for an object, creating if necessary.
'Arguments: obj = the object whose property should be set.
'           strPropertyName = the name of the property to set.
'           intType = the type of property (needed for creating)
'           varValue = the value to set this property to.
'           strErrMsg = string to append any error message to.
If HasProperty(obj, strPropertyName) Then
obj.Properties(strPropertyName) = varValue
Else
obj.Properties.Append obj.CreateProperty(strPropertyName, intType, varValue)
End If
SetPropertyDAO = True
ExitHandler:
Exit Function
ErrHandler:
strErrMsg = strErrMsg & obj.Name & "." & strPropertyName & _
" not set to " & varValue & ". Error " & Err.Number & " - " & 
Err.description & vbCrLf
Resume ExitHandler
End Function
Public Function HasProperty(obj As Object, strPropName As String) As Boolean
'Purpose:   Return true if the object has the property.
Dim varDummy As Variant
On Error Resume Next
varDummy = obj.Properties(strPropName)
HasProperty = (Err.Number = 0)
End Function
 

Ringrazio Alessio (sono in altre faccende affacendato; guarderò il tuo
codice poi e ti farò sapere) e Roberto da Parma malgrado quest'ultimo
mi abbia redarguito per averlo contattato via mail.

 mi abbia redarguito per averlo contattato via mail.
niente in sostanza devi verificare che la proprietà esista, altrimenti la 
crei..semplice..
per roberto, che non conosco.., credo ti abbia reguardito, perché è bene 
postare sul newgroups così tutti possono farne tesoro...
lo scopo è questo ;)
 

 ha scritto nel messaggio 
news:dc96595d-f935-4f1c...@v39g2000yqm.googlegroups.com...
Ringrazio Alessio (sono in altre faccende affacendato; guarderò il tuo
codice poi e ti farò sapere) e Roberto da Parma malgrado quest'ultimo
mi abbia redarguito per averlo contattato via mail.
No Roberto credimi che non era inteso a redarguirti è che l'NG serve appunto 
a tutti e se mi scrivi in privato decade quest'ultima funzione.
