Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
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

2 réponses

Avatar
Jean-marc
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_' ;
Avatar
teddy
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" a écrit dans le message
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_' ;