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 :

[Procedure Stockée] Acces à base SQLServer


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Par défaut [WD12][Procedure Stockée] Acces à base SQLServer
    Bonjour,

    Désirant accéder à une base SQLServer depuis une procédure stockée sur mon serveur HF, je rencontre quelques difficultés... Voila le topo :

    Une application en WD12, utilisant principalement une base HF.
    Une base SQL Server (Sage), sur laquelle je dois récuperer quelques informations pour des statistiques, avec des calculs à faire.

    Jusqu'a la, les calculs se font dans ma requete, avec du PL SQL... Cela donne quelque chose d'assez lent.
    L'idée est donc venu de créer une procédure stockée sur le serveur HF, qui s'occuperait de faire les calculs et renverrait le résultat.

    Dans la procédure stockée en question donc, un HExecuteRequeteSQL... Pour faire plus clair, voila la procédure :

    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
    25
    26
    27
    28
    29
    30
     
    PROCEDURE CASurPeriode(NoCompteGescom, Date1, Date2)
     
    sdCASurPeriode est une Source de Données
    sRequete est une chaîne
     
    sRequete =[
    SELECT Sum(F_DOCLIGNE.DL_MontantHT) AS CA
    FROM F_DOCLIGNE
    WHERE(F_DOCLIGNE.DO_Date BETWEEN '
    ] + Date1 + [
    'AND'
    ] + Date2 + [
    ') AND F_DOCLIGNE.DO_Domaine = 0
    AND F_DOCLIGNE.DO_Type>=6
    AND F_DOCLIGNE.CT_Num = 
    ] + NoCompteGescom
     
    SI HExécuteRequêteSQL(sdCASurPeriode, MaConnexionGestCom, hRequêteSansCorrection, sRequete) ALORS
     
    	HLitPremier(sdCASurPeriode)
     
    SINON
     
    	RENVOYER HErreurInfo()
     
    FIN
     
     
    RENVOYER sdCASurPeriode.CA
    Et donc, la, problème... Pas moyen de réussir a faire marcher cela.
    Soit on m'indique que "La constante passée en parametre est incorrecte", soit que l'analyse n'est pas ouverte et qu'il ne connait pas le fichier...

    Bref, si quelqu'un a une suggestion pour corriger ca, ou une méthode pour accéder à ma base SQLServer depuis ma procédure stockée...

    Finar

    P.S : On se connecte à la base SQLServer via ODBC, et le lien ODBC est bien fait sur le serveur.
    P.S2 : La description des fichiers SQLServer nécessaires est faite dans l'analyse. On arrive parfaitement à les interroger à partir de l'application en elle même.

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Togo

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut approche de solition
    salut
    pour commencer, tu dois optimisier la derniere ligne comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI HExécuteRequêteSQL(sdCASurPeriode, MaConnexionGestCom, hRequêteSansCorrection, sRequete) ALORS	
    	HLitPremier(sdCASurPeriode)	
                 RENVOYER sdCASurPeriode.CA
    SINON
    	RENVOYER HErreurInfo()
    FIN
    voici ce que moi je pense des erreurs: la table F_DOCLIGNE se trouvant ne se trouve pas dans ton analyse et donc avantde pouvoir l'utiliser tu serai obliger de décrire une connexion distincte à la table autre que celle de ton analyse hyperfile

    Pour ce qui est de mon coté, j'utilise une connexion acces natif au sqlserver mais je vais essayer de te donner quelques approche de solution, qui j'espere pourrais t'aider
    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
    NumConnexion est un entier
    NumConnexion = SQLConnecte(NOM_SERVEUR,UTILISATEUR,MPASSE,BASE_DONNEE, "SQL SERVER")
    SI PAS NumConnexion ALORS
    	SQLInfoGene()
    	Erreur("La connexion à la source de données " + NOM_SERVEUR + ...
    	" a échoué.","IMPOSSIBLE DE CONTINUER LE TRAITEMENT"+RC+RC+...
    	"VEUILLEZ SIGNALER LE DISFONCTIONNEMENT "+RC + " A VOTRE ADMINISTRATEUR SYSTEME") //+rc+rc+...
    	RETOUR
    FIN
     
    //ce premier code permety de verifier si tu arrive a te connecter au serveur et à la base de donnee
     
    // Décrire la nouvelle connexion source
    HDécritConnexion ("Connexion_source",UTILISATEUR,MPASSE,NOM_SERVEUR,BASE_DONNEE,hODBC,hOLectureEcriture)
     
    // Ouvrir la nouvelle connexion
    HOuvreConnexion("Connexion_source")
     
    // Indiquer que "F_DOCLIGNE" utilise la nouvelle connexion
    HChangeConnexion("F_DOCLIGNE", "Connexion_source")
    et ensuite tu m fais signe.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Par défaut
    Bonjour,

    La table F_DOCLIGNE se trouve bien dans mon analyse, du moins sa description.

    Pour ce qui est des fonctions, SQLConnecte, HDécritConnexion, etc... Ce sont malheureusement des fonctions indisponibles en procédure stockée.

Discussions similaires

  1. Appel de Procedure stockée dans base oracle
    Par sami117 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 14/08/2009, 16h11
  2. [WDM12] Accès Base SQLServer via OLEDB
    Par mogwai162 dans le forum Windev Mobile
    Réponses: 3
    Dernier message: 06/05/2009, 09h38
  3. [SQL-Server] Accés base SQLServer distante
    Par locs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/02/2009, 13h34
  4. Acces à une base SQLServer sur un serveur dédié
    Par Cabire dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/04/2008, 15h13
  5. pb procedure stockée SQLServer
    Par pppeeezzz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2006, 14h01

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