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

WinDev Discussion :

Exécution d'une requête SQL


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Points : 101
    Points
    101
    Par défaut Exécution d'une requête SQL
    Bonsoir à Tous,

    Je suis en train de développer une application dont je vous explique le contexte :

    La base de données de l'application est SQL Server et comporte 2 tables.
    Les données de ces deux tables proviennent de deux sources différentes.

    Les données de la première table s'obtiennent de la façon suivante :

    L'application a un bouton dont le libellé est "Extraction". Une fois le bouton appuyé, l'application se connecte à une autre base de données (cela devra être le cas pour tout autre base de données) pour récupérer des données afin de les afficher dans une table. Ces données représentent l'ensemble des transactions et se trouvent dans la table d'historique.

    Voici le code du bouton de connexion :

    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
    Temp est un entier=SQLConnecte("NomDuServeur","user","mdp","NomDeLaBase","OLEDB",hOledbSQLServer)
    		SI Temp <> 0 ALORS
    			// La connexion s'est bien passée
    			Requete est une chaîne = "SELECT his.ptid, his.acct_type, his.acct_no,  his.effective_dt , his.create_dt, rsm1.name, his.tran_code, his.amt, rsm2.name,his.description FROM  dp_history his , ad_gb_rsm rsm1, ad_gb_rsm rsm2   WHERE rsm2.employee_id=his.super_empl_id AND rsm1.employee_id=his.empl_id AND his.description LIKE '%RET.%' AND his.reversal=0" //AND  his.effective_dt BETWEEN "+"SAI_StartDate"+ "AND "+"SAI_Enddate "
    			SQLExec(Requete,"Ext_dp_history")
    			TANTQUE SQLAvance("Ext_dp_history")=0
    				TableAjouteLigne(FEN_Principale.TABLE_Transaction_History_Adv,SQLLitCol("Ext_dp_history",1),SQLLitCol("Ext_dp_history",2),SQLLitCol("Ext_dp_history",3),SQLLitCol("Ext_dp_history",4),SQLLitCol("Ext_dp_history",5),SQLLitCol("Ext_dp_history",6),SQLLitCol("Ext_dp_history",7),SQLLitCol("Ext_dp_history",8),SQLLitCol("Ext_dp_history",9),SQLLitCol("Ext_dp_history",10))
    			FIN
    		SINON
    			// La connexion a échoué : affichage d'un message explicatif
    			SQLInfoGene()
    			Erreur("La connexion à la source de données " + "DESKTOP-MBIUHPO" + " a échoué." + RC + ...
    			"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
    		FIN
    		// Dans tous les cas (connexion OK ou pas)
    		SQLDéconnecte()
    Pour la requête qui récupère les données, je ne sais pas comment y ajouter des paramètres (Les données de paramètres devant provenir de deux champs dates). Et cela constitue ma première question.

    Les données de la deuxième table proviennent d'un fichier Excel, et là pas de problème à signaler.

    Le second problème (majeurs) est que j'ai crée une vue sur mon serveur SQL dont la requête de sélection est la suivante :

    Code sql : 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
    select tr.account_no 'REF',
    	   tr.account_dt 'CREATEDT',
    	   getdate() 'EFFECTDT',
    	   tr.trans  'SENS',
    	   tr.acct_no_adv 'ACCTNO',
    	   'CR' AS 'ACCTTYPE',
    	   CASE tr.trans
    			WHEN 'C' then 'CR'
    			WHEN 'D' then 'DR'
    	   END 'TRANS',
    	   tr.amt 'AMT',
    	   '' AS 'CHECKNO',
    	   tr.lb_account 'DESCRIPTION'	
    from card_transaction tr
    where tr.lb_account not in (select his.description from dp_history his)
    and year(tr.account_dt) not in (select year(his.create_dt) from dp_history his)
    and month(tr.account_dt) not in (select month(his.create_dt) from dp_history his)
    .

    Le but de cette requête est de récupérer les transactions qui se trouve dans ma première table mais qui ne se trouve pas la la deuxième.

    Et je souhaite récupérer cette vue dans mon application windev, mais aucun moyen de voir cette vue.

    Or ne n'arrive pas à écrire cette requête avec l'éditeur de requête ni en mode SQL.

    Comment dois-je procéder ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour le premier problème, il suffit de construire dynamiquement le texte de la requête. Pour cela regarde du côté des fonctions de traitement des chaines.

    Pour la vue, il peut s'agir d'un problème de droits. Mais sans message d'erreur, difficile d'en dire plus...

    Tatayo.

    P.S. je trouve ta requête un peu bizarre. D'après son code, tu cherches les transactions pour lesquelles il n'existe pas d'enregistrement dans la table dp_history his avec le même mois, ni d'enregistrement avec la même année.
    Donc si j'ai dans cette table une ligne en Janvier 2015, je ne prends aucune transaction qui soit en Janvier ou en 2015. Donc Janvier 2016 est aussi ignoré... Est-ce voulu ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour le premier problème, il suffit de construire dynamiquement le texte de la requête. Pour cela regarde du côté des fonctions de traitement des chaines.

    Pour la vue, il peut s'agir d'un problème de droits. Mais sans message d'erreur, difficile d'en dire plus...

    Tatayo.

    P.S. je trouve ta requête un peu bizarre. D'après son code, tu cherches les transactions pour lesquelles il n'existe pas d'enregistrement dans la table dp_history his avec le même mois, ni d'enregistrement avec la même année.
    Donc si j'ai dans cette table une ligne en Mars 2015 et une autre en Janvier 2016 , je ne prends aucune transaction qui soit en Janvier ou en 2016. Donc Janvier 2016 est aussi ignoré... Est-ce voulu ?

Discussions similaires

  1. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/08/2010, 09h15
  2. exécution d'une requête SQL dans access
    Par skyarnangel dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2009, 11h18
  3. Exécution d'une requête SQL qui affiche un message
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/11/2006, 16h15
  4. Assurer l'exécution d'une requête SQL
    Par condor_01 dans le forum JDBC
    Réponses: 4
    Dernier message: 11/08/2006, 11h23
  5. Erreur d'exécution d'une requête sql
    Par marceline dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 13h12

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