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

MSDE: problème avec ORDER BY

4 réponses
Avatar
Pierre Fauconnier
Bonjour à toutes et tous...

Sous MSDE, j'ai le problème suivant en pilotant ma base via ADO
cm.commandtext="Select nom, prenom from Contacts order by nom;"
cm.execute
=> message d'erreur "The text, ntext and image data types cannot be use in
an ORDER BY clause...

Comment fait-on pour trier la table, alors?

Merci dès à présent pour tout élément de solution


--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

4 réponses

Avatar
Benoit
effectivement il n'est pas possible de trier sur ce type de colonne. il faut
regarder les conversions possibles en varchar... faire un cast ou convert et
trier sur la colonne modifiée

Select nom, prenom from Contacts order by CAST(nom as varchar(nbre de
caractères souhaités))

Par contre pour un nom je ne vois pas intérêt de prendre ce type de champs.
Un nom ne peut pas prendre un nombre illimité de caractères.

--
Benoit

"Pierre Fauconnier" a écrit dans le
message de news:e%23%23d%
Bonjour à toutes et tous...

Sous MSDE, j'ai le problème suivant en pilotant ma base via ADO
cm.commandtext="Select nom, prenom from Contacts order by nom;"
cm.execute
=> message d'erreur "The text, ntext and image data types cannot be use in
an ORDER BY clause...

Comment fait-on pour trier la table, alors?

Merci dès à présent pour tout élément de solution


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci




Avatar
Fred BROUARD
excuse moi de te le dire si cruement mais c'est absolument délirant d'utiliser un type text ou encore plus ntext pour
des colones comme les noms et prénoms.

text et ntext sont fait pour mettre des blobs, c'est à dire des flux de caractères supposées TRES GRAND.
Par exemple 2 Mo de texte ou un million de caractères.
C'est pour cela que le tri sur ces types de colonnes n'est pas autorisé afin de ne pas mettre à genou le SGBDR !

Comme je suppose que tes noms et prénoms feront difficilement plus de 8 000 caractères, il serait sage d'utiliser un
type approprié comme CHAR (performance) ou VARCHAR (facilité) limité à *seulement* 8 000 caractères.

Si tu veut en plus être intelligent, met une longueur appropriée. Par exemple 32 caractères !

A +


--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Pierre Fauconnier a écrit:
Bonjour à toutes et tous...

Sous MSDE, j'ai le problème suivant en pilotant ma base via ADO
cm.commandtext="Select nom, prenom from Contacts order by nom;"
cm.execute
=> message d'erreur "The text, ntext and image data types cannot be use in
an ORDER BY clause...

Comment fait-on pour trier la table, alors?

Merci dès à présent pour tout élément de solution




Avatar
Pierre Fauconnier
Bonsoir Frédéric...

Aucun problème pour ta remarque... Elle me fait progresser...

En fait, je n'avais pas porté attention du tout au fait qu'un champ Text
était si grand. Venant de Access, je transposais "Texte" de Access en Text
de SQL... :(... et je ne comprenais pas pourquoi ma requête, du coup, ne
fonctionnait pas... Merci donc de m'avoir ouvert les yeux sur ce point...

Cela étant, je profite de l'occasion pour te remercier pour le site
www.sqlpro.developpez.com qui m'a déjà beaucoup aidé pour mysql et php et
qui va m'aider pour VB6 et ADO... J'ai d'ailleurs commandé ton livre, qui
n'était pas de stock dans ma librairie... C'est génial de pouvoir trouver de
l'info comme celle-là... ;-)


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Fred BROUARD" a écrit dans le message de
news:
excuse moi de te le dire si cruement mais c'est absolument délirant


d'utiliser un type text ou encore plus ntext pour
des colones comme les noms et prénoms.

text et ntext sont fait pour mettre des blobs, c'est à dire des flux de


caractères supposées TRES GRAND.
Par exemple 2 Mo de texte ou un million de caractères.
C'est pour cela que le tri sur ces types de colonnes n'est pas autorisé


afin de ne pas mettre à genou le SGBDR !

Comme je suppose que tes noms et prénoms feront difficilement plus de 8


000 caractères, il serait sage d'utiliser un
type approprié comme CHAR (performance) ou VARCHAR (facilité) limité à


*seulement* 8 000 caractères.

Si tu veut en plus être intelligent, met une longueur appropriée. Par


exemple 32 caractères !

A +


--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Pierre Fauconnier a écrit:
> Bonjour à toutes et tous...
>
> Sous MSDE, j'ai le problème suivant en pilotant ma base via ADO
> cm.commandtext="Select nom, prenom from Contacts order by nom;"
> cm.execute
> => message d'erreur "The text, ntext and image data types cannot be use


in
> an ORDER BY clause...
>
> Comment fait-on pour trier la table, alors?
>
> Merci dès à présent pour tout élément de solution
>
>



Avatar
Pierre Fauconnier
Bonsoir Benoit,

Merci pour ta remarque. Alliée à celle de Frédéric, je vais pouvoir
reconstruire mes tables un peu plus proprement, en ne faisant pas de
transposition hasardeuse entre Access et SQL


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Benoit" a écrit dans le message de
news:
effectivement il n'est pas possible de trier sur ce type de colonne. il


faut
regarder les conversions possibles en varchar... faire un cast ou convert


et
trier sur la colonne modifiée

Select nom, prenom from Contacts order by CAST(nom as varchar(nbre de
caractères souhaités))

Par contre pour un nom je ne vois pas intérêt de prendre ce type de


champs.
Un nom ne peut pas prendre un nombre illimité de caractères.

--
Benoit

"Pierre Fauconnier" a écrit dans le
message de news:e%23%23d%
> Bonjour à toutes et tous...
>
> Sous MSDE, j'ai le problème suivant en pilotant ma base via ADO
> cm.commandtext="Select nom, prenom from Contacts order by nom;"
> cm.execute
> => message d'erreur "The text, ntext and image data types cannot be use


in
> an ORDER BY clause...
>
> Comment fait-on pour trier la table, alors?
>
> Merci dès à présent pour tout élément de solution
>
>
> --
> Pierre Fauconnier ()
> Les sept laids tuent ( Lewis Carol )
> Remplacez nospam.nospam par pfi.be pour répondre. Merci
>
>