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

Bases de données Delphi Discussion :

Delphi + SQlite (Aducom)


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 32
    Points
    32
    Par défaut Delphi + SQlite (Aducom)
    Bonjour tout le monde,

    je cherche a développer une application connectée à une base Sqlite via les composants aducom et je rencontre actuellement un problème.

    J'ai une table avec entre autres champs un ID, un NAME et DIAMETER.

    Dans mon application, j'affiche le contenu de ma base grâce à diffèrent composants et je peux créer une nouvelle ligne(record) et l'éditer. Lorsque je créée une nouvelle ligne, tout apparait correctement dans mon appli. Cependant, si je quitte l'appli et la relance, le contenu de la table est différent. Le contenu de la nouvelle ligne est identique exceptée pour le champ NAME qui se sera transformé en 'DIAMETER' ou 'DIAMET'.
    Au final, chaque ligne créée dans mon appli à pour champ nom 'DIAMETER' ou 'DIAMET'.

    Je me demande donc pourquoi dans un premier temps la valeur NAME qui apparait(grace à un dbedit) est bien celle saisie alors que dans ma base
    le champ vaut 'DIAMETER' ou 'DIAMET'? Et pourquoi je me retrouve avec dans le champ NAME le nom (ou une partie) d'un autre champ?


    Pour info, jusqu a maintenant j'etais connecté à une base PARADOX(BDE) et je n'avais pas ce genre de problème. Deux choses ont changés, le TDatabase est maintenant un TASQLite3DB et les TTable sont maintenant des TASQLite3Table.

    Quelqu'un aurait il une idée?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    736
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 736
    Points : 822
    Points
    822
    Par défaut
    Citation Envoyé par user8 Voir le message

    Je me demande donc pourquoi dans un premier temps la valeur NAME qui apparait(grace à un dbedit) est bien celle saisie alors que dans ma base
    le champ vaut 'DIAMETER' ou 'DIAMET'? Et pourquoi je me retrouve avec dans le champ NAME le nom (ou une partie) d'un autre champ?


    Pour info, jusqu a maintenant j'etais connecté à une base PARADOX(BDE) et je n'avais pas ce genre de problème. Deux choses ont changés, le TDatabase est maintenant un TASQLite3DB et les TTable sont maintenant des TASQLite3Table.

    Quelqu'un aurait il une idée?
    la propriété Fields de ta grille peut être...

    ps: pourquoi avoir migrer de paradox à SQLLite : c'est quand même pas courant...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    J'utilise couramment SQLite pour des petites applications qui ont besoin d'une base simple.

    Je n'ai jamais eu de problème avec Auducom. Maintenant, j'utilise les composants Zeoslib qui me semblent plus pratique, ils sont en freeware. Question de goût. Tu pourrais essayer pour voir si cela répond à tes difficultés.

    Par contre, pour la saisie, je ne prends jamais dbedit, mais simplement TEdit pour saisir, puis j'inclus dans ma base avec un TQuery et une insertion et update pour modification.

    Pour examiner ton problème, il serait bien que tu nous donnes un peu de code afin que nous puissions vérifier. Il doit y avoir une anomalie quelque part ?

    Vérifies aussi la version de SQLite, car il y a une version qui provoquait une erreur. Elle a été rapidement corrigée, la dernière fonctionne parfaitement version 3.6.7

    Moi aussi, j'ai migré de Paradox vers SQLite, Firebird ou SQL Server en fonction de mes développements. Ceci évite d'installer le BDE sur les ordinateurs qui recevront l'application et pour les deux dernières bases de disposer Serveur/Clients. Par contre, j'ai encore des applications anciennes qui fonctionnent sous Paradox sans aucun souci

    Bon courage et à ta disposition

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Salut seabs,

    merci pour ta reponse. Pour ce qui est de la version, j'utilise la derniere version des composants Aducom. J'utilise sqlite3.dll inclus dans le pack.

    Sinon, j'ai differente table de type :
    CREATE TABLE "MyTable" (
    "ID" INTEGER PRIMARY KEY NOT NULL ,
    "NAME" VARCHAR,
    "TYPE" INTEGER,
    "HEIGHT" FLOAT,
    "LENGTH" FLOAT,
    "WIDTH" FLOAT,
    "STYPE" INTEGER,
    "MTYPE" INTEGER,
    "R" FLOAT,
    "File" VARCHAR,
    "DIAMETER" FLOAT)


    et voila comment je crée une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    with Table do 
    Begin 
      Append; 
      Edit; 
     
      FieldByName('ID').asinteger:=EdtID; 
      FieldByName('NAME').asString:=EdtName; 
      [...] 
      FieldByName('DIAMETER').asFloat:=EdtDiameter;  
     
      try 
         post; 
      Except 
        [...] 
      End; 
    End

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Pour créer mes tables, j'utilise la présentation ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     CREATE TABLE [TB_RAPPROCH]
     ([PK_RAPP] INTEGER NOT NULL PRIMARY KEY,
      [FK_JAL] INTEGER NOT NULL ON CONFLICT ROLLBACK,
      [FK_ECRIT] INTEGER NOT NULL ON CONFLICT ROLLBACK,
      [POINTAGE] BOOLEAN NOT NULL DEFAULT FALSE,
      [DATE_RAPP] DATE);
    Je ne sais pas si le [ est équivalent ".

    SQLite ne gère pas VARCHAR, pour lui il traite toutes les chaînes en TEXT.

    Par contre, je ne comprends pas pourquoi, lorsque tu veux créer un ligne, tu mets "Append" et "Edit". En effet, chacun se suffit à lui même.

    • Append - Pour créer une ligne
    • Edit - Pour modifier une ligne


    Pour moi, il s'agit d'une erreur qui peut provoquer le dysfonctionnement mentionné dans ton post ?

    La suite me semble correcte

    Compte tenu de ta méthode, il te serait facile d'utiliser un Query puisque SQLITE gére le SQL92.

    Tu as une documentation sur http://www.sqlite.org/ qui très explicite sur tous ces points.

    En tout état de cause, cela fonctionnement parfaitement chez moi, l'ensemble doit donc fonctionner chez toi.

    Pour créer les tables, tu peux utiliser SQLITE Expert http://www.sqliteexpert.com/. IL existe une version free et une version pro payante. J'utilise la seconde, car elle permet un confort important pour créer les tables et faire des tests. Je n'ai jamais utiliser la version free. Il faut tester.

    A ta disposition pour tout autre renseignement, dans la mesure de mes connaissances.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Append crée une ligne vide mais ne la bascule pas en édition.
    L'autre solution serai d'utiliser un AppendRecord(...).

    Mon problème a été résolu. Aducom m'a fournit un correctif. Une nouvelle version des composants ADUCOM incluant ce correctif devrait paraitre sous peu.

    Merci pour ton aide.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Merci de l'information concernant Aducom.

    Bon courage

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

Discussions similaires

  1. delphi & SQLite
    Par helmis dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/12/2008, 10h09
  2. [SQLite/Aducom] Remplir un DBGrid
    Par fredtheman dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/05/2008, 01h38
  3. Borland + sqlite (aducom) + string > 256 char = pas conte
    Par spyroux dans le forum C++Builder
    Réponses: 1
    Dernier message: 16/12/2005, 22h48

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