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 :

Requêtes sur différentes bases de donnée dans des threads


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut Requêtes sur différentes bases de donnée dans des threads
    Bonjour,
    Quelqu'un a-t-il déjà eu le problème d'exécution de requêtes dans des BDD différentes avec les threads sous Windev.
    Pour schématiser, je voudrais avoir plusieurs threads qui s'exécutent en même temps. Certains exécutant des requêtes sur une BDD MySQL, d'autres sur une BDD SQL Server.
    Le problème c'est que je ne vois pas comment faire, car les requêtes MySQL vont parfois s'exécuter sur la BDD SQL Server et vice-versa.
    Si quelqu'un sait comment faire...???
    Merci.

  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,
    J'ai réussi à le faire en déportant les écritures dans la "base 2" dans un composant externe.
    J'ai donc le thread principal qui lie dans la "base 1", et un thread secondaire qui utilise un composant externe pour écrire dans la "base 2".

    Tatayo.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    Merci pour la réponse, mais je ne veux pas passer par un composant externe qui nécessite recréer un nouveau projet.
    N'est-il pas possible lorsque l'on exécute et parcours des requêtes SQL de sélectionner un identifiant de connexion sur lequel exécuter la requête???? C'est une très grosse limitation de Windev de ne pas pouvoir travailler sur 2 BDD en même temps.
    Du coup vu la gestion des threads dans Windev, est-ce que si j'effectue une transaction SQL dans un thread, les requêtes de ma fenêtre principale vont également au petit bonheur la malchance s'imbriquer dans cette transaction (cette fois ci sur une même BDD avec une seule connection)????

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Je vais certainement enfoncer une porte ouverte, mais la fonction HExécuteRequête possède une syntaxe où on peut préciser la connexion à utiliser.
    Idem pour la fonction HExécuteRequêteSQL a priori.

    Qu'est-ce que vous utilisez (code) de votre côté ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    HExecuteRequete et HExecuteRequeteSQL fonctionnent seulement pour des BDD HyperFile et non pour des BDD SQL Server et MysSQL si je me souviens bien.

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Citation Envoyé par ggbbii Voir le message
    HExecuteRequete et HExecuteRequeteSQL fonctionnent seulement pour des BDD HyperFile et non pour des BDD SQL Server et MysSQL si je me souviens bien.
    Absolument pas. et heureusement

    HExecuteRequeteSQL avec hRequeteSansCorrection est ce que j'utilise le plus pour SQL Server, MySQL, PostgreSQL, SQLite, DB2/400 ...

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Bonjour

    Absolument pas. et heureusement

    HExecuteRequeteSQL avec hRequeteSansCorrection est ce que j'utilise le plus pour SQL Server, MySQL, PostgreSQL, SQLite, DB2/400 ...
    Bonsoir,

    Précision nécessaire me semble-t-il : à condition d'attaquer ces bd via les Accès natifs (devenus 'Connecteurs' natifs).
    Sinon, les non avertis ne vont plus s'y retrouver.

    Hemgé

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Pour SQL Server et DB2/400 j'utilise OLEDB et ça fonctionne très bien aussi

  9. #9
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Comme je le dis depuis des lustres (un lustre = 5 ans), il faut travailler avec des connexions dans l'environnement PCSOFT.
    Ainsi, en ne changeant que la connexion et ses paramètres, il est facile de changer de base de données (enfin, pas trop compliqué), et cela ne nécessite quasiment pas de modifier son 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
    CnxSQL est une Connexion
    CnxHFSQL est une Connexion
    // connexion sur un moteur SQL via ODBC
    CnxSQL..Serveur   = "127.0.0.1"
    CnxSQL..Utilisateur  = "Administrateur"
    CnxSQL..MotDePasse  = "admin"
    CnxSQL..Provider  = hODBC
    CnxSQL..Source   = "Ma déclaration de la connexion"
    CnxSQL..InfosEtendues = "WDPort = 1433" // ou autre
    // connexion sur un moteur HFSQL (Manta)
    CnxHFSQL..Serveur  = "127.0.0.1"
    CnxSQL..Utilisateur  = "Administrateur"
    CnxSQL..MotDePasse  = "admin"
    CnxSQL..Provider  = hAccèsHFClientServeur
    // puis utiliser pour chaque connexion sa declaration
    HExécuteRequêteSQL("Requete1" , CnxSQL ,hRequêteSansCorrection , "select * from table1" )
    HExécuteRequêteSQL("Requete2" , CnxHFSQL ,hRequêteSansCorrection , "select * from table5" )
    A partir de là, la connexion établit le lien sur les tables à lire et la requete. Ce que je n'ai pas fais, c'est de créer une source de données pour l'exemple, mais avec cet ajout, il est facile de parcourir la requete comme si c'était une table.
    Et je précise que cela est valable aussi pour les accès classique de PCSoft. Donc, en utilisant les fonctions houvreconnexion, hchangeconnexion, il est facile de pointer sur des environnements de données différents.

    Je trouve, mais cela n'engage que moi, que ce principe permet d'aborder la lecture des données plus sereinement.

    Bon dev à tous
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par EDM-TAHITI Voir le message
    Je trouve, mais cela n'engage que moi, que ce principe permet d'aborder la lecture des données plus sereinement.
    Tout a fait
    J'ajoute juste : éviter les connexions en dur dans l'analyse (sauf si on sait ce qu'on fait). Ça évite des problèmes du style "Je ne comprends pas ! Sur un poste l'application essaye de se connecter à ma base de développement !"

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    Merci pour les réponses.
    J'utilise l'accès natif pour la BDD MySQL et un pilote ODBC pour la connexion SQL Server. Mon projet Windev ne contient pas d'analyse.
    Du coup je ne pourrais pas utiliser les fonctions HExecuteRequeteSQL sur SQL Server?

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Non pas de fonctions H pour l'ODBC

    http://doc.pcsoft.fr/fr-FR/?3044202

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    Merci pour la réponse rapide Pascal.
    Il n'y a donc pas de solution à mon problème. On ne peut pas dans le cas présenté effectuer des requêtes simultanées (via les threads) dans des BDD différentes. Les SQLCol des différentes requêtes sur les différentes bases se "chevauchent".

  14. #14
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    En effet, avec les fonctions SQL il ne peut y avoir qu'une connexion active

    Pourquoi n'utilises-tu pas OLEDB pour accèder à ta base SQL Server ?

  15. #15
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Je ne comprends pas pourquoi cela se chevauche. Pourrais-tu nous montrer deux requêtes qui se chevauchent.
    Même au travers de thread's, cela ne devrait pas... sauf si les requêtes portent le même nom.
    A te lire sur ce problème, éventuellement.
    PS : j'ai des connexions sur plusieurs bases en simultanée et cela ne me pose pas de soucis, pas de heurt...
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  16. #16
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par EDM-TAHITI Voir le message
    Hello,
    Je ne comprends pas pourquoi cela se chevauche. Pourrais-tu nous montrer deux requêtes qui se chevauchent.
    Même au travers de thread's, cela ne devrait pas... sauf si les requêtes portent le même nom.
    A te lire sur ce problème, éventuellement.
    PS : j'ai des connexions sur plusieurs bases en simultanée et cela ne me pose pas de soucis, pas de heurt...
    Avec les fonctions SQL seule la dernière connexion ouverte est active. On peut passer d'une connexion à l'autre (SQLChangeConnexion) mais à un instant T il n'y a qu'une connexion active
    Enfin, il me semble, d'après mes souvenirs. Mais l'existence même d'une fonction nommée "SQLChangeConnexion" le confirme

    Donc si il y a des threads il doivent forcément attaquer la même base.

  17. #17
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    J'avais mal compris me semble-t-il. Je croyais que c'était sur deux connexions différentes... Gniarf, désolé!
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    Par défaut
    Bonjour,

    Citation Envoyé par ggbbii Voir le message
    J'utilise l'accès natif pour la BDD MySQL et un pilote ODBC pour la connexion SQL Server. Mon projet Windev ne contient pas d'analyse.
    Du coup je ne pourrais pas utiliser les fonctions HExecuteRequeteSQL sur SQL Server?
    Pour utiliser les fonctions H* avec ODBC en fait il faut utiliser le provider (fournisseur) MSDASQL pour "ODBC via OLE DB".

    Mais comme le suggère hpascal, tu peux simplement utiliser un fournisseur OLEDB pour SQL Server.

  19. #19
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Oui parce que "ODBC via OLE DB" ça pédale !

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses, je jetterais un oeil sur OLE DB voir si ça peut résoudre mon problème.

Discussions similaires

  1. Faire des requêtes sur plusieurs bases de données
    Par nandy.c dans le forum Outils de restitution et d'analyse
    Réponses: 15
    Dernier message: 13/06/2013, 18h25
  2. Stocker des requêtes sur la base de données
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/07/2009, 19h52
  3. Réponses: 5
    Dernier message: 16/11/2007, 17h54
  4. [PDO] Requêtes sur plusieurs bases de données
    Par nabab dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 08h11
  5. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57

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