Page 1 sur 1
mysql base de données
Posté : 22 oct. 2007, 12:26
par ahpatsuma
Bonjour,
J'ai crée une base de donnée mysql regroupant les nombres de la forme 0XXXXXXX 1XXXXXXX ...9XXXXXXX (huit chiffres) et qui représentent les comptes relatifs à la gestion comptable où le premier chiffre 0,1,...9 représentent les classes comptables: le plan comptable contient 10 classes, chaque classe contient un certain nombre de comptes et chaque compte est défini par ses chiffres de début ainsi les comptes 01 qui s'écrit 01000000, 0123 qui s'ecrit 01230000 appartiennent tous à la classe 0 de même les nombres 1, 11, 111, 1111, 12, 13, 19 (10000000, 11000000, 11100000, 11110000, 12000000 etc ) appartiennent tous à la classe 1. un compte qui commence par 4 appartient à la classe 4.
Problème:Ma base est créée mais les comptes de la classe 0 environ 120 comptes se confondent avec les autres par ex 01 se confond avec 1, 0123 avec 123 etc automatiquement ma base ne contient aucun compte commencant par 0 Merci de m'aider
Posté : 22 oct. 2007, 12:30
par Truc
Salut,
Regarde du coté de
zerofill (option)
EDIT : pas de double post

Posté : 22 oct. 2007, 12:32
par Hubert Roksor
Tu étais dans le bon forum mais pas dans le bon sujet.
Le problème ici c'est que tu as dû choisir un type de colonne numérique alors que tes données ne sont pas à proprement parler des nombres (autrement, il serait normal de retirer les zéros en debut de nombre). MySQL propose une option ZEROFILL, qui permet de conserver les zéros en début de nombre, regarde dans phpMyAdmin. Il faudra également spécifier la largeur de la colonne, 9 dans l'exemple, pour que le bon nombre de zéros soit ajoutés.
Sinon, tu as la possibilité d'utiliser un champs texte, CHAR(9) par exemple.
sql et base de données
Posté : 22 oct. 2007, 13:25
par ahpatsuma
Bonjour , je m'excuses pour le double post. J'avais posté mon méssage en tant qu'invité et je ne peux l'éditer.
Merci pour votre réponse rapide.
J'ai éssayé zerofill , j'ai un varchar de 10 mais alors j'ai des comptes qui n'existent plus ex: le numéro de classe qui s'ecrivait 1191 s'ecrit maintenant 0000001191 qui ne correspond à aucune classe par contre le code compte ou compte s'ecrit 0011910000 alors qu'il s'ecrivait 11910000.
Posté : 22 oct. 2007, 13:30
par Truc
Si les numéro de compte n'ont pas tous le même format (9 chiffres) alors il ne te reste plus d'autre choix que de passer par un champs texte, VARCHAR(9) comme l'indiquait Hubert.
Il n'y aura pas opération de calcul sur ces champs donc ça ne pose pas de souci.
Le zerofill est mieux avec un type numérique.
Posté : 22 oct. 2007, 14:03
par ahpatsuma
Oui effectivement la classe est considérée comme un numéro (Numero_class) qui est en fait le début du numéro de compte et le code ou comte proprement dit s'écrit classexxxx ex:
insert into CLASSE_PLAN_COMPTABLE values (1,135,"Provisions réglementées",3,13500000);
insert into CLASSE_PLAN_COMPTABLE values (1,1351,"Provisions pour amortissements dérogatoires",4,13510000);
....
ex de ce qui ne marche pas:
' insert into CLASSE_PLAN_COMPTABLE values (1,011,"Réouverture des comptes de financement permanent",3,01100000);
insert into CLASSE_PLAN_COMPTABLE values (1,0111,"Réouverture des comptes des capitaux propres",4,01110000)
Posté : 22 oct. 2007, 14:37
par Truc
même en varchar sans zerofill ?
Posté : 22 oct. 2007, 17:15
par Invité
OUI j'ai mis varchar à 9 et à 8 même problème. Je devrais peut être chercher du coté js je sais pas introduire une exception pour la dernière classe
Posté : 22 oct. 2007, 19:41
par Truc
Le souci vient d'ailleurs... ... ... non pas de mars
d'après la requête proposée
Code : Tout sélectionner
insert into CLASSE_PLAN_COMPTABLE values (1,0111,"Réouverture des comptes des capitaux propres",4,01110000)
la dernière valeur donc celle qui nous intéresse (ainsi que la 2ème) sont des entiers car pas de quotes pour encadrer une éventuelle chaine de caractères (Varchar)
Ce qui me fais douter sur le type de champ que tu utilises (pour les 2 valeurs)

SQL & Bases de données
Posté : 22 oct. 2007, 19:53
par Invité
Ok je revise tout, Je vous tiens au courant . Merci pour votre aide si vous avez une idée à me soumettre.
Posté : 22 oct. 2007, 20:27
par Hubert Roksor
Essaie avec CHAR(9), pas VARCHAR. Si ça ne fonctionne pas, poste le schéma de ta table sous la forme d'une commande CREATE TABLE.