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 :

Accès à une base SQLite et affichage [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut Accès à une base SQLite et affichage
    Bonjour,
    j'essaie de mettre en pratique un exemple de lecture d'une bdd selon le wiki http://wiki.freepascal.org/SQLdb_Tutorial1/fr#SQLite_2
    ma base de donnée est
    Nom : bddessai.JPG
Affichages : 939
Taille : 44,5 Ko
    et dans les propriétés de DBconnection DatabaseName j'ai bien copié le lien qui correspond.

    Quand je compile tout se passe bien
    mais rien ne s'affiche dans le grid quand je clique sur le button1
    voila le code que j'ai créé :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    unit mabaseunit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls,
      Graphics, Dialogs, StdCtrls, DBGrids;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        DBConnection: TSQLite3Connection;
        SQLQuery1: TSQLQuery;
        SQLTransaction1: TSQLTransaction;
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SQLQuery1.Close;
      SQLQuery1.SQL.Text:= 'select * from ESSAI;';
      DBConnection.Connected:= True;
      SQLTransaction1.Active:= True;
      SQLQuery1.Open;
    end;
     
     
    procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    begin
      SQLQuery1.Close;
      SQLTransaction1.Active:= False;
      DBConnection.Connected:= False;
    end;
     
     
    end.
    Merci de vos conseils

    Bien cordialement

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    hello,
    le mieux serait que tu nous mettes en pièce jointe ( si cela est possible et pas indiscret) les sources de ton projet. C'est à dire la base sqlite3, les fichiers .lpi,.lpr,.pas,.lfm,.res.
    Parce que si ça se joue sur les propriétés qui ont été éditées dans les composants, cela sera plus évident à trouver.

    Ami calmant, J.P

  3. #3
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut
    Bonjour,
    non rien à cacher
    en pj les fichiers demandés
    cordialement,
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 452
    Par défaut
    Bonjour,

    J'ai juste rajouté datasource1 à la propriété datasource de ta dbgrid pour voir les données.

    Cordialement

  5. #5
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut je viens de regarder ton fichier essailazarus.sqlite avec l'utilitaire DataDesktop c'est bizarre rien ne s'affiche. Et effectivement avec datasource du DBGrid définit ca affiche mais (MEMO) dans les Champs NOM et PRENOM je suppose que ce n'etait pas ce que tu avais enegistré
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Ça s'ouvre bien avec l'extension SQLite Manager de Firefox, affiche le schéma 3 (le fichier débute d'ailleurs par la chaîne "SQLite Format 3"). En outre, les champs s'affichent bien...
    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 !

  7. #7
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut
    Bonjour
    1) oui j'avais oublié de mettre "datasource1 à la propriété datasource de ta dbgrid" merci

    2) oui ça affiche (MEMO) quand je laisse le champ au format TEXT (comme NOM dans l'exemple)

    3) J'ai changé TEXT par VAR pour le prénom (mais l'outil Db browser for Sqlite ne semble pas proposer pas ce format, je l'ai fait directement via SQL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `ESSAI3` (
    	`ID`	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    	`NOM`	TEXT,
    	`AGE`	INTEGER,
    	`PRENOM`	CHAR
    );
    les integers passent bien et voila ce que ça donne :

    Nom : bdd_ok.JPG
Affichages : 832
Taille : 21,5 Ko

    Il n'y a pas d'option dans Lazarus pour lire les TEXT sans retoucher la table ?

    Bien à vous

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Le typage des champs dans SQLite est particulier. Son interprétation par les connecteurs de BDD dépend pê des habitudes avec d'autres SGDD, puisque TEXT semble interprété comme MEMO alors que CHAR ou VARCHAR semblent l'être comme tels, alors qu'ils représentent le même type de champ pour SQLite...

    Je ne sais pas comment les connecteurs récupèrent ce type. Mais SQLite fournit dans son API une interface pour récupérer le type SQLite ( sqlite3_column_type() ), et une autre pour récupérer celui déclaré lors du CREATE ( sqlite3_column_decltype() ).

    Il est donc possible qu'il suffise d'utiliser une déclaration "classique" lors du CREATE pour obtenir le type de champ voulu par un connecteur, quitte à se passer des managers qui utilisent les types propres internes de SQLite.

    [EDIT] Tu dois aussi pouvoir changer dans le fichier BD les 'TEXT' en 'CHAR' dans les chaînes des CREATE qui servent à SQLite pour décrire les schémas des tables.
    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 !

  9. #9
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut
    Bonjour, et merci à tous pour votre aide, et les infos utiles que vous avez apportées.
    Je vais continuer à avancer sur l’utilisation de base de données dans le cadre de Lazarus.

    Bien cordialement

  10. #10
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    TEXT est une donnée de type "BLOB" comme les images si tu associes cette donnée à un TDBMemo tu pourras l'éditer. Pour le visualiser dans un DBGrid tu dois surcharger la fonction OnDrawColumnCell en tout cas sous Delphi
    http://stackoverflow.com/questions/1...n-dbgrid-title
    La manip pour le mémo est quasi identique.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

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

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Accès à une base Pervasive
    Par david_chardonnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/10/2005, 20h53
  3. [SYBASE] Acces à une base SYBASE V12 via VB6
    Par pulley60 dans le forum Sybase
    Réponses: 2
    Dernier message: 23/09/2004, 14h21
  4. Refus d'accès à une base Firebird
    Par severine dans le forum Installation
    Réponses: 18
    Dernier message: 04/06/2003, 16h03
  5. [Dev-C++] Accès à une base MySQL
    Par Beetlejuice dans le forum Dev-C++
    Réponses: 8
    Dernier message: 08/05/2003, 13h17

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