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

Requêtes et SQL. Discussion :

Problème avec un champs memo tronqué [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut Problème avec un champs memo tronqué
    Bonjour,

    Je rencontre un soucis avec une table, au niveau d'un champs (= une colonne) déclaré en type "MEMO" mais qui se limite à 255 caractères.

    La procédure suivie est la suivante:
    1. Création de la table avec déclaration du champs [Clause Contrat] en type memo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            REQ_SQL_Table_1 = ""
            REQ_SQL_Table_1 = REQ_SQL_Table_1 & "CREATE Table Table_1 ("
            REQ_SQL_Table_1 = REQ_SQL_Table_1 & "Contrat Text, "
            REQ_SQL_Table_1 = REQ_SQL_Table_1 & "[Clause Contrat] Memo);"
     
            DoCmd.RunSQL (REQ_SQL_Table_1)
    2. Exécution d'une requête pour récupérer la dite-clause via une fonction qui me permet de concaténer des lignes d'une table tierce.
    J'ai effectué quelques tests dans la fonction et après affichage de la clause avec une MsgBox, il n'y a pas de troncature.
    Par contre, une fois la requête d'insertion executée, le libellé est tronqué (à 255 caractères) et j'avoue que je ne saisie pas pourquoi, d'autant que, dans la table, le champs est toujours "déclaré" en type MEMO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            REQ_SQL_Contrat_Clauses = ""
            REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "INSERT INTO Table_1 "
            REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "( Contrat, [Clause Contrat] ) "
            REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "SELECT DISTINCT 4801.[Contrat], "
            REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "RecupLibClause(4801.[Contrat]) "
            REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "FROM 4801;"
     
     
            DoCmd.RunSQL (REQ_SQL_Contrat_Clauses)

    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
     
    Public Function RecupLibClause(Contrat As Long) As String
    Dim res2 As DAO.Recordset
    Dim SQL As String
    'Selectionne les libellés clauses Spéciales du projet
    SQL = "SELECT [4801].[LIB-CLAUSE] FROM 4801 WHERE [4801].[Contrat]='" & Contrat & "'"
    Set res2 = CurrentDb.OpenRecordset(SQL)
     
    'MsgBox RecupLibClause
    'Concatene les différents enregistrement si la clause existe
    'If RecupLibClause <> "" Then
    While Not res2.EOF
        RecupLibClause = RecupLibClause & res2.Fields(0).Value & " "
        res2.MoveNext
        Wend
     
    Set res2 = Nothing
    End Function

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Ok, je crois que j'ai trouvé: cela vient du DISTINCT de la 2ème requête.

    Je teste et passe en résolu si c'est OK.

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    La fonction recuplibclause est de type string ce qui je crois la tronque à 255 car

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Non non, je croyais aussi mais comme expliqué dans mon premier message, après affichage de la zone concaténée, il n'y avait pas de troncature...
    De plus, les variables string sont limités à 64 ko (soit 2^16)...

    Sinon, pour répondre au sujet c'est bien le "distinct" qui provoquait la troncature du champs...

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

Discussions similaires

  1. [Lazarus] MS Access : problème avec les champs MEMO
    Par Jazz77 dans le forum Lazarus
    Réponses: 13
    Dernier message: 04/03/2013, 19h18
  2. [AC-2003] Problème Requete ACCESS avec un champ memo
    Par pio_killer dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/10/2009, 08h52
  3. [Cognos 6][Impromptu] Problème avec les champs groupés
    Par nicoduhavre dans le forum Cognos
    Réponses: 4
    Dernier message: 23/03/2007, 15h27
  4. Problème avec les champs de type table
    Par devdev dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/12/2004, 16h05
  5. Problème avec un champ 'long'
    Par yannick dans le forum Débuter
    Réponses: 2
    Dernier message: 25/07/2003, 14h17

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