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 :

écrire une procédure stockée de sql server à partir de windev


Sujet :

WinDev

  1. #1
    Membre éclairé Avatar de GodGives
    Inscrit en
    Août 2007
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2007
    Messages : 456
    Par défaut écrire une procédure stockée de sql server à partir de windev
    Bonjour!

    Comment pourrai-je écrire une procédure stockée de sql server à partir de windev et l'exécuter?

  2. #2
    Membre expérimenté Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Par défaut
    A priori la création de procédures stockées se fait dans l'analyse (insertion >> Collection de procédures stockées). C'est le cas pour HF et je ne pense pas qu'il y ait de différence avec SQL serveur. L'aide donne cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE PROCEDURE MyProc(@p1 int, @p2 int, @res int output)
    AS select @res=@p1+@p2
    return 2*@res
    La manipulation s'effectue par HExécuteRequête en initialisant au préalable une source de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaProc est une source de données
    et les variables utilisées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaProc.p1 = 10
    MaProc.p2 = 20
    puis la procédure s'exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SI HExécuteRequêteSQL(MaProc,"MaConnexion", ...
           hRequêteSansCorrection ,"MyProc @p1,@p2,@res out") ALORS
       Trace("res="+MaProc.res) 
       Trace("p1="+MaProc.p1) 
       Trace("p2="+MaProc.p2) 
       Trace("return_value="+MaProc.return_value)
    SINON
       Erreur(HErreurInfo())
    FIN
    A+

  3. #3
    Membre éclairé Avatar de GodGives
    Inscrit en
    Août 2007
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2007
    Messages : 456
    Par défaut
    J'utilise la version 10 et dans le menu <Insertion> de l'analyse, j'ai pas de sous-menu <Collection de procédures stockées>

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Par défaut
    Bonjour

    Je travail sur un projet où je vais chercher des informations d'une base(microsoft sql server), pour l'instant j'arrive à enregistrer toutes les valeurs de ma base de données vers un table. voici mon 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    PROCEDURE requete_selection_bdd()
    
    Sablier()
    
    LOCAL		
    	nCnx est un entier
    	requete est une chaîne
    	bResultat est un booléen	
    	
    nCnx = SQLConnecte("windev","","","FLINK","ODBC")//,"SQLOLEDB")
    SQLInfoGene()
    
    
    requete = "SELECT     *, Date_1 AS Expr1, Temp_Entree AS Expr2, Temp_Chaud AS Expr3, Temp_Sortie AS Expr4, Recircul AS Expr5, Num_Phase AS Expr6, Phase AS Expr7, Lait AS Expr8, Jour AS Expr9, Sectime AS Expr10 FROM  Archivage_P1 "
    
    bResultat = SQLExec(requete,"maRequete")
    
    SI bResultat=Faux ALORS
    	Info("La consultation de la base a échouée!!")
    FIN
    
    
    TANTQUE SQLAvance("maRequete")=0
    	
    //	SI tempsDebut..PartieHeure <=SQLLitCol("Date_1",1)<=tempsFin..PartieHeure ALORS
    		//si SQLLitCol("maRequete",9)=requeteTempsDebut et SQLLitCol("maRequete",1)<conv_tempsdebut ou 
    		TableAjoute(TABLE_Table1,SQLLitCol("maRequete",1)+TAB+SQLLitCol("maRequete",2)+TAB+SQLLitCol("maRequete",3)+TAB+SQLLitCol("maRequete",4)+TAB+SQLLitCol("maRequete",5)+TAB+SQLLitCol("maRequete",6)+TAB+SQLLitCol("maRequete",7)+TAB+SQLLitCol("maRequete",8)+TAB+SQLLitCol("maRequete",9)+TAB+SQLLitCol("maRequete",10))
    //	FIN
    FIN
    
    SQLFerme("maRequete")
    
    SQLDéconnecte()
    
    Sablier(Faux)
    Pour connaitre cette ligne de code, il faut que tu va sous sql server entreprise manager et tu va sur ta table clique droit de la souris, open table => query et la il te propose une ligne de code

    il faut aussi eller dans panneau de configuration, outil administration => source de données ODBC => et la du doit rentrer quelques parametres dans "sources de données utilisateur" et "sources de données système

    cordialement law56100

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Par défaut
    Bonjour,
    Il me semble que la possibilité de créer des procédures stockées directement dans Windev n'est apparu qu'à partir de la version 11.
    Il faut donc les créer dans SQL Server puis les exécuter grâce à SQLExec() ou HExécuteRequêteSQL().

    Remarque pour law56100 :
    En faisant SELECT * ... FROM Archivage_P1
    tu sélectionnes déjà toutes les rubriques de ta table Archivage_P1.
    Pourquoi rajoutes-tu Date_1 AS Expr1, Temp_Entree AS Expr2, Temp_Chaud AS Expr3... dans ta requête?

    Si ce n'est que pour remplir ta table TABLE_Table1 avec le résultat de la requête, tu pouvais utiliser SQLTable().

  6. #6
    Membre éclairé Avatar de GodGives
    Inscrit en
    Août 2007
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2007
    Messages : 456
    Par défaut
    Citation Envoyé par law56100 Voir le message
    Bonjour

    Pour connaitre cette ligne de code, il faut que tu va sous sql server entreprise manager et tu va sur ta table clique droit de la souris, open table => query et la il te propose une ligne de code

    il faut aussi eller dans panneau de configuration, outil administration => source de données ODBC => et la du doit rentrer quelques parametres dans "sources de données utilisateur" et "sources de données système
    en ce qui concerne l'accès à la base sql server et la manipulation des requêtes, je n'ai aucun problème. Par contre, ce qui m'inquiète ici, c'est les procédures stockées.

    Citation Envoyé par Tasumy Voir le message
    Bonjour,
    Il me semble que la possibilité de créer des procédures stockées directement dans Windev n'est apparu qu'à partir de la version 11.
    Il faut donc les créer dans SQL Server puis les exécuter grâce à SQLExec() ou HExécuteRequêteSQL().
    Si la procédure est créée au niveau de la base de données, n'est-il pas nécéssaire de l'importer dans l'analyse avant d'en faire usage? sinon, elle serait considérée comme un fichier inconnu.

    En ce qui concerne l'import dans l'analyse de windev, seules les tables et les requêtes peuvent être importées.

  7. #7
    Membre éprouvé
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Par défaut
    Pas nécessairement, tu n'as pas besoin d'importer tes procédures stockées avant de les utiliser.

    En utilisant SQLExec():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLExec("execute maProcédure paramètre1, paramètre2.....", maRequete)

    Pour HExécuteRequêteSQL(), dans l'aide tu as un exemple (en tapant en mot clé : procédures stockées)

    Mais dans ton cas, je pense qu'il vaut mieux utiliser HExécuteRequêteSQL() car tu as sûrement dû définir une connexion quand tu as exporté ton analyse (donc pas besoin de te reconnecter à ta base de données). Si tu utilises SQLExec(), tu devras te reconnecter à ta base de données avec SQLConnecte().

  8. #8
    Membre éclairé Avatar de GodGives
    Inscrit en
    Août 2007
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2007
    Messages : 456
    Par défaut
    Comme tu l'as bien dit, j'ai défini une connexion! donc j'ai utilisé HExécuteRequêteSQL(), et j'ai été pleinement satisfait.

    Je pense qu'avec ça, je pourrai continuer mes recherches.

    Vraiment, merci beaucoup à tous ceux qui ont participé à cette discussion, en particulier à toi Tasumy!!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2008, 15h49
  2. Réponses: 0
    Dernier message: 30/09/2008, 02h14
  3. Appel d'une procédure stockée de SQL Server
    Par IRAD dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/04/2008, 13h36
  4. Réponses: 2
    Dernier message: 20/03/2007, 18h00
  5. Réponses: 2
    Dernier message: 05/12/2005, 17h39

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