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 SQL avec ZEOS


Sujet :

Lazarus Pascal

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut Utilisation du SQL avec ZEOS
    Bonjour,

    Dans ce post, SergioMaster donne cet exemple pour utiliser un TZSQLUpdate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //DeleteSQL
    DELETE FROM USAGER
    WHERE  CODE_POSTAL=:OLD_CODE_POSTAL 
    //ModifySQL
    UPDATE USAGER SET 
    CODE_POSTAL=:CODE_POSTAL,
    VILLE=:VILLE
    WHERE CODE_POSTAL=:OLD_CODE_POSTAL
    //InsertSQL
    INSERT INTO USAGER (CODE_POSTAL,VILLE)
    VALUES (:CODE_POSTAL,:VILLE)
    J'aimerais savoir à quoi correspond les «:CODE_POSTAL» par exemple !
    Comment faire le lien avec ma dbGrid ou mon dbChamp ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut Usage des paramètres
    :CODE_POSTAL

    ':' dans une requête précise qu'il s'agit d'un paramètre

    pour alimenter les paramètres il faut utiliser quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataset.parambyname('code_postal').asString:='56000';
    A+

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Merci de ta réponse, maintenant, ma question est comment faire pour auto alimenter les requêtes par un dbgrid ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut Alimenter depuis une dbgrid
    la dbgrid est directement attachée à un dataset
    le passage en mode Edit/Insert et le Post sont donc automatique
    pourquoi utiliser un SqlUpdate dans ce cas?

    Je ne comprend pas ce que tu veux faire.
    Peut être fonctionnes-tu en transactionnel (Start transaction)

    Si tu veux piloter intégralement tes insert et update utilise plutot StringGrid
    à chaque validation tu alimentes tes paramètres et tu exécutes ta requête

    Je ne suis pas sûr que tu vois plus clair maintenant

    A+

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Non, je n'y vois pas plus clair ...

    En fait, je me base sur l'exemple du post fourni en lien sur le sujet initial.

    Et, d'après ce que j'ai cru comprendre, la personne plaçait un TZUpdateSQL, TDataSource et un dbGrid.

    En renseignant comme indiqué les chaines SQL, aucun code ne semblait utile.
    Donc, mais je ne comprends pas comment on envoie les valeurs dans la requête. Comment le TZUpDateSQL fait le lien entre les données de la colonne et les variables de la requête !

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    je suis en déplacement pour l'instant , si cela peut attendre , je referais un tour sur le forum vendredi pour donner tout les détails nécessaires
    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

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Désolé je n'avais pas lu le post... et je vous conseillais avant de le lire de consulter justement une discussion que j'avais eu avec SergioMaster.

    Je n'ai jamais réussi à faire fonctionner un ZupDateSQL sans dbNavigator... Mais on peut très bien s'en passer* (du dbNavigator et du zUpdateSQL) en ajoutant un ZQuery pour mettre à jour la base, l'autre étant réservé à l'affichage de la dbGrid.

    Avec le dbNavigator, cela a "passé" si l'on peut dire. J'étais sous mySQL avec des bases distantes hébergées. Quand je dis cela a passé, c'est si j'excepte un plantage aléatoire résiduel non reproductible lors du refresh, plantage qui a toujours été problématique car "bloquant la dbGrid (?!)"... donc inexploitable en production. L'autre solution (avec les 2 zQuery) fonctionne toujours en production [0.9.26.2-Zeos 6.6.4 - XP et Linux]. J'espère que la dernière version de Zeos a rectifié le tir. Mais comme vous le savez, malgré ce petit problème et un peu d'UTF8 dans les Memo, je continue à faire de la pub pour cette bibli...

    Cordialement. Gilles

    * et à mon avis faire bien mieux
    Dernière modification par Invité ; 24/02/2010 à 19h01.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bonjour,

    Et merci à vous tous pour vos réponses.

    En fait, je me suis lancé. En créant les lignes SQL et en mettant dans les variables les noms des champs de la table. Et, là ! Ô Miracle ! La base de données (sous SQLite3, je ne l'avait peut-être pas précisé) se met à jour toute seule. Seul bémol, si on ouvre la gestion SQL par clic droit sur le composant, les coupures de lignes ne sont pas interprétées correctement lors de l'execution SQL. Il faut les refaire dans l'inspecteur d'objets, mais ce n'est qu'un détail.

    Comment ça fonctionne, je n'ai que des suppositions, pas d'explications, donc j'attends avec impatience le cours de Maître Sergio !

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Louis Griffont Voir le message
    Comment ça fonctionne, je n'ai que des suppositions, pas d'explications, donc j'attends avec impatience le cours de Maître Sergio !
    Houlà , pas de cours , j'ai laissé tombé cette casquette depuis longtemps

    si mes souvenirs sont bons ( l'âge ...) concernant le post cité , ce n'était qu'un petit programme pour illustrer l'utilisation d'un ZUpdateSQL sur une table Firebird , celui-ci ayant été fait "à la paresseux".

    donc : Attention ce qui va suivre dépend de la BBD , ici je parle de Firebird

    Comment fonctionne le ZUpdateSQL ? en fait (pour simplifier) il s'agit d'un stockage de requêtes paramétrées (le fameux ':' devant le nom de colonne quand il s'agit de firebird ) . Les paramètres étant généralement (mais on peut jouer avec) les noms de colonnes de la ztable ou zquery et donc fourni par ces derniers . (enregistrement en cours)

    un nouvel avertissement : dépendant de la version des ZEOS l'outil créateur de requête n'est pas toujours au point (c'est le Dièse a ton Bémol ) il faut souvent revenir sur le SQL généré (les clauses WHERE sont généralement à revoir, quelques fois les paramètres ne sont pas ou mal signalés etc..)

    Dans le cas simple que je donnais en démonstration , j'utilisais une table 'USAGER' contenant deux colonnes CODE_POSTAL et VILLE (pourquoi ai-je appelé ma table USAGER .... mystère en fait j'ai du faire un test sur une table existante de mon appli et vouloir simplifier à l'extrême) .

    Comme c'était un programme 'à la paresseux' j'avais effectivement utilisé un dbnavigator pour valider mes modifications et permettre l'insertion
    cependant ceci n'est pas obligatoire ! c'était juste une facilité (cf. mode du programme) me permettant de ne pas faire de gestion d'évènement sur la grille et/ou le dataset pour ce qui concerne la validation .

    Citation Envoyé par selzig
    Mais on peut très bien s'en passer* (du dbNavigator et du zUpdateSQL) en ajoutant un ZQuery pour mettre à jour la base, l'autre étant réservé à l'affichage de la dbGrid.
    tout à fait , cependant , je te ferais remarquer qu'en fait ton ZQuery n'est ni plus ni moins que une des SQL du composant ZUpdate

    Donc , encore une Remarque surtout bien penser que les SQL générés par l'outil de TZUpdateSQL ne sont pas gravés dans le marbre et que ceux-ci sont modifiables dans le programme !!
    mon poil dans la main parle encore : cela permet simplement de ne pas avoir a programmer tous ces "query.parambyname.value:=..."

    autre remarque , méfiez vous comme de la peste du refreshSQL généré

    Voilà , j'en reste là . des remarques des questions ? à ta disposition

    Serge dit "Maitre"
    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

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Merci Ô Maître !

    Ne t'inquiètes pas, je n'en suis qu'au début, alors... «I'll be back !»

    Ma base est en SQLite (le programme est pour moi, et pour moi seul !)

Discussions similaires

  1. Utilisation de SUBSTR avec WHERE dans une requête SQL
    Par thipyt dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/10/2016, 15h54
  2. comment utiliser EXECUTE BLOCK avec zeos lib
    Par mina24 dans le forum Bases de données
    Réponses: 6
    Dernier message: 08/04/2015, 11h20
  3. Fonctionnalités pour simplifier l'utilisation du SQL avec Qt
    Par charlespf dans le forum Bases de données
    Réponses: 0
    Dernier message: 08/05/2012, 10h48
  4. Utilisation de booleen avec des fonction en PL SQL
    Par tchoimars dans le forum SQL
    Réponses: 6
    Dernier message: 23/04/2009, 19h17
  5. [SQL-Server] Utilisation de SQL Server avec PHP
    Par kagura dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/01/2006, 15h39

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