Chercher des lignes de type string et les convertir au type int dans dbgrid
cs_sosososo
Messages postés21Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention25 novembre 2004
-
24 nov. 2004 à 21:23
Wriggles
Messages postés31Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 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!!
A voir également:
Java cannot invoke equals(int) on the primitive type int
cs_sosososo
Messages postés21Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention25 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.
Wriggles
Messages postés31Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 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;