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

Composants VCL Delphi Discussion :

TfdQuery - réaliser une update


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Par défaut TfdQuery - réaliser une update
    Bonjour à tous

    Pour mes accès db j'ai toujours utilisé le composant tiboQuery, c'est un choix dans la société ou je travaille.
    J'ai récemment découvert la version tfdQuery, la migration d'un composant vers l'autre est assez simple.

    Ma question est :
    Dans un composant tiboQuery j'ai un tab qui me permet d'avoir un sql pour une requete update, insert et delete le select étant dans un autre tab.
    Nom : tiboQuery.PNG
Affichages : 175
Taille : 65,2 Ko

    Si je modifie mon code sql il ne va pas modifier celui du select.
    Dans les paramètres du composant j'ai donc
    monComposant.SQL
    monComposant.editSql
    monComposant.insertSql
    monComposant.deleteSql

    Via tfdQuery je ne retrouve pas cette possibilité !
    J'ai vu qu"il y avait un autre composant tfdUpdate, quelle est son but ?
    L'utiliser uniquement pour des updates, c'est juste une copie du tfdQuery avec un autre nom ?

    J'ai essaye via le tfdQuery de le passer en monComposant.edit puis de lui passer en paramètre le champ que je veux modifier.
    Mais ce paramètre n'est pas présent dans le select et du coup il plante, je n'arrive pas à créer le paramètre car vu qu'il n'est pas présent dans le sélect delphi plante.

    Bon vous l'aurez compris je suis perdu :-(

    Bonne journée

    Bertrand

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour

    En fait TFDquery est souvent associé (surtout si la requête contient des jointures) au TFDUpdateSQL et ce par la propriété UpdateObject de TFDQuery.
    Une fois la propriété remplie vous aurez alors accès à un wizard (en dbl cliquant sur le composant FDupdateSQL ou en utilisant le menu contextuel de ce composant)
    qui vous permettra de mettre en place les diverses requêtes.

    J'ai essaye via le tfdQuery de le passer en monComposant.edit puis de lui passer en paramètre le champ que je veux modifier.
    Mais ce paramètre n'est pas présent dans le select et du coup il plante, je n'arrive pas à créer le paramètre car vu qu'il n'est pas présent dans le sélect delphi plante.
    bon là je n'ai rien compris, commencez par la liaison FDQuery/FDUpdateSQL et on y verra plus clair ensuite.

    en guise de POST SCRIPTUM, la documentation semble indiquer que l'on peut mettre plusieurs SQL (séparés par des ;) au sein de chaque type de commande (ce serait donc plus un script) . Je n'ai jamais essayé n'ayant jamais eu ce genre de cas à moins que, par habitude, je ne code ça différement ce qui est fort possible

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Par défaut
    Bonjour SergioMaster

    J'ai réalisé la liaison
    Nom : tfdUpdate.PNG
Affichages : 141
Taille : 28,5 Ko
    Là nous allons pouvoir discuter

    Je termine un truc puis je vais regarder pour rajouter les paramètres.

    Un grand merci, je n'aurai jamais penser à lier les deux composants.

    Bertrand

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    C'est une habitude historique de Delphi hérité du BDE : Bde.DBTables.TUpdateSQL, oui c'est donc très vieux !
    Curieux avec DBX, je n'ai rien trouvé d'automatique pour résoudre ça mais cela plus en accord avec mes composants qui générait le SQL à la volée à base de RTTI
    Puis c'est revenu avec FireDac : FireDAC.Comp.Client.TFDUpdateSQL

    Beaucoup de Lib comme celle de Devart inclue dans leur Query directement les SQL de mise à jour, refresh et autres ...
    Je conseille vivement d'écrire le SQL pour chaque mise à jour toi même, c'est bien plus clair à comprendre pour la maintenance que laisser les composants le générer à ta place (certains le font) sans compter que tu peux aussi optimiser tes SQL, limiter la modification à quelques champs et non à tous ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Par défaut
    Hello,

    En générale je rajoute mes requêtes sql moi-même.
    J'aime savoir ce qu'il se passe.

    J'ai n'ai pas réussi pour le moment a réaliser un post d'une query update.
    Ma query est liée à une grid, je peux changer la valeur dans la grid.
    Mais dès que je veux effectuer un commit, il crash ou me dit simplement que la query n'est pas en update.

    Je vais me créer un projet vierge et tester.

    Merci pour tes réponses.

    Bertrand

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    En général je rajoute mes requêtes sql moi-même. J'aime savoir ce qu'il se passe.
    Moi aussi, mais dans ce cas j'utilise directement la connexion : FDConnection.ExecSQL(marequête,[mesparamètres]); quelques fois explicitement au sein d'un begintransaction/commit ou rollback.

    Ma query est liée à une grid, je peux changer la valeur dans la grid.
    J'ai n'ai pas réussi pour le moment a réaliser un post d'une query update.
    Ah, mais là ce n'est pas la même "chanson", il va falloir affiner la demande

    Pour ce qui est de l'utilisation du fdUpdateSQL, il suffit de faire un edit, changer les valeurs et faire un post.
    Dans une DBGrid, si celle-ci n'est pas en readonly, seule la validation serait nécessaire (la validation de la zone pouvant être un simple changement de ligne dans la grille)

    Mais dès que je veux effectuer un commit, il crash ou me dit simplement que la query n'est pas en update.
    Pour une version plus "pointilleuse" des transactions il faudrait déjà que la requête soit en cacheupdate et qu'un fdtransaction soit défini. (Par défaut Firedac fait du autocommit)

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. question pour réaliser une pagination
    Par vbcasimir dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 08h17
  3. [GD] Réaliser une ombre
    Par Atomicfryer dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 03/02/2005, 16h35
  4. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48
  5. [TQuery]Réaliser une requete à partir d'une requete
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2004, 12h00

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