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 :

Je débute en Base de données


Sujet :

Bases de données Delphi

  1. #21
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Query1.Active:=False;
    Query1.Unprepare; 
    Query1.Text:='Select * From Personnes &mamacro';
    Query1.MacroByName('mamacro').asrow:='where nom between :a and :b';
    Query1.Prepare;
    Query1.ParamByname('a').asString:=E_Deb.Text;
    Query1.ParamByname('b').asString:=E_Fin.Text;
    Query1.Active:=True;
    Je suis tout a fait d'accord pour l'utilisation des paramètres. Par contre, je ne connaissais pas et ne comprends pas l'utilité de la macro

  2. #22
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour
    Citation Envoyé par benoit1024 Voir le message
    Par contre, je ne connaissais pas et ne comprends pas l'utilité de la macro
    c'est vrai que dans ce bout de code elle est de peu d'intérêt mais dés qu'il s'agit de clauses where complexes dépendant par exemple d'un choix dans un interface utilisateur
    ou encore une clause where tapée dans une zone de saisie cela a du sens
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #23
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    re,
    Citation Envoyé par Jlmat Voir le message
    C'est exactement ça! C'est une Base de données (la mienne que je dois créer) et dont certains de mes clients deviennent des adhérents d'une association. Les membres administrateurs de l'association pourraient accéder à une partie seulement de ma Base de donnée professionnelle.
    Cela n'empêche, une seule base peut suffire (dans le cas de Firebird en tout cas) et ce même si l'on peut faire des requêtes entre bases de données)
    Pour L'asso, le statut servira à gérer des droits d'accès justement à la Base de données. Une secrétaire de l'association ne pourra pas accéder à toutes mes fiches clients mais aux adhérents seulement...
    la réponse Firebird à cette question est une gestion des droits utilisateurs (ROLE) et la création de vues VIEW
    il est bien évident que je n'ai fait que montrer qu'une toute petite partie émergée des possibilités des SGBDR
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #24
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Décidément, je suis pas très doué pour les Bases de données
    SergioMaster
    Code SQL :
    /********************* ROLES **********************/

    CREATE ROLE RDB$ADMIN;
    /********************* UDFS ***********************/

    /****************** GENERATORS ********************/

    CREATE GENERATOR GEN_STAGES_PERS_ID;
    CREATE GENERATOR GEN_STATUT_PERS_ID;
    ...
    Si je mets ça dans la procédure de la création de forme il ne reconnait pas le code.
    C'est bien là mon problème, tous les exemples montrent des codes, mais je n'arrive pas à savoir dans quel Bloc il faut insérer ce code.
    Je regrette ce temps ou Delphi éditait une doc papier avec des exemples pour créer pas à pas!
    Même dans les exemples donnés de Delphi 10, ils considèrent que la table est créee.
    Si je ne peux pas créer ma structure dans Delphi, je laisse tomber MySql. Car je n'arrive pas à me connecter sur leur serveur...

    J'ai ajouté mysql.dll dans le répertoire source et dans le répertoire où il y a l'Exe, mais rien n'y faut...
    Où bien est-ce que ce code, il faut le mettre dans un fichier Inc comme des constantes?


    mais pour répondre à la question est-ce faisable avec Firedac : Oui, en FMX et en utilisant les Livebindings (obligé) Oui
    Je vais essayer cette solution, j'espère que je vais pouvoir ajouter ou supprimer des éléments des tables par programme...

    je souffre, mdr

    Une fois que j'arriverai à créer mes tables, je mettrai résolu à ce post!
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonsoir,
    Le script fourni est pour Firebird pas MySQL, il n'est pas fait pour être insérer tel quel dans un FDScript je l'ai pris directement d'un outil pour Firebird, un petit GUI léger nommé Flamerobin.

    Etapes à suivre :
    Télécharger et installer Firebird SQL (server+client) et en tant que service attention à la version 32 bits à cause de : Windows 7 familial 32 bits attention au mot de passe

    Télécharger et installer FlameRobin attention leur dernière version me semble buggée prendre plutôt la 9.0.2
    Lancer flamerobin, configurer le serveur (localhost) et créer une nouvelle base ici attention au jeu de caractère (je conseille win1252)
    (normalement il faudrait d'abord se connecter à une base existante comme employee créer des utilisateurs, puis se déconnecter comme SYSDBA et se connecter avec un utilisateur existant pour que celui-ci devienne propriétaire de la base) pour ces démarches rendez-vous sur le forum Firebird

    Maintenant, je peux toujours fournir un backup du petit essai que j'ai créé modifiable par la suite avec flamerobin
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Télécharger et installer Firebird SQL (server+client) et en tant que service attention à la version 32 bits à cause de : Windows 7 familial 32 bits attention au mot de passe
    Merci Sergio
    J'ai regardé tout en anglais et avec des versions, bugs etc... Trop compliqué pour moi...
    Je vais regarder le code de Charly910 qui travaille avec SQLite car son exemple comprends un tas de fonctions de base dans son code (une aide précieuse...).
    Sinon, me reste à étudier l'autre solution que tu proposes dans ton exemple précédent avec Firedac, FMX et en utilisant les Livebindings.
    Une fois que j'aurais adopté une solution (Composants et méthode), je vais commencer mon projet. Pour l'instant je suis dans le brouillard qui se dissipe un tout petit peu...

    à Charly910

    J'ai téléchargé ton exemple, il me plait bien
    Pas besoin d'utiliser d'autres installations ou composants...

    Ma question est toujours la même, j'ai l'impression d'être un gogol!

    Est-ce tu as créée tes tables par programme ou bien avec un autre logiciel... J'aimerai bien l'écrire par programme en utilisant un script comme tu l'as fait dans ton exemple?

    Merci pour votre patience...
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  7. #27
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    Mon Choix

    ça y est j'ai choisi les supports logiciels:

    1: Développement de mon application : Delphi 10.3 Community Edition (gratuit)
    2: Composants Delphi natifs: FireDAC, LiveBindings...
    3: Création de la Base de données : SQLite avec SQLiteStudio (gratuit) et pas compliqué

    Comme j'ai pas mal galéré, je réalise parallèlement un petit tutoriel pour les nuls comme moi en BD que je pourrais donner sur ce site accompagné de mon application

    Dès que j'ai vérifié un minimum de code pour gérer les données, je valide mon choix en mettant résolu
    Si j'ai d'autres questions, je ferai alors un autre post pour des questions précises.

    Merci à tous pour votre aide
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  8. #28
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    SQLite est un bon choix mais tes demandes de sécurité par utilisateur ne pourront être respectées.

    J'ai regardé tout en anglais et avec des versions, bugs etc...
    évidemment si Shakespeare fait de la résistance, ça risque de coincer . Les bugs depuis maintenant presque 15 ans que j'utilise Firebird je n'en ai trouvé que très peu et généralement ils venaient de ma méconnaissance (mauvais choix de set de caractères, ou de dialecte SQL du début de projet)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #29
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    c'est vrai que dans ce bout de code elle est de peu d'intérêt mais dés qu'il s'agit de clauses where complexes dépendant par exemple d'un choix dans un interface utilisateur
    ou encore une clause where tapée dans une zone de saisie cela a du sens
    Ok, je vais m'y intéressé, j'ai vu comment tu l'utilisais dans l'exemple que tu as posté, je comprends mieux effectivement.

  10. #30
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour Jlmat,

    comme je te l'ai dit, j'ai créé ma base de données avec SqLite Studio téléchargeable gratuitement sur le net (sur les conseils de SergioMaster)

    Ce logiciel est très simple d'emploi et suffisant pour moi.

    A+
    Charly

    PS : lien SqLite Studio

    Re PS : j'arrive après la bagarre

  11. #31
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut
    A Sergio

    SQLite est un bon choix mais tes demandes de sécurité par utilisateur ne pourront être respectées
    Bon, je vois que je n'ai pas encore tous les outils, j'enlève le Résolu alors!
    Il me faut régler ce problème d'accès utilisateur même si c'est pas urgent pour l'instant dans ma phase alpha, Bêta...
    ça me surprend ce que tu dis, j'interdis d'entrée l'utilisation de la base de donnée si la personne n'est pas habilitée
    ou bien
    je créer des conditions de lecture et de non modification ou lecture par des filtres en fonction de l'utilisateur.
    En fait Ma deuxième Base de données va chercher les infos sur les personnes qui sont dans ma Base de Donnée pro. Je peux éventuellement exporter les personnes uniquement adhérentes dans ce cas qui correspond aux critères et je n'affiche que ces personnes pour l'utilisateur de l'association qui a une habilitation...
    ...
    De plus, j'ai vu que SQlite crytait ses données. Bon, c'est pas un fichier secret défense que je fais... Je vois pas le problème, je suis encore gogol en SGBD!
    ...
    Je viens de trouver cela sur l'aide :
    http://docwiki.embarcadero.com/RADSt...e_avec_FireDAC
    On y parle de mots de passe d'une base de donnée cryptée! peut-être une piste!

    Firebird, ben, on verra... Je suis pas un pro, je cherche à faire court et me faire plaisir en même temps!

    Charly910 ça y est, j'ai créé ma première table avec SqLite Studio et je travaille sur ton source entre autre... J'ai vu que n'avais pas écrit de procédure d'ajout de données par code, je veux le faire...

    QuestionTiens au passage, comment tester si une table est vide?

    Merci les amis delphistes!
    Je vais cogiter en créant ma deuxième table et en gérant les accès...
    Je programme en Lazarus 3.2.2 sous windows 10 pro

  12. #32
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Jlmat Voir le message
    Il me faut régler ce problème d'accès utilisateur même si c'est pas urgent pour l'instant dans ma phase alpha, Bêta...
    d'où ma remarque

    En fait Ma deuxième Base de données va chercher les infos sur les personnes qui sont dans ma Base de Donnée pro. Je peux éventuellement exporter les personnes uniquement adhérentes dans ce cas qui correspond aux critères et je n'affiche que ces personnes pour l'utilisateur de l'association qui a une habilitation...
    ...
    dès que me parle d'exporter, ça me fait tiquer, déjà le 2 bases de données le faisait !
    ce qu'implique l'export : en premier lieu une synchronisation des deux bases (pas évident) une gestion des accès

    j'ai vu que SQlite cryptait ses données.
    On y parle de mots de passe d'une base de donnée cryptée! peut-être une piste!
    oui mais non, il y a un seul mot de passe pour la base pas d'utilisateur et ces deux fonctions sont assurées par Firedac, il existe effectivement un moyen de crypté une base SQLite c'est un addon payant

    Firebird, ben, on verra... Je suis pas un pro, je cherche à faire court et me faire plaisir en même temps!
    ce n'est pas beaucoup plus compliqué que SQLite après tout c'est du SQL normalisé

    En fait il faut surtout bien lire ce pour quoi SQLite n'est pas fait

    QuestionTiens au passage, comment tester si une table est vide?
    plusieurs solutions par requête
    SELECT COUNT(1) FROM TABLE
    qui renverra un 0
    en ouvrant un fdTable et en demandant if FDtable1.RecordCount=0 then showmessage('Table vide');
    etc...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  13. #33
    Membre actif
    Avatar de Jlmat
    Homme Profil pro
    Consultant en Ressources Humaines, Retraité passionné de programmation
    Inscrit en
    Avril 2008
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Ressources Humaines, Retraité passionné de programmation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 284
    Points : 287
    Points
    287
    Par défaut


    Merci Sergio pour tes réponses...



    Pétard! Je sais pas quand je vais pouvoir commencer ma Base de Donnée!

    Bon, on va essayer de faire les choses dans l'ordre, J'installe Firebird... à partir de ce site: "https://www.firebirdsql.org/en/firebird-3-0-4/"

    Lors de l'installation, il y a un tas d'options que je ce comprends pas.

    Nom : Image15.jpg
Affichages : 168
Taille : 48,8 Ko

    Question 1 : Peux-tu me dire les options que tu me conseilles de cocher?
    Question 2 : Je pense qu'il doit y avoir une Dll à installer dans le fichier des sources de mon projet comme pour SQlite. Si ce n'est pas le cas, procedure à suivre?

    Je programme en Lazarus 3.2.2 sous windows 10 pro

  14. #34
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    1 - ces options par défaut c'est paarfait
    2- non pas de dll elles sont déjà installées (l'option copie dans le répertoire système)
    par contre, quand tu vas déployer sur un autre poste "client" tu ne mettras bien sûr que la bibliothèque cliente lors de l'installation
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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