Chercher des lignes de type string et les convertir au type int dans dbgrid

cs_sosososo Messages postés 21 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 25 novembre 2004 - 24 nov. 2004 à 21:23
Wriggles Messages postés 31 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2009 - 26 nov. 2004 à 16:31
Bonjour,

J'ai un problème de convertir une variable string to int. En fait, J'ai ma dbgrid qui contient 2 colonnes : 'Code' et 'libellé' . Dans le Code par exemple les valeurs sont : AB1,AB2,SS1, 1,2,3,4,5,6,7,8,9 10,11..ect. Le but est de trier ce dbgrid par code et libellé. Si je trie par code, alors, il affiche : 1,10,11,12..,2,20,21,22,23..,3,30,31,32,...,4,40,41,...,AB1,AB2,.... (Toutes les lignes dans les 2 colonnes sont de type string).

Moi, je veux qu'il affiche : 1,2,3,4.. 10,11,12...,20,21,22,...AB1,AB2..ect..

J'aimerai bien savoir si on peut d'abord chercher dans ce DBgrid (dans le colonne 'Code') s'il ya des lignes qu'on peut convertir de string en int . Sinon, on les laisse en type string.

Merci bcp!!

3 réponses

lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005
24 nov. 2004 à 22:33
tu fait ton tri en SQL ?

car le SQL fait de la sorte :

premier caractère = du plus peti au plus grand
d'autre caractère ? alors le second caractère du plus petit au plus grand

dou ce 1,10,11 etc...

il faut chercher du cote SQL ...

de quelle base de donné tu dispose ?
0
cs_sosososo Messages postés 21 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 25 novembre 2004
25 nov. 2004 à 10:59
Rebonjour,

J'utilise la base sql. Je sais bien que lorqu'on trie , il affiche le code le plus petit au plus grand.

Mais dans mon cas, le code contient le numéro (mais du type alhanumerique) et l'alphanumerique. Ex: NB1,NB2, SS3, FR4, 1,2,3,..., 10, 11, 12.. Mais quand on fait le trie, il me sort : 1,10,11,12,13,..,2,20,21,..., FR4,NB1,NB2,SS3.

Est-ce qu'il ya le moyen pour savoir / chercher si dans les lignes (Code), il y a des lignes qu'on pourra convertir un numérique si c possible de les convertir, sinon, on les laisse en type alphanumerique.

Merci.
0
Wriggles Messages postés 31 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2009
26 nov. 2004 à 16:31
Salut à toi,

Ce que tu souhaites va être chaud, un champ ne peut être que d'un type (ou alors en passant par les varaints). Si ton pb ne se situe qu'au niveau du tri, tu pourrais formater les valeurs. Par exemple, si ton code est sur 3 positions au lieu d'afficher "1" affiche plutôt "001". De cette manière tu pourras résoudre ce souci.

Pour ce genre de formatage, tu peux passer par l'évennement OnGetText de ton champ code. Clea peut donner un programme de ce type :

function formatage(valeur : string;taille : integer) : string;
begin
  Result := Trim(valeur );
  while length(Result) < taille do
    Result := '0' + Result;
end;

// Formate le champ souhaitée sur n positons en affichage
MonChampGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  // Text renvoie ce qui sera affiché dans tes composants
   Text := Formatage(MonChamp.asstring,3);
end;

// Renvoie dans lecache le champ formaté
MonChampSetText(Sender: TField;
  const Text: String);
begin
   MonChamp.AsString:= Text;
end;


En espérant que cela résolve ton pb.

A+
0
Rejoignez-nous