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 :

Utilisation du composant natif Sqlite3Dataset [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    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 Utilisation du composant natif Sqlite3Dataset
    Bonjour,

    Ayant effectué des recherches pour utiliser le composant natif Sqlite3Dataset pour tester la présence d'une table dans une base Sqlite3 et, selon la réponse, la créer, la remplir ou, si elle existe, la supprimer avec tout son contenu. Je joins le texte de l'unité que j'ai utilisée avec, en plus, pour répondre à un besoin que j'ai eu, la recherche du système d'exploitation et ses paramètres de chemin d'accès.
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    var
      Fcreer: TFcreer;
      MQ,Q1,Q2:String;
      MINSTALLATION,MCHEMIN,MBASE:String;
      MMOIS,MJOURS:String;
      XMOIS,XJOURS,MINDEX:Integer;
      NB_JOURS:array [1..12] of integer;
    const
     MTABLE='CE.sdb';
     MNOUVELLE='JOURS';
    implementation
     
    {$R *.lfm}
     
    { TFcreer }
     
    procedure TFcreer.FormActivate(Sender: TObject);
    begin
      // préparation de l'environnement
      defaultFormatSettings.ShortDateFormat:='DD/MM/YYYY';
      defaultFormatSettings.DateSeparator:='/';
      defaultFormatSettings.DecimalSeparator:=',';
      Preparation;
    end;
     
    procedure TFcreer.BquitterClick(Sender: TObject);
    begin
      close;
    end;
     
    procedure TFcreer.Preparation;
    begin
    MINSTALLATION:=ExtractFilePath(Application.ExeName);
    MINDEX:=Pos('sources',MINSTALLATION);
    MCHEMIN:=Copy(MINSTALLATION,1,MINDEX-1);
    MINDEX:=Pos('\',MINSTALLATION);
      if MINDEX<>0 then MSEPARATEUR:='\' //WINDOWS
      else
      begin
      MINDEX:=Pos('/',MINSTALLATION);
        if MINDEX<>0 then MSEPARATEUR:='/' //LINUX
        else
        begin
        MMESSAGE:='Erreur de détection système d''exploitation';
        MessageErreur;
        Close;
        end;
      end;
    MBASE:=MCHEMIN+'tables'+MSEPARATEUR+MTABLE;
    // déclaration des valeurs jours du mois
    NB_JOURS[1]:=31; // janvier
    NB_JOURS[2]:=27; // février
    NB_JOURS[3]:=31; // mars
    NB_JOURS[4]:=30; // avril
    NB_JOURS[5]:=31; // mai
    NB_JOURS[6]:=30; // juin
    NB_JOURS[7]:=31; // juillet
    NB_JOURS[8]:=31; // août
    NB_JOURS[9]:=30; // septembre
    NB_JOURS[10]:=31; // octobre
    NB_JOURS[11]:=30; // novembre
    NB_JOURS[12]:=31; // décembre
    end;
     
    procedure TFcreer.Bcreer_suppClick(Sender: TObject);
    begin
    Sqlite3Dataset1.FileName:=MBASE;
      if Sqlite3Dataset1.TableExists=True then
      begin
     ShowMessage('la table JOURS existe elle va être supprimée');
      Sqlite3Dataset1.ExecSQL('DROP TABLE '+Sqlite3Dataset1.TableName+';');
      end
      else
      begin
      ShowMessage('La table JOURS n''existe pas dans la base, elle va être créée');
      MQ:=('CREATE TABLE JOURS (K_JOURS INTEGER PRIMARY KEY, MOIS char(2), JOURS char(2))');
      Sqlite3Dataset1.SQL:=MQ;
      Sqlite3Dataset1.ExecSQL;
      XMOIS:=1;
        while XMOIS<13 do
        begin
        MMOIS:=Trim(IntTostr(XMOIS));
        if Length(MMOIS)=1 then MMOIS:='0'+MMOIS;
        XJOURS:=NB_JOURS[XMOIS];
        MJOURS:=Trim(IntToStr(XJOURS));
        Q1:=quotedstr(MMOIS);
        Q2:=quotedstr(MJOURS);
        MQ:=('INSERT INTO JOURS  (K_JOURS,MOIS,JOURS) VALUES(NULL,'+Q1+','+Q2+')');
        Sqlite3Dataset1.SQL:=MQ;
        Sqlite3Dataset1.ExecSQL;
        Inc(XMOIS);
        end;
      end;
    end;
    Si cela peut rendre service tant mieux
    A+

  2. #2
    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
    Merci de vos messages privés, il y a surement mieux pour avoir le nombre de jours dans un mois, mais c'est surtout un exemple assez complet de l'utilisation du composant natif Sqlite3Dataset et de plus les informations de cette table nouvelle me servent dans la création de futures dépenses dites automatiques dans une petite application financière.
    Vos réponses ne sont pas perdues elles complèteront ma petite connaissance de lazrus.
    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 33
    Points : 100
    Points
    100
    Par défaut
    Salut,

    Je pense que les initialisations des variables dans "OnActivate" devrait plutôt se situer dans "OnCreate".

  4. #4
    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
    Bonsoir,
    Oui c'est une erreur de ma part pour cet essai, habituellement je le réalise dans OnCreate, elles sont définies une seule fois de cette manière.
    A+

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

Discussions similaires

  1. Comment utiliser un composant sans son nom ?
    Par aliwassem dans le forum Langage
    Réponses: 4
    Dernier message: 03/10/2005, 20h47
  2. [SGBD][ADO] Utilisation des composants ADO
    Par Teb dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 22/08/2005, 15h33
  3. utilisation des composants d'aide à la décision
    Par karim2005 dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/07/2005, 13h36
  4. Utilisation du composant TDBImage
    Par kkv dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/03/2005, 17h41
  5. [][Timer] Créer un Timer sans utiliser le composant
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/10/2003, 11h04

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