DatabaseColumnType

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
tlopez05
Messages : 2
Inscription : mer. 29/avr./2020 9:38

DatabaseColumnType

Message par tlopez05 »

Bonjour,
MySQL(mariadb)
j'ai une table avec une clé de a 8 chiffres ex 06336633,00687580,10025536
query(idDB,"select * from matable;")
puis un While NextDatabaseRow(idDB)

une boucle i sur les Fields
et je teste pour afficher les champs de ma table
Select DatabaseColumnType(idDB,i)
Case #PB_Database_Long
ligne + FormatNumber(GetDatabaselong(idDB,i),2,","," ")+varsep
Case #PB_Database_String
ligne + GetDatabaseString(idDB,i)+varsep
etc..…
dans ce test ma clé qui est un char(8) est reconnu par datacolumntype comme un #PB_Database_Long
avez vous une idée de pourquoi ce résultat ????

Merci
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: DatabaseColumnType

Message par Marc56 »

tlopez05 a écrit :Bonjour,
MySQL(mariadb)
j'ai une table avec une clé de a 8 chiffres ex 06336633,00687580,10025536
query(idDB,"select * from matable;")
puis un While NextDatabaseRow(idDB)

une boucle i sur les Fields
et je teste pour afficher les champs de ma table
Select DatabaseColumnType(idDB,i)
Case #PB_Database_Long
ligne + FormatNumber(GetDatabaselong(idDB,i),2,","," ")+varsep
Case #PB_Database_String
ligne + GetDatabaseString(idDB,i)+varsep
etc..…
dans ce test ma clé qui est un char(8) est reconnu par datacolumntype comme un #PB_Database_Long
avez vous une idée de pourquoi ce résultat ????

Merci
Je ne sais pas pourquoi cela donne ça, mais cela dit tu n'es pas obligé de tester le type de données dans chaque champs. Il sont retourné dans l'ordre de la requête, donc tu peux utiliser directement GetDatabaseString( GetDatabaseDouble etc puisqu'en principe tu connais leur type à l'avance.
En plus, tes champs sont numériques, mais commencent par un zéro et n'ont pas de virgule, donc ils devraient être stockés comme chaine ?
:wink:
tlopez05
Messages : 2
Inscription : mer. 29/avr./2020 9:38

Re: DatabaseColumnType

Message par tlopez05 »

la procédure doit afficher tout les champs de la table (passée en paramètre) les tables à examiner ont des champs diverses (type et taille)
la procédure fonctionne globalement sauf pour les champs de type char contenant uniquement des chiffres. le type de champ renvoyé est #PB_Database_Long mais si dans la table le champ est du type varchar la fonction DatabaseColumnType renvoie #PB_Database_string
je ne sais pas si cette anomalie est du à SQL ou a la fonction purebasic.
Répondre