Valori proprietà campi

di il
4 risposte

Valori proprietà campi

Vorrei estrarre i valori delle proprietà di tutti i campi di una tabella. Ho scritto la seguente routine:

Sub prop()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim prp As DAO.Property
Set db = CurrentDb
Set tbl = db.TableDefs("registro")
For Each fld In tbl.Fields
    Debug.Print vbCrLf & fld.Name
    For Each prp In fld.Properties
        Debug.Print prp.Name; " = "; prp.Value
    Next
Next
End Sub

Che mi da errore 3219 su prp.Value, ovvero se ometto il testo prp.Value la routine gira correttamente.

Chiedo cortesemente un aiuto.

grazie

4 Risposte

  • Re: Valori proprietà campi

    Su quale proprietà ti si blocca…?

    Fai un DEBUG Passo-Passo e vedi quale proprieta specifica genera l'errore … ho una mezza idea di cosa sia ma fai una verifica come ti ho detto vedrai che capisci subito.

    Alla fine metterai un On Error resume next

  • Re: Valori proprietà campi

    Grazie dell'intervento Alex.

    L'errore 3219 si manifesta sull'istruzione Debug.print, ma se dall'istruzione tolgo il testo prp.Value, ovvero se l'istruzione diventa:

    Debug.Print prp.Name; " = "

    allora la routine gira bene e mi fornisce quella che ritengo una risposta corretta. Ne pubblico uno stralcio:

    Value = 
    Attributes = 
    CollatingOrder = 
    Type = 
    Name = 
    OrdinalPosition = 
    Size = 
    SourceField = 
    SourceTable = 

    un saluto

  • Re: Valori proprietà campi

    Ma così a cosa serve…

    Non hai capito il suggerimento.

    Una delle proprerty probabilmente non espone VALUE ma devi capire quale guardano passo passo tutte finché non trovi quella incriminata.

  • Re: Valori proprietà campi

    Ho capito adesso cosa intendevi Alex.

    In effetti è proprio la prima proprietà che non espone VALUE. Ho inserito un On Error resume next come avevi subito suggerito e adesso funziona perfettamente.

    Di seguito il codice corretto a vantaggio di tutti.

    Sub prop()
    On Error Resume Next
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    Dim fld As DAO.Field
    Dim prp As DAO.Property
    Set db = CurrentDb
    Set tbl = db.TableDefs("registro")
    For Each fld In tbl.Fields
        Debug.Print vbCrLf & fld.Name
        For Each prp In fld.Properties
            Debug.Print prp.Name; " = "; prp.Value
        Next
    Next
    End Sub

    Grazie Alex, i tuoi interventi sono sempre risolutivi

Devi accedere o registrarti per scrivere nel forum
4 risposte