Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
On doit se contenter de 255 caractères. Bill l'a dit.Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
On doit se contenter de 255 caractères. Bill l'a dit.
Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
On doit se contenter de 255 caractères. Bill l'a dit.Bonjour,
Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
récupérer de texte de plus de 255 caractères dans le champ d'une requête,
sauf en utilisant directement un champ mémo issu d'un table.
J'ai par exemple la requête suivante :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Où Table1 est une table quelconque (peu importe).
J'utilise Access 2002.
Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je la
place comme source d'un formulaire ; correctement dans le sens où la zone de
texte affiche bien les B après les 255 A.
Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères, mais
à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon avis,
issus dun débordement de mémoire pour le champ).
Ma vraie question est :
- Pourquoi Access est-il capable de récupérer correctement le texte de ce
champ?
- Y a-t-til un moyen de récupérer le texte de ce champ correctement dans un
recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
Access?
Si quelqu'un avait des informations sur le sujet, j'en serais très
reconnaissant.
Bonjour.
tu n'as oublié qu'une seule chose, le 256e caractère est un caractère Null
(00 en ascii) qui indique la fin de champ Access. dans certaines conditions,
il est possible de lire un nombre de caractères sans tenir compte du code
fin de zone, mais pas dans une utilisation normale d'access.
pour solutionner tu fais tes concaténations dans un contrôle texte de ton
formulaire ou état et là ça marche.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Bonjour,
|
| Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
| récupérer de texte de plus de 255 caractères dans le champ d'une requête,
| sauf en utilisant directement un champ mémo issu d'un table.
|
| J'ai par exemple la requête suivante :
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| Où Table1 est une table quelconque (peu importe).
| J'utilise Access 2002.
|
| Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je
la
| place comme source d'un formulaire ; correctement dans le sens où la zone
de
| texte affiche bien les B après les 255 A.
|
| Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
| ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères,
mais
| à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon
avis,
| issus dun débordement de mémoire pour le champ).
|
| Ma vraie question est :
| - Pourquoi Access est-il capable de récupérer correctement le texte de ce
| champ?
| - Y a-t-til un moyen de récupérer le texte de ce champ correctement dans
un
| recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
| Access?
|
| Si quelqu'un avait des informations sur le sujet, j'en serais très
| reconnaissant.
|
Bonjour.
tu n'as oublié qu'une seule chose, le 256e caractère est un caractère Null
(00 en ascii) qui indique la fin de champ Access. dans certaines conditions,
il est possible de lire un nombre de caractères sans tenir compte du code
fin de zone, mais pas dans une utilisation normale d'access.
pour solutionner tu fais tes concaténations dans un contrôle texte de ton
formulaire ou état et là ça marche.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" <LiR@discussions.microsoft.com> a écrit dans le message de news:
400AB49E-47F2-4C8A-A062-83E582C7B12A@microsoft.com...
| Bonjour,
|
| Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
| récupérer de texte de plus de 255 caractères dans le champ d'une requête,
| sauf en utilisant directement un champ mémo issu d'un table.
|
| J'ai par exemple la requête suivante :
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| Où Table1 est une table quelconque (peu importe).
| J'utilise Access 2002.
|
| Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je
la
| place comme source d'un formulaire ; correctement dans le sens où la zone
de
| texte affiche bien les B après les 255 A.
|
| Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
| ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères,
mais
| à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon
avis,
| issus dun débordement de mémoire pour le champ).
|
| Ma vraie question est :
| - Pourquoi Access est-il capable de récupérer correctement le texte de ce
| champ?
| - Y a-t-til un moyen de récupérer le texte de ce champ correctement dans
un
| recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
| Access?
|
| Si quelqu'un avait des informations sur le sujet, j'en serais très
| reconnaissant.
|
Bonjour.
tu n'as oublié qu'une seule chose, le 256e caractère est un caractère Null
(00 en ascii) qui indique la fin de champ Access. dans certaines conditions,
il est possible de lire un nombre de caractères sans tenir compte du code
fin de zone, mais pas dans une utilisation normale d'access.
pour solutionner tu fais tes concaténations dans un contrôle texte de ton
formulaire ou état et là ça marche.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Bonjour,
|
| Il apparaît, d'après les documentations et la pratique, qu'on ne peut pas
| récupérer de texte de plus de 255 caractères dans le champ d'une requête,
| sauf en utilisant directement un champ mémo issu d'un table.
|
| J'ai par exemple la requête suivante :
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| Où Table1 est une table quelconque (peu importe).
| J'utilise Access 2002.
|
| Cette requête s'afffiche correctement si je l'ouvre dans Access ou si je
la
| place comme source d'un formulaire ; correctement dans le sens où la zone
de
| texte affiche bien les B après les 255 A.
|
| Ce qui m'intrigue est que si j'accède à cette requête par un Recordset ADO
| ou DAO, la valeur du champ Expr1 me renvoie un texte de 259 caractères,
mais
| à partir du 256ème, ce sont des caractères qui n'ont pas de sens (à mon
avis,
| issus dun débordement de mémoire pour le champ).
|
| Ma vraie question est :
| - Pourquoi Access est-il capable de récupérer correctement le texte de ce
| champ?
| - Y a-t-til un moyen de récupérer le texte de ce champ correctement dans
un
| recordset ou cela reste-t-il un privilège souverain exclusif de Microsoft
| Access?
|
| Si quelqu'un avait des informations sur le sujet, j'en serais très
| reconnaissant.
|
"ton mécanisme" c'est le code Null à la 256e position.
cette limitation ne gêne en rien car tu peux remplacer ton champ texte par
un champ mémo et c'est ce qu'on fait dans les adresses depuis de nombreuses
années. à part les tris et regroupement, mais il est rare de trier ou de
regrouper sur 500 caractères.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Bonjour,
|
| Je ne comprends pas très bien ton explication...
| Cela fonctionne bien dans un formulaire Access comme j'ai dit, mais le
| problème concerne les champs des recordset. Le champ du Recordset lit
| réellement le nombre de caractères de la chaîne, mais c'est la chaîne qui
| semble stockée dans un buffer de 255 caractères maximum. Ainsi, avec un
champ
| de 500 caractères, j'aurai 255 premiers caractères corrects suivis de 255
| "caractères" aléatoires (comme j'imagine, pris sur la mémoire qui suit le
| buffer mais qui n'est pas remplie avec le texte d'origine).
| Il reste qu'il existe un mécanisme pour que la requête fournisse
| correctement les caractères au-delà du 255ème, puisque Access y arrive.
Mais
| lequel?
|
"ton mécanisme" c'est le code Null à la 256e position.
cette limitation ne gêne en rien car tu peux remplacer ton champ texte par
un champ mémo et c'est ce qu'on fait dans les adresses depuis de nombreuses
années. à part les tris et regroupement, mais il est rare de trier ou de
regrouper sur 500 caractères.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" <LiR@discussions.microsoft.com> a écrit dans le message de news:
2B6DA542-9800-4702-87FB-AEBACFDCAA60@microsoft.com...
| Bonjour,
|
| Je ne comprends pas très bien ton explication...
| Cela fonctionne bien dans un formulaire Access comme j'ai dit, mais le
| problème concerne les champs des recordset. Le champ du Recordset lit
| réellement le nombre de caractères de la chaîne, mais c'est la chaîne qui
| semble stockée dans un buffer de 255 caractères maximum. Ainsi, avec un
champ
| de 500 caractères, j'aurai 255 premiers caractères corrects suivis de 255
| "caractères" aléatoires (comme j'imagine, pris sur la mémoire qui suit le
| buffer mais qui n'est pas remplie avec le texte d'origine).
| Il reste qu'il existe un mécanisme pour que la requête fournisse
| correctement les caractères au-delà du 255ème, puisque Access y arrive.
Mais
| lequel?
|
"ton mécanisme" c'est le code Null à la 256e position.
cette limitation ne gêne en rien car tu peux remplacer ton champ texte par
un champ mémo et c'est ce qu'on fait dans les adresses depuis de nombreuses
années. à part les tris et regroupement, mais il est rare de trier ou de
regrouper sur 500 caractères.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Bonjour,
|
| Je ne comprends pas très bien ton explication...
| Cela fonctionne bien dans un formulaire Access comme j'ai dit, mais le
| problème concerne les champs des recordset. Le champ du Recordset lit
| réellement le nombre de caractères de la chaîne, mais c'est la chaîne qui
| semble stockée dans un buffer de 255 caractères maximum. Ainsi, avec un
champ
| de 500 caractères, j'aurai 255 premiers caractères corrects suivis de 255
| "caractères" aléatoires (comme j'imagine, pris sur la mémoire qui suit le
| buffer mais qui n'est pas remplie avec le texte d'origine).
| Il reste qu'il existe un mécanisme pour que la requête fournisse
| correctement les caractères au-delà du 255ème, puisque Access y arrive.
Mais
| lequel?
|
tu ne peux pas exploiter (concaténer) tes deux expressions dans le VB ou le
formulaire ou l'état ? Chaque expression peut-elle faire plus de 255
caractères? ces expressions sont-elles le résultat de critères dans la
requête elle-même ?
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Merci pour ton explication,
|
| Mais le problème subsiste pour ma requête :
|
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| En réalité je n'ai pas de champ, mais le résultat d'une expression.
| A moins que l'on puisse expliquer au moteur Jet que Expr1 doit être
| interprété comme Memo ou LONGTEXT, la valeur récupérée reste non pas
tronquée
| mais incorrecte.
|
tu ne peux pas exploiter (concaténer) tes deux expressions dans le VB ou le
formulaire ou l'état ? Chaque expression peut-elle faire plus de 255
caractères? ces expressions sont-elles le résultat de critères dans la
requête elle-même ?
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" <LiR@discussions.microsoft.com> a écrit dans le message de news:
8ACA71FE-398C-44B2-A0CC-49AC4F8F13D1@microsoft.com...
| Merci pour ton explication,
|
| Mais le problème subsiste pour ma requête :
|
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| En réalité je n'ai pas de champ, mais le résultat d'une expression.
| A moins que l'on puisse expliquer au moteur Jet que Expr1 doit être
| interprété comme Memo ou LONGTEXT, la valeur récupérée reste non pas
tronquée
| mais incorrecte.
|
tu ne peux pas exploiter (concaténer) tes deux expressions dans le VB ou le
formulaire ou l'état ? Chaque expression peut-elle faire plus de 255
caractères? ces expressions sont-elles le résultat de critères dans la
requête elle-même ?
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/
Cet été, j'en ai rien à coder, je me forme : les devoirs de vacances
http://www.comscamp.com/Tracker/Redirect.ashx?linkidJd96883-a859-4212-b4a0-bce47c8e0d99
"LiR" a écrit dans le message de news:
| Merci pour ton explication,
|
| Mais le problème subsiste pour ma requête :
|
| SELECT String(255,"A") & String(4,"B") AS Expr1
| FROM Table1;
|
| En réalité je n'ai pas de champ, mais le résultat d'une expression.
| A moins que l'on puisse expliquer au moteur Jet que Expr1 doit être
| interprété comme Memo ou LONGTEXT, la valeur récupérée reste non pas
tronquée
| mais incorrecte.
|
En fait, je ne veux pas utiliser ces données dans un formulaire ni un état,
mais les récupérer pour des traitements de mon application (qui fonctionne en
VB ou VBA indépendamment d'Access mais qui utilise une base Jet manipulée par
des recordsets ADO ou DAO).
Le champ résulte d'une expression qui est :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Certes, cette requête ne sert à rien (c'est juste un exemple, le plus simple
possible), mais cette expression, aussi simple soit-elle, reste impossible à
évaluer correctement dans un recordset.
En fait, je ne veux pas utiliser ces données dans un formulaire ni un état,
mais les récupérer pour des traitements de mon application (qui fonctionne en
VB ou VBA indépendamment d'Access mais qui utilise une base Jet manipulée par
des recordsets ADO ou DAO).
Le champ résulte d'une expression qui est :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Certes, cette requête ne sert à rien (c'est juste un exemple, le plus simple
possible), mais cette expression, aussi simple soit-elle, reste impossible à
évaluer correctement dans un recordset.
En fait, je ne veux pas utiliser ces données dans un formulaire ni un état,
mais les récupérer pour des traitements de mon application (qui fonctionne en
VB ou VBA indépendamment d'Access mais qui utilise une base Jet manipulée par
des recordsets ADO ou DAO).
Le champ résulte d'une expression qui est :
SELECT String(255,"A") & String(4,"B") AS Expr1
FROM Table1;
Certes, cette requête ne sert à rien (c'est juste un exemple, le plus simple
possible), mais cette expression, aussi simple soit-elle, reste impossible à
évaluer correctement dans un recordset.