IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Modifier le format d'un champ d'une table existante en vba [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 94
    Par défaut Modifier le format d'un champ d'une table existante en vba
    Salut le Forum,

    Je me permet de vous soumettre un problème archi-traité, mais malgré toutes les discussions consultées et l'excellent guide DAO, je n'ai pas résolu mon problème

    J'ai une table Test02 dont je voudrais modifier le format d'affichage d'un champ en vba. J'ai essayé avec le code suivant mais j'ai une erreur 3421 - erreur de conversion de type de données lors de la méthode CreateProperty.

    Lorsque j'ouvre ma table (pas en vba cette fois) en mode création je constate que je peux changer le format pour le mettre en standard sachant que le type du champ que je veux changer est Réel Double. Je n'arrive pas à répliquer cette action apparemment simple en vba... Avez vous une idée ?

    Merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub DD()
     Dim Tbl As DAO.TableDef
    Dim Pr As DAO.Property
     
    Set Db = DBEngine.Workspaces(0).Databases(0)
     
    Set Tbl = Db.TableDefs("Test02")
    Set Pr = Tbl.Fields("Champ2").CreateProperty("Format", dbDouble, "# ##0.00")
    Tbl.Fields("Champ2").Properties.Append Pr
     
    End Sub

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 94
    Par défaut
    Bon j'ai un peu progressé, mais ça plante toujours. J'ai modifié les arguments de CreateProperty, ce qui me permet de passer à la ligne suivante. C'est là que ça plante, à la méthode Append, avec un message Erreur d'exécution '3394' - Impossible d'enregistrer la propriété, car il s'agit d'une propriété Schéma. Savez-vous ce qu'est une propriété schéma ? je ne trouve pas de littérature là-dessus.

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub DD()
    Dim Tbl As DAO.TableDef
    Dim Pr As DAO.Property
     
    Set Db = DBEngine.Workspaces(0).Databases(0)
     
    Set Tbl = Db.TableDefs("Test02")
    Set Pr = Tbl.Fields("Champ2").CreateProperty("Format", dbText, "Standard")
    Tbl.Fields("Champ2").Properties.Append Pr
     
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 94
    Par défaut
    Après quelques heures de recherche, j'ai fini par trouver un code qui marche (sur la communauté Microsoft US). J'en fait profiter le Forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Sub DD()
    Dim Tbl As DAO.TableDef
    Dim Pr As DAO.Property
    Dim Fld as DAO.Field
     
    Set Db = CurrentDb
    Set Tbl = Db.TableDefs("Test02")
    Set Fld = Tbl.Fields("Champ2")
    Call SetDAOProperty(Fld, "Format", dbText, "Standard")
     
    End Sub
     
     
    Function SetDAOProperty( _
        WhichObject As Object, _
        PropertyName As String, _
        PropertyType As Integer, _
        PropertyValue As Variant _
    ) As Boolean
    On Error GoTo ErrorHandler
    Dim prp As DAO.Property
        WhichObject.Properties(PropertyName) = PropertyValue
        WhichObject.Properties.Refresh
        SetDAOProperty = True
    Cleanup:
        Set prp = Nothing
        Exit Function
    ErrorHandler:
        Select Case Err.Number
            Case 3270 ' "Property not found"
                Set prp = WhichObject.CreateProperty( _
                    PropertyName, _
                    PropertyType, _
                    PropertyValue _
                )
                WhichObject.Properties.Append prp
                WhichObject.Properties.Refresh
                SetDAOProperty = True
            Case Else
                MsgBox Err.Number & ": " & Err.Description
                SetDAOProperty = False
        End Select
        Resume Cleanup
     
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier les valeurs de certains champs d'une table
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/10/2007, 22h10
  2. Modifier le type d'un champ d'une table
    Par atb dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/02/2007, 16h37
  3. Réponses: 4
    Dernier message: 07/08/2006, 16h19
  4. Réponses: 7
    Dernier message: 26/05/2006, 19h45
  5. Changer le format d'un champ d'une table
    Par Cablan dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo