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

Projets ADP Discussion :

Access ne reconnait pas les valeurs par défaut de la bdd sur postgresql [AC-2013]


Sujet :

Projets ADP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Points : 17
    Points
    17
    Par défaut Access ne reconnait pas les valeurs par défaut de la bdd sur postgresql
    Bonjour,

    Pour un projet je suis en train de mettre en place une base de données postgresql en serveur avec une interface client sous Access 2013.
    Mon soucis est que Access ne reconnait pas les valeurs par défaut renseignées dans postgresql (alors qu'il reconnaît la possibilité ou non de renseigner des valeurs null, le format des champs, etc).
    Sur les autres points la connexion semble bien se passer.

    J'ai installé Postgres 8.4.22
    le pilote est psqlodbc_09_05_0300-x64

    Est-ce quelqu'un saurait me dire d'où peut venir ce problème ?

    Merci d'avance,

    Patrick

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Après quelques recherches, il semble qu'Access soit incapable de récupérer les valeurs par défaut dans une base de données postgresql.
    Pour les récupérer, j'ai créé une fonction sur access qui envoie une requête dans postgre qui retourne les valeurs par défaut d'une table dans postgre.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    '------------------------------------------------------
    'FONCTION QUI RENVOIE UN TABLEAU DES VALEURS PAR DEFAUT D'UNE TABLE DE LA BDD
    Public Function Array_default_value_bdd(ByVal conn As ADODB.Connection, ByVal schema As String, ByVal table As String) As Variant
     
    Dim requete As String
    Dim a, b, c, n As Long
    Dim resultat() As Variant
     
    On Error GoTo Finalisation
    ReDim resultat(1 To 1, 1 To 1)
    resultat(1, 1) = False
     
    'Ecriture de la requête sql
    requete = "SELECT *" & Chr(10) & _
        "FROM INFORMATION_SCHEMA.COLUMNS" & Chr(10) & _
        "WHERE TABLE_SCHEMA = '" & schema & "'" & Chr(10) & _
        "AND TABLE_NAME = '" & table & "'"
     
    'Vérification de la connexion
    If conn.State = False Then
        conn.Open
    End If
     
    'Lancement de la requête dans la base de données
    Dim rec As New ADODB.Recordset
    rec.Open requete, connection_postgres, adOpenForwardOnly, adLockReadOnly
    rec.MoveFirst
    n = 1
    ReDim resultat(1 To 5, 1 To n)
    'ligne 1 : nom du champ
    'ligne 2 : si la valeur null est admise
    'ligne 3 : type de champ
    'ligne 4 : s'il y a une valeur par défaut
    'ligne 5 : valeur par défaut
    Do While Not rec.EOF
        ReDim Preserve resultat(1 To 5, 1 To n)
        resultat(1, n) = rec.Fields("COLUMN_NAME").Value
        resultat(2, n) = rec.Fields("IS_NULLABLE").Value
        resultat(3, n) = rec.Fields("DATA_TYPE").Value
        If Not IsNull(rec.Fields("COLUMN_DEFAULT")) Then
            If rec.Fields("COLUMN_DEFAULT").Value <> "" And Not rec.Fields("COLUMN_DEFAULT").Value Like "*nextval*" Then
                resultat(4, n) = True
                resultat(5, n) = rec.Fields("COLUMN_DEFAULT").Value
                'Traitement de la valeur du résultat
                resultat(5, n) = net_val_bdd(resultat(5, n))
                'Format du résultat
                If resultat(3, n) Like "*integer*" Then
                    resultat(5, n) = CLng(resultat(5, n))
                ElseIf resultat(3, n) Like "*char*" Then
                    resultat(5, n) = CStr(resultat(5, n))
                ElseIf resultat(3, n) Like "*date*" Or resultat(3, n) Like "*time*" Then
                    resultat(5, n) = CDate(resultat(5, n))
                ElseIf resultat(3, n) Like "*boolean*" Then
                    resultat(5, n) = CBool(resultat(5, n))
                Else
                    resultat(5, n) = CVar(resultat(5, n))
                End If
            Else
                resultat(4, n) = False
                resultat(5, n) = ""
            End If
        Else
            resultat(4, n) = False
            resultat(5, n) = ""
        End If
        n = n + 1
        rec.MoveNext
    Loop
    rec.Close
    Set rec = Nothing
     
    Array_default_value_bdd = resultat
     
    Exit Function
     
    'Finalisation de la procédure
    Fin:
    MsgBox "Erreur lors de l'exécution d'une requête. cf : debug.print"
    If conn.State = True Then
        conn.Close
    End If
    Debug.Print requete
    If Not rec Is Nothing Then
        rec.Close
        Set rec = Nothing
    End If
    On Error GoTo 0
    Stop
     
    End Function
    Bon week end

    Patrick

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

Discussions similaires

  1. [AC-2007] liste deroulante avec toutes les valeurs par défaut
    Par alexlb dans le forum IHM
    Réponses: 2
    Dernier message: 02/02/2010, 14h39
  2. Réponses: 2
    Dernier message: 23/11/2009, 20h11
  3. "Définir les valeurs par défaut" pour un "Champs de Paramètre"
    Par JaRuZ dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 21/10/2008, 14h06
  4. [ADO, Access]_Paramètre ?_2 n'a pas de valeur par défaut?
    Par Gdal dans le forum Accès aux données
    Réponses: 1
    Dernier message: 04/03/2008, 22h19
  5. Problème avec les valeurs par défaut
    Par Steph Ace dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/12/2005, 09h55

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