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 :

Question sur l'accès MSSQL en natif [WD15]


Sujet :

WinDev

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut Question sur l'accès MSSQL en natif
    Bonjour à tous,

    J'aurai besoin de vos lumières et je vais essayer d'être clair...
    J'ai un code du type :
    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
     
    ResSQL est un booléen = SQLExecWDR(REQ_Lister1) //1ère requête                     
     
    Nbenr est un entier = 0
    sLibGamme, sCodeGamme, sCodeRecette sont des chaînes
    SI ResSQL ALORS
    	TANTQUE SQLAvance(REQ_Lister1) = 0 
    			sCodeRecette = SQLLitCol(REQ_Lister1)
    			ResSQL2 = SQLExecWDR(REQ_Lister2) //2ème requête
    			SI ResSQL2 ALORS
    				TANTQUE SQLAvance(REQ_Lister2) = 0 
    					//Traitement
    				FIN
    			FIN
    			SQLFerme(REQ_Lister2)
    		FIN
    	FIN
    	SQLFerme(REQ_Lister1)
    FIN
    Le déroulement est bien SQLExec ->SQLFerme pour les 2 requêtes. Dans la doc de SQLFerme, on a :
    Déclare la fin d'exécution d'une requête et libère les ressources mémoire allouées lors de l'exécution de la requête
    En parallèle de tout cela, je consulte le SQL Server Entreprise Manager sur le serveur MSSQL. Lorsque je me connecte en début de programme, j'ouvre 2 processus sur le serveur (2 car j'ai un processus automatique avec la commande SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    master.dbo.xp_msver 'ProductVersion'
    . J'ai demandé des explications à PcSoft... dossier en cours). Mon problème c'est lors de l'exécution du code ci dessus, quand le 2ème SQLExec est appelé, un 3ème processus apparait et ne disparait pas lorsque je réalise mon SQLFerme. Imaginez une imbrication de 5 requêtes SQL dans une boucle sur un programme s'exécutant sur 10 machines... Si je n'ai pas été assez clair, n'hésitez pas à me le faire savoir. D'avance merci.

  2. #2
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Difficile de t'aider, c'est interne au fonctionnement de l'AN de l'éditeur, seul lui peut t'expliquer comment il gère les requets imbriquées...
    Emmanuel Lecoester
    => joomla addict.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Merci quand même!! Je tente une RequêteAuST (encore une... j'en suis à 4 en 15j! )

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Un peu de nouveau, PcSoft m'a répondu :
    Je vous recommande dans tous les cas d'utiliser les fonctions H* pour l'accès aux données (HouvreConnexion à la place de SQLExec, HexecuterequeteSQL à la place de SQLExec...). En effet les accès via ces fonctions sont à préférer, les fonctions SQL* sont conservées pour assurer la compatibilité des anciennes applications utilisant notamment les pilotes ODBC.
    Après ma petite enquête, mon problème vient quand j'imbrique plusieurs appels à SQLExecWDR :
    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
    SQLExecWDR(REQ1, val1)                           
     
    Nbenr est un entier = 0
    SI ResSQL ALORS
    	TANTQUE SQLAvance(REQ1) = 0  // Il y a encore une ligne à lire
    		val2 = SQLLitCol(REQ1, 1)
    		ResSQL2 = SQLExecWDR(REQ2, val2)
    		SI ResSQL2 ALORS
    			TANTQUE SQLAvance(REQ2) = 0
    				(...)
    			FIN
    		FIN
    		SQLFerme(REQ2)
    	FIN
    FIN
    SQLFerme(REQ1)
    A la fin de ce bout de code, j'ai 3 processus SQL : le fameux master.dbo.xp_msver 'ProductVersion' et mes 2 requêtes malgré les SQLFerme.
    Je vous laisse imaginer le nombre de processus dans ma BD...
    ma solution temporaire : j'ai écouté ce que PcSoft ma dit et j'ai mixé les 2 techniques SQLExecWDR et HExecuteRequete
    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
    SQLExecWDR(REQ1, val1)                           
     
    Nbenr est un entier = 0
    SI ResSQL ALORS
    	TANTQUE SQLAvance(REQ1) = 0  // Il y a encore une ligne à lire
    		val2 = SQLLitCol(REQ1, 1)
    		ResSQL2 = HExecuteRequete(REQ2, hRequêteDéfaut, val2)
    		SI ResSQL2 ALORS
    			HLitPremier(REQ2)
    			TANTQUE PAS HEnDehors
    				(...)
    			FIN
    		FIN
    		HAnnuleDéclaration(REQ2)
    	FIN
    FIN
    SQLFerme(REQ1)
    Si ça peut aider...

  5. #5
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Merci pour la réponse officielle de l'éditeur
    Emmanuel Lecoester
    => joomla addict.

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

Discussions similaires

  1. Question sur l'accès au webservice à partir d'une application
    Par codon21 dans le forum Web & réseau
    Réponses: 6
    Dernier message: 19/02/2013, 11h06
  2. Question sur l'accès aux method private
    Par Phantom_Lord21 dans le forum Caml
    Réponses: 1
    Dernier message: 02/07/2010, 20h24
  3. Question sur l'accès à la configuration (ZendConfig)
    Par mverhaeghe dans le forum Zend Framework
    Réponses: 2
    Dernier message: 11/03/2008, 11h34
  4. Question sur les accés concurrents
    Par bannik dans le forum Autres
    Réponses: 1
    Dernier message: 08/02/2008, 17h41
  5. question sur l'accée a un machine de mon réseau
    Par inter_amine dans le forum Windows XP
    Réponses: 4
    Dernier message: 30/04/2007, 16h32

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