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 :

Xe2 Commande Sql qui remplace filter


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut Xe2 Commande Sql qui remplace filter
    Bonjour

    Je suis rendu a l'étape 2 de mon évolution en MsSql

    J'utilisais la commande filter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         TBILLET.FILTER:= 'D_DATE >'+ ''''+ DATEDEPART + ''''+ ' AND ' + 'D_DATE <'+ ''''+ datetostr(DATETIMEPICKER2.DATE+1) + ''''+ ' and ' +
                         'D_MATERIEL ='+ ''''+ combobox1.text + ''''  + ' and ' + 'D_CODE1 ='+ ''''+ 'ville' + '''' + ' AND '+ 'D_NOCONT ='+ ''''+ combobox1.text + '''' ;
    Je veux remplace la commande filter par une commande MsSql qui marche tres bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    MSQuery1.Active:=False;
    MsQuery1.SQl.Clear;
    MsQuery1.SQL.Add('Select * from BILLET.dbo.BILLET');
    MsQuery1.SQL.Add('where D_DATE BETWEEN :FROMDATE AND :TODATE');
    MsQuery1.SQL.Add('and d_code = :ville'); // remplaçable par MsQuery1.SQL.Add('and d_code ='+QuotedStr('VILLE')); 
    MsQuery1.SQL.Add('and  D_nocont = :contrat');
    msQuery1.ParamByName('FROMDATE').asDateTime:=DateTimePicker1.Date-1;
    msQuery1.ParamByName('TODATE').asDateTime:=DateTimePicker1.Date+7;
    msQuery1.ParamByName('ville').asstring:='VILLE'; // inutile en cas de l'utilisation du remplacement proposé
    msQuery1.ParamByName('contrat').asstring:=combobox1.text;
    MsQuery1.Active:=True;
    Un grand merci a M.SergioMaster pour cette solution

    Je suis rendu a utiliser :
    comment utiliser le resultat de ce Query
    je peux associé le Query a un datasource ca va bien pour un DBdrid
    mais si je veux copier le resultat dans une autre table pour travailler sur le champs
    ou travailler directememt sur le resultat du Query

    Merci de m'aider

    Mario

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    comment utiliser le resultat de ce Query
    comme vous utiliseriez une table
    je peux associé le Query a un datasource ca va bien pour un DBdrid
    "ça va" aussi pour tout composant lié a un datasource
    mais si je veux copier le résultat dans une autre table
    là , c'est moins clair .
    il y a plusieurs solutions allant du SQL (si c'est un copie dans la BDD dans une table existante) au code (copie vers un autre SGBD, une table mémoire , etc ....)
    solution SQL
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO TABLE2(CHAMP1,CHAMP2) SELECT CHAMPA,CHAMPB FROM TABLE1 WHERE <condition sur table1>

    solution code générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query1.First;
    while not Query1.EOF do
    begin
      .....
      Next;
    end;
    mais si je veux copier le résultat dans une autre table pour travailler sur le champs
    là , c'est moins clair . l'intérêt ?

    travailler directement sur le résultat du Query
    un exemple (qui peut largement être travailler par SQL)
    supposons que vous vouliez une somme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Query SELECT MONTANT FROM UNETABLE WHERE UNCHAMP=UNECONDITION;
    Somme:=0.00;
    Query1.Active:=True;  
    while not Query1.EOF do
    begin
      Somme:=Somme+Query1.FieldByname('Montant').asCurrency;
      Next;
    end;
    Query1.Active:=false
    Equivalent SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Query SELECT SUM(MONTANT) AS S FROM UNETABLE WHERE UNCHAMP=UNECONDITION;
    Somme:=0.00;
    Query1.Active:=True;  
    Somme:=Query1.FieldByname('S').asCurrency;
    Query1.Active:=false
    Pour des modifications le principe reste le même .
    Maintenant vous n'indiquez pas quelle famille de composants vous utilisez pour vous connecter et votre question me semble trop générale.
    Affinez votre demande
    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. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut Xe2 Commande Sql qui remplace filter
    Un gros merci


    Je vais faire des modifications dans mon programme pour intégrer vos informations.


    Merci encore pour votre support.

    Mario

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut Composant utiliser
    Rebonjour

    J'ai oublié de vous précisez les composants que j'utilise

    Sdac de la cie devart.

    Devart SDAC pour RAD Studio Xe2

    Merci


    Mario

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

Discussions similaires

  1. Commande SQL qui ne fonctionne pas dans une JSP
    Par crippy dans le forum JDBC
    Réponses: 1
    Dernier message: 14/12/2012, 09h50
  2. Commande SQL qui ne fait pas update ?
    Par Battosaiii dans le forum PL/SQL
    Réponses: 1
    Dernier message: 27/07/2011, 15h23
  3. la fonction qui remplace NVL dans SQL SERVER
    Par bestdali dans le forum Outils
    Réponses: 3
    Dernier message: 20/05/2011, 07h18
  4. Fonction qui regroupe les commandes sql
    Par champomy62 dans le forum VB.NET
    Réponses: 13
    Dernier message: 28/10/2010, 01h27
  5. commande SQL qui ne fonctionne pas
    Par Flavien44 dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/06/2007, 16h40

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