Récupérer 1 chaîne > 255 caractères à partir d'un recordset ?

Le
teddy
Bonjour,
J'ai un recordset qui me retourne un texte un peu long (300 caractères
environ).
Si je crée une variable string pour récupérer un champ de type commentaire
du recordset (à l'origine provenant du champ MEMO d'une base ACCESS), la
chaîne est tronquée à 255 caractères.
Comment faire pour le récupérer ?
Merci pour votre avis.
Teddy
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15395971
teddy wrote:
Bonjour,
J'ai un recordset qui me retourne un texte un peu long (300 caractères
environ).
Si je crée une variable string pour récupérer un champ de type
commentaire du recordset (à l'origine provenant du champ MEMO d'une
base ACCESS), la chaîne est tronquée à 255 caractères.
Comment faire pour le récupérer ?
Merci pour votre avis.
Teddy



Hello,
le problème est avec ta base ou ton champ, pas avec VB.
J'ai fait une table avec un champ nommé Commentaire, ce
champ de type "memo".
J'ai ensuite mis dedans un texte de exactement 300 caractères.

Puis j'ai fait le programme VB suivant:

Dim db As Database
Dim rs As Recordset

Dim dbCommentaire As String

Set db = OpenDatabase("c:jm.mdb")
Set rs = db.OpenRecordset("select * from Table1")

dbCommentaire = rs.Fields("commentaire")

Debug.Print "len=" & Len(dbCommentaire)
Debug.Print "commentaire=" & dbCommentaire

Le résultat de l'exécution est sans surprise:
len00
commentaire=JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE*

Il n'y a pas de problème particulier de toute façon.
Une string en VB6 peut acceuillir plus ou moins 2^31
(environ 2 milliards).

Note: mon exemple est en DAO, mais c'est similaire avec ADO,
je peux le garantir :-)

Il faut chercher ailleurs l'origine de ton problème, du genre
une déclaration dans le style:
dim variable as String *255

Ou alors ton SELECT qui fait n troncage explicite.

En tout cas, une chose est sur: par défaut, ça fonctionne.

Bon débuggage :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
teddy
Le #15395941
En fait, je crois que la chaîne est altérée par des CR+LF dans le champ MEMO
et par la conception de la requête (truffée de Mid$() pour n'extraire que
certaines données) car une partie s'affiche avec des caractères illisibles.
Pourtant la requête renvoie un texte (chaîne) correct dans ACCESS mais pas
si lancée "à distance" par la page ASP (et ADO).
Merci pour ton aide.

"Jean-marc" de news: 46d7286c$0$14245$
teddy wrote:
Bonjour,
J'ai un recordset qui me retourne un texte un peu long (300 caractères
environ).
Si je crée une variable string pour récupérer un champ de type
commentaire du recordset (à l'origine provenant du champ MEMO d'une
base ACCESS), la chaîne est tronquée à 255 caractères.
Comment faire pour le récupérer ?
Merci pour votre avis.
Teddy



Hello,
le problème est avec ta base ou ton champ, pas avec VB.
J'ai fait une table avec un champ nommé Commentaire, ce
champ de type "memo".
J'ai ensuite mis dedans un texte de exactement 300 caractères.

Puis j'ai fait le programme VB suivant:

Dim db As Database
Dim rs As Recordset

Dim dbCommentaire As String

Set db = OpenDatabase("c:jm.mdb")
Set rs = db.OpenRecordset("select * from Table1")

dbCommentaire = rs.Fields("commentaire")

Debug.Print "len=" & Len(dbCommentaire)
Debug.Print "commentaire=" & dbCommentaire

Le résultat de l'exécution est sans surprise:
len00
commentaire=JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE 300 CARACTERES JE SUIS UN TEXTE DE 300
CARACTERES JE SUIS UN TEXTE DE*

Il n'y a pas de problème particulier de toute façon.
Une string en VB6 peut acceuillir plus ou moins 2^31
(environ 2 milliards).

Note: mon exemple est en DAO, mais c'est similaire avec ADO,
je peux le garantir :-)

Il faut chercher ailleurs l'origine de ton problème, du genre
une déclaration dans le style:
dim variable as String *255

Ou alors ton SELECT qui fait n troncage explicite.

En tout cas, une chose est sur: par défaut, ça fonctionne.

Bon débuggage :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Publicité
Poster une réponse
Anonyme