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 :

Limite d'affichage d'un champ mémo par une requête [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut Limite d'affichage d'un champ mémo par une requête
    Bonjour à tous.
    J'ai une énigme, en ce beau début d'après midi ensoleillé.
    Ma requête, donc mon état (puisque la requête est sa source) ne parvient pas à afficher la totalité d'un champ. La fin est tronquée.
    J'ai vérifié et tout le contenu est bien présent dans la base de données. Logique d'ailleurs puisque ce champ peut contenir jusqu'à 65535 caractères (il s'agit d'un champ mémo) et on est trèès loin d'approcher un tel nombre !
    J'en viens donc à ma question : d'où vient ce problème et comment faire en sorte d'afficher la totalité du champ ?
    Je précise qu'il y a à peine huit lignes dans le champ en question et qu'il y en aura rarement plus.

    Voilà, en espérant que certains connaissent la cause de ce problème
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    http://access.developpez.com/faq/?pa...es#RequeteMemo

    Je ne connais pas la solution, mais cela est normal.

    Philippe

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Ok, cela répond à la moitié de ma question.
    Reste à savoir comment contourner cette restriction...

    Si le problème vient du fait qu'il y ait un regroupement dans ma requête, je veux bien la modifier mais je crains que ce ne soit pas possible :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT N.NumNote, N.DateNote, C.NumContrat, Cl.NumCli, Cl.NomCli, C.DateEffetContrat, C.NatureContrat, V.NomVendeur, S.PrenomEmploye, A.NumAgence, S.TelEmploye, S.NomEmploye, A.NomAgence, N.ComNote
    FROM CLIENT AS Cl INNER JOIN ((VENDEUR AS V INNER JOIN (AGENCE AS A INNER JOIN CONTRAT AS C ON A.NumAgence=C.NumAgence) ON V.NumVendeur=C.NumVendeur) INNER JOIN (SERV_ASSU AS S INNER JOIN NOTES AS N ON S.NumEmploye=N.NumEmploye) ON C.NumContrat=N.NumContrat) ON Cl.NumCli=C.NumCli
    WHERE (((N.NumNote)=Forms!frmContratIrregulier!lstNotes));
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Bonjour.
    J'ai commencé à chercher des pistes du côté de la création dynamique de labels qui contiendraient tour à tour les différents morceaux de 250 caractères de mon champ mémo. J'ai ainsi trouvé un code utilisé pour récupérer du mémo dans Excel et je commençais à l'adapter quand j'ai pensé à une solution encore plus simple : renseigner la propriété Caption de mon contrôle (anc. zone de texte que j'ai transformée en label) directement avec la valeur correspondant au champ via DAO.

    Je mets mon code pour ceux que ça intéresse, mais c'est pas bien original (à mettre sur l'évènement ouverture de l'état qui contient un label nommé lblCom) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' Affectation du label lblCom
    Dim bd As Database
    Dim tNote As Recordset
    Dim cNote As String
     
    Set bd = CurrentDb
    Set tNote = bd.OpenRecordset("NOTES", dbOpenDynaset)
    cNote = "NumNote=" & Forms(Me.OpenArgs).lstNotes.Column(0)
    tNote.FindFirst cNote
    Me.lblCom.Caption = tNote![ComNote]
    Et voici le code pour coller un champ mémo en différents morceaux en créant des TextBox (bien que je n'en aie pas eu besoin) :
    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
    Function MemoSplitter(strReportName As String, _
       strFieldName As String, lngMemoLength As Long, haut As Integer)
     
       Dim NewControl As Control
       Dim intLoopCount As Integer
       Dim gauche, largeur, hauteur As Integer
     
        gauche = 130
        largeur = 8800
        hauteur = 2170
     
       For intLoopCount = 0 To lngMemoLength / 250
     
          Set NewControl = CreateReportControl(strReportName, _
             acTextBox, acDetail, , "", gauche, haut, largeur, hauteur)
          NewControl.Name = intLoopCount & "MemoText"
          NewControl.ControlSource = "=Mid([" & _
             strFieldName & "]," & 250 * intLoopCount + 1 _
             & ",250)"
            haut = haut + (hauteur + 20)
       Next intLoopCount
     
    End Function
    J'avais ajouté un paramètre "haut" qui définit la position verticale du premier contrôle. Les variables "gauche, "largeur", "hauteur" définissent respectivement la distance par rapport au bord gauche, la largeur et la hauteur du contrôle, le tout en twips (1cm = 567 twips).
    La ligne "haut = haut + (hauteur + 20)" sert à ajouter les contrôles les uns à la suite des autres.
    Tous ces ajouts sont bien entendu supprimables si inutiles.
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


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

Discussions similaires

  1. Affichage d'un champ Mémo
    Par P.O.K dans le forum ASP
    Réponses: 12
    Dernier message: 19/08/2013, 20h18
  2. [MySQL] renommage de tous les champs renvoyés par une requête
    Par o.deb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/09/2012, 21h46
  3. [WD11] Limiter l'affichage du nombre de ligne d'une table par page
    Par labifle dans le forum WinDev
    Réponses: 20
    Dernier message: 19/04/2010, 09h54
  4. Rafraîchir les champs text par une requête
    Par nounowa dans le forum JDBC
    Réponses: 2
    Dernier message: 18/07/2007, 12h14
  5. [REPORT BUILDER 6.0] champs separes par une virgule
    Par sdiack dans le forum Oracle
    Réponses: 1
    Dernier message: 13/03/2006, 17h16

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