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

 Delphi Discussion :

Construction d'une requête SQL


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 56
    Points
    56
    Par défaut Construction d'une requête SQL
    Bonjour,

    Je reviens vers vous pour une nouvelle demande. Je vais vous filer ci-dessous une requête que je tape en SQL Server et qui fonctionne très bien, mais je souhaiterais pouvoir l'adapter en Pascal dans un script de type "Begin ... end;"
    Pouvez-vous m'aider en me filant la syntaxe que je dois obtenir ... merci d'avance.

    Requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update TELEMENTBUDGETPERIODE set Caption=HB.Caption+'-'+P.code+'-'+CAST(MONTH(PE.dateDebut) as varchar(2))
    from TELEMENTBUDGETPERIODE EB inner join TELEMENTBUDGETEXERCICE EBE on EBE.oid=EB.oidElementBudgetExercice
    inner join TPOSTE P on P.oid=EBE.oidPosteBudgetaire
    inner join THYPOTHESEBUDGETAIRE HB on HB.oid=EBE.oidHypotheseBudgetaire
    inner join TPERIODE PE on PE.oid=EB.oidPeriode
    Merci à tous pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Bonjour!

    en gros voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var ch : string;
     
    ch := 'update TELEMENTBUDGETPERIODE set Caption=HB.Caption+'-'+P.code+'-'+CAST(MONTH(PE.dateDebut) as varchar(2))
    from TELEMENTBUDGETPERIODE EB inner join TELEMENTBUDGETEXERCICE EBE on EBE.oid=EB.oidElementBudgetExercice
    inner join TPOSTE P on P.oid=EBE.oidPosteBudgetaire
    inner join THYPOTHESEBUDGETAIRE HB on HB.oid=EBE.oidHypotheseBudgetaire
    inner join TPERIODE PE on PE.oid=EB.oidPeriode';
    Query1.close;
    Query1.Clean;
    Query1.SQL := ch;
    Query1.open;
    à toi de tester le code. Query1 et un composant TQuery.

    Bonne chance.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    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
     
    Const 
      CstUpdate = ' update  %s set %s %s ';
    ...
    var
     StrTable,StrField :  String;
     StrFrom :  String;
     ch :String;
    ...
    Begin
      StrTable :=  'TELEMENTBUDGETPERIODE';
      StrField  :=  'Caption = ';
      StrField  := StrField +
      '+ HB.Caption+''-''+P.code+''-''+CAST(MONTH(PE.dateDebut) as varchar(2))' ;
     StrFrom :=  'from TELEMENTBUDGETPERIODE EB inner join TELEMENTBUDGETEXERCICE EBE on EBE.oid=EB.oidElementBudgetExercice
    inner join TPOSTE P on P.oid=EBE.oidPosteBudgetaire
    inner join THYPOTHESEBUDGETAIRE HB on HB.oid=EBE.oidHypotheseBudgetaire
    inner join TPERIODE PE on PE.oid=EB.oidPeriode';
     
    ch := Format(CstUpdate,[StrTable,StrField,StrFrom]) ;
    Query1.close;
    Query1.SQL.Clean;
    Query1.SQL.TEXT := ch;
    Query1.ExecSql;
    @+ Phil

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Désolé pour mon temps de réponse, mais je viens seulement de tester le code que vous avez mentionné ci-dessous.
    J'ai un souci lors de la compilation du dit code, pour lequel, il ne comprendrait pas la partie de la constante ... Auriez-vous un tuyau ?

    Merci encore

    PS : apparemment j'aurais un souci sur la déclaration de la constante ...

    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
     
    Const 
      CstUpdate = ' update  %s set %s %s ';
    ...
    var
     StrTable,StrField :  String;
     StrFrom :  String;
     ch :String;
    ...
    Begin
      StrTable :=  'TELEMENTBUDGETPERIODE';
      StrField  :=  'Caption = ';
      StrField  := StrField +
      '+ HB.Caption+''-''+P.code+''-''+CAST(MONTH(PE.dateDebut) as varchar(2))' ;
     StrFrom :=  'from TELEMENTBUDGETPERIODE EB inner join TELEMENTBUDGETEXERCICE EBE on EBE.oid=EB.oidElementBudgetExercice
    inner join TPOSTE P on P.oid=EBE.oidPosteBudgetaire
    inner join THYPOTHESEBUDGETAIRE HB on HB.oid=EBE.oidHypotheseBudgetaire
    inner join TPERIODE PE on PE.oid=EB.oidPeriode';
     
    ch := Format(CstUpdate,[StrTable,StrField,StrFrom]) ;
    Query1.close;
    Query1.SQL.Clean;
    Query1.SQL.TEXT := ch;
    Query1.ExecSql;
    @+ Phil[/QUOTE]

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    j'espere que tu as enlever les 3 petit point (...)
    cela avait ete mis pour te dire que tu pouvait declarer d'autre elements

    @+ Phil

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    lol !!!

    Je sais que je suis pas bon mais tout de même !!!


  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut
    essai ce code :
    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
     
    Procedure TForm1.UpdateStr;
    Const
      CstUpdate = ' update  %s set %s %s ';
    var
      StrTable,StrField :  String;
      StrFrom :  String;
      ch :String;
    Begin
      StrTable :=  'TELEMENTBUDGETPERIODE';
      StrField  :=  'Caption = ';
      StrField  := StrField +
      '+ HB.Caption+''-''+P.code+''-''+CAST(MONTH(PE.dateDebut) as varchar(2))' ;
      StrFrom :=  'from TELEMENTBUDGETPERIODE EB inner join TELEMENTBUDGETEXERCICE EBE on EBE.oid=EB.oidElementBudgetExercice '
      +' inner join TPOSTE P on P.oid=EBE.oidPosteBudgetaire '
      +' inner join THYPOTHESEBUDGETAIRE HB on HB.oid=EBE.oidHypotheseBudgetaire '
      +' inner join TPERIODE PE on PE.oid=EB.oidPeriode';
     
     ch := Format(CstUpdate,[StrTable,StrField,StrFrom]) ;
      Query1.close;
      Query1.SQL.Clear;
      Query1.SQL.TEXT := ch;
      Query1.ExecSql;
    end;
    chez moi cela passe a la compilation
    @+ Phil

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

Discussions similaires

  1. Construction d'une requête SQL
    Par FearHaCk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/08/2013, 11h21
  2. [WD17] Construction d'une requête SQL
    Par alex1005 dans le forum WinDev
    Réponses: 9
    Dernier message: 25/10/2012, 22h06
  3. Construction d'une requête SQL avec jointure
    Par Didiou35 dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/10/2009, 22h26
  4. Construction d'une requête SQL avec un TEdit
    Par aouiche dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/08/2009, 14h10
  5. Construction d'une requête SQL
    Par arnaud34 dans le forum Langage
    Réponses: 11
    Dernier message: 07/08/2009, 18h00

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