IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

SQLite : Lazarus voit le type Currency comme un stringfield [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Points : 69
    Points
    69
    Par défaut SQLite : Lazarus voit le type Currency comme un stringfield
    Bonjour à tous,

    Je passe des bases ACCESS vers SQLITE.

    J'avais un problème avec les champs MEMO et cela est résolu.


    J'ai vu qu'il y avait les types suivants disponibles dans SQLITE
    Integer
    AutoInc
    String
    Memo
    Bool
    Float
    Word
    DateTime
    Date
    Time
    LargeInt
    Currency

    Cependant, Quand je déclare un champ de Type Currency, Lazarus le voit comme un stringfield.

    J'ai vu dans la doc que cela arrive quand on ne crée pas une table avec TSqliteDataset .

    Mais ou est ce fameux TSqliteDataset dans Lazarus ???
    Je ne le voix pas dans SQLDB, ni dans ZEOS

    Pour info, j'utilise SQLITE Manager

    J'en perds mon latin, mon français, mon anglais..

    Ha....... les mystères de l'informatique

    Merci d'avance

    Jazz

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Jazz77 Voir le message
    Cependant, Quand je déclare un champ de Type Currency, Lazarus le voit comme un stringfield.
    Je pense plutôt à un effet du typage dynamique et adaptatif qu'applique SqLite et qui induit en erreur Lazarus...
    Citation Envoyé par Jazz77 Voir le message
    Mais ou est ce fameux TSqliteDataset dans Lazarus ???
    Je ne le voix pas dans SQLDB, ni dans ZEOS
    C'est un composant qui est fourni avec Lazarus, mais qui n'est pas installé.
    Il est dans le sous dossier lazarus\components\sqlite. Il faut installer le paquet sqlitelaz.lpk et reconstruire l'EDI.
    Philippe.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Points : 69
    Points
    69
    Par défaut
    Merci Philippe pour les infos

    C'est un composant qui est fourni avec Lazarus, mais qui n'est pas installé.
    Il est dans le sous dossier lazarus\components\sqlite. Il faut installer le paquet sqlitelaz.lpk et reconstruire l'EDI.
    Cependant,je n'ai pas pas pu installer ce fameux TSqliteDataset.
    Pour être plus précis, Lazarus n'est pas content et il me la fait savoir
    IL me demandait avec force persuasion qu'il ne trouvait pas sqlite.dll.
    Normal, finalement puisque j'utilise sqlite3 et non sqlite.

    Après réflexion, ce n'est pas un problème, car je vais me cantonner dans les types standards de Sql.

    Pour les chaînes j'ai le choix entre les char et les varchar.
    C'est quoi la différence ?

    Jazz

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 300
    Points
    11 300
    Billets dans le blog
    6
    Par défaut
    Il n'y a pas de différence à mon sens pour SQLite, qui stocke tout sous forme de texte. Sinon, CHAR = champ de taille fixe, et VARCHAR = variable, mais distinction utile pour d'autres GGBD.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Points : 69
    Points
    69
    Par défaut
    Merci tourlourou pour ta réponse

    J'ai trouvé un complément de réponse à cette explication

    Quel est la différence entre CHAR et VARCHAR ?

    La différence entre CHAR et VARCHAR est que CHAR a une taille fixe, tandis que VARCHAR a une longueur variable. La longueur de CHAR est donc fixée à la longueur que nous définissons lors de la création de la table.
    Cela veut dire que CHAR à toujours la même taille et prend le même nombre de bytes tandis que VARCHAR varie.
    La longueur de CHAR et VARCHAR peut être n'importe quelle valeur comprise entre 1 et 255.

    Quand doit-on utiliser CHAR?
    - Pour stocker des mots de passe en MD5, car ils sont toujours sur 32 caractères
    - Pour stocker des codes bar, qui ne varient pas en taille.
    - …

    Quand doit-on utiliser VARCHAR?

    - Pour stocker des adresses qui varient en tailles
    - Pour stocker des mails, des noms, ou des descriptions limitées à 255 caractères.
    - …

    Nous préférons par habitude utiliser VARCHAR parce qu'il varie en taille. VARCHAR est économe car si nous déclarons un entier VARCHAR(60) et que nous n'utilisons que 20 caractères, les espaces en trop seront supprimés avant le stockage par le moteur sql.

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Je ne suis pas un expert et j'utilise sqlite avec linux et aussi pour d'autres utilisateurs sous windows. A l'installation d'une nouvelle version de lazarus ne n'installe pas le composant sqlitelaz mais la version sqlite3laz et après réorganisation de lazarus j'ai dans Data Acess le composant TSqlite3Dataset. Il faut aussi les bibliothèques libsqlite*.* sous linux et sqlite3.dll pour windows.
    Pour les différents types de champs ayant vu que certains types créer des problèmes ne n'utilise que des champs texte déclarés avec sqlitebrowser en char sauf pour la clé primaire.
    A+

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Points : 69
    Points
    69
    Par défaut
    Merci Jean pour ta réponse

    après réorganisation de lazarus j'ai dans Data Acess le composant TSqlite3Dataset
    qu'entend tu par réorganisation de Lazarus ?

    Si je comprends bien tu utilises les types char au lieu des types varchar ...
    C'est celà ?

    Jazz

  8. #8
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Ce que j'appelle la réorganisation c'est la reconstruction de l'EDI de lazarus demandée après l'installation d'un nouveau composant.
    Pour le type de champ dans mes tables sous sqlite3 j'ai trouvé plus simple, pour moi, de n'utiliser que char, les champs de mes tables ont une longueur défini à la création.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Paramètre de type procedure ou function
    Par pduceux dans le forum Lazarus
    Réponses: 5
    Dernier message: 03/09/2007, 09h45
  2. Comment modifier le symbole du type currency?
    Par toure32 dans le forum Delphi
    Réponses: 4
    Dernier message: 23/03/2007, 08h47
  3. quel type de donnée choisir pour simuler le type Currency
    Par maamar1979 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/02/2007, 12h44
  4. Champ de type ROWGUID comme clé primaire
    Par IADJOFOGUE dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/07/2006, 15h15
  5. [SQLite] SQLite et champ de type ENUM
    Par Linaa dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/05/2006, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo