requete avec connexion defini dans le code
Débuté par kermarrecs, 16 déc. 2004 12:14 - 5 réponses
Posté le 16 décembre 2004 - 12:14
bonjour voila mon probleme : la connexion marche mais je n'arrive pas a executer ma requete : faut'il obligatoirement que la connexion dans les parametre HExécuteRequêteSQL soit une connexion définie sous l'éditeur d'analyses? Je croyais que ce que je faisait marcherai, j'ai defini une connexion plus haut et je l'ai appele testconn. Le message d'erreur est "fichier MATIERES inconnu". ----------------------------------------------------------------------------------------------- HDécritConnexion("testconn", "####", "####","SERVEUR_MSDE", "ALLDBDMI", hOledbSQLServer, hOLectureEcriture, "") // Ouvrir la nouvelle connexion SI(HOuvreConnexion("testconn")) = Faux ALORS Erreur("Erreur connexion : " +HErreurInfo()) FIN Reqmatieres est une Source de Données SI(HExécuteRequêteSQL(Reqmatieres,"testconn",hRequêteDéfaut,"SELECT * from MATIERES"))=Faux ALORS Erreur("Erreur requete : " + HErreurInfo()) FIN //FichierVersTableMémoire(Table1,Reqmatieres)
Posté le 16 décembre 2004 - 12:19
HChangeConnexion("MATIERES", "testconn") "kermarrec" <kermarrecs@msn.com> a écrit dans le message de news:41c155e6@news.pcsoft.fr... bonjour voila mon probleme : la connexion marche mais je n'arrive pas a executer ma requete : faut'il obligatoirement que la connexion dans les parametre
HExécuteRequêteSQL soit une connexion définie sous l'éditeur d'analyses? > Je croyais que ce que je faisait marcherai, j'ai defini une connexion plus haut et je l'ai appele testconn.Le message d'erreur est "fichier MATIERES inconnu". --------------------------------------------------------------------------
--------------------- HDécritConnexion("testconn", "####", "####","SERVEUR_MSDE", "ALLDBDMI",
hOledbSQLServer, hOLectureEcriture, "")// Ouvrir la nouvelle connexion SI(HOuvreConnexion("testconn")) = Faux ALORS Erreur("Erreur connexion : " +HErreurInfo()) FIN Reqmatieres est une Source de Données SI(HExécuteRequêteSQL(Reqmatieres,"testconn",hRequêteDéfaut,"SELECT * from
MATIERES"))=Faux ALORSErreur("Erreur requete : " + HErreurInfo()) FIN //FichierVersTableMémoire(Table1,Reqmatieres)
Posté le 16 décembre 2004 - 13:31
Ca ne marche toujours pas --------------------------------- HDécritConnexion("testconn", "####", "####","SERVEUR_MSDE", "ALLDBDMI", hOledbSQLServer, hOLectureEcriture, "") // Ouvrir la nouvelle connexion SI(HOuvreConnexion("testconn")) = Faux ALORS Erreur("Erreur connexion : " +HErreurInfo()) FIN Reqmatieres est une Source de Données HChangeConnexion("MATIERES", "testconn") SI(HExécuteRequêteSQL(Reqmatieres,"testconn",hRequêteDéfaut,"SELECT * from MATIERES"))=Faux ALORS Erreur("Erreur requete : " + HErreurInfo()) FIN -------------------------------------- Mais je ne coprend pas pourquoi il faudrai redeclarer la table matiere, je me vois pas faire ca pour chaque requete que j'aurai a faire pourquoi faut'il "importer" la table ou les tables sur lesquelle on veut travailler une connexion vers une base ne permet pas simplement de faire une requete et d'avoir une sorte de recordset ? je dois mal m'y prendre. Le probleme est que je ne veux pas devoir initialiser chaque base ou chaque type de base de donnée avec l'interface windev, je voudrais pouvoir faire tout ca dans le code, et y compris les requete .
Posté le 16 décembre 2004 - 13:51
bon , j'ai reussi en faisant comme ceci j'ai declarer un nouveau fichier que j'ai appele du meme nom que ma table je trouve cette methode tres contraignante car si j'ai 5 table en jointure, il faudra que je declare 5 fichier .... n'y a t'il pas une methode plus simple sans passer par l'editeur d'analyse . ---------------------------------------------- HDécritConnexion("testconn", "####", "####","SERVEUR_MSDE", "ALLDBDMI", hOledbSQLServer, hOLectureEcriture, "") // Ouvrir la nouvelle connexion SI(HOuvreConnexion("testconn")) = Faux ALORS Erreur("Erreur connexion : " +HErreurInfo()) FIN SI( HDéclareExterne("MATIERES" , "MATIERES" , "testconn")) =Faux ALORS Erreur("Erreur declare externe : " +HErreurInfo()) FIN Reqmatieres est une Source de Données SI(HExécuteRequêteSQL(Reqmatieres,"testconn",hRequêteDéfaut,"SELECT * from MATIERES"))=Faux ALORS Erreur("Erreur requete : " + HErreurInfo()) FIN FichierVersTableMemoire(Table1,Reqmatieres)
Posté le 16 décembre 2004 - 15:40
non tu decris ta connection + hchangeconnection() une seule fois au démarrage de ta connection et après OuvreConnexion() HExécuteRequêteSQL() HfermeConnexion() "kermarrec" <kermarrecs@msn.com> a écrit dans le message de news:41c167e4@news.pcsoft.fr... Ca ne marche toujours pas --------------------------------- HDécritConnexion("testconn", "####", "####","SERVEUR_MSDE", "ALLDBDMI",
hOledbSQLServer, hOLectureEcriture, "")// Ouvrir la nouvelle connexion SI(HOuvreConnexion("testconn")) = Faux ALORS Erreur("Erreur connexion : " +HErreurInfo()) FIN Reqmatieres est une Source de Données HChangeConnexion("MATIERES", "testconn") SI(HExécuteRequêteSQL(Reqmatieres,"testconn",hRequêteDéfaut,"SELECT * from
MATIERES"))=Faux ALORSErreur("Erreur requete : " + HErreurInfo()) FIN -------------------------------------- Mais je ne coprend pas pourquoi il faudrai redeclarer la table matiere, je
me vois pas faire ca pour chaque requete que j'aurai a faire pourquoi faut'il "importer" la table ou les tables sur lesquelle on veut
travailler une connexion vers une base ne permet pas simplement de faire une requete
et d'avoir une sorte de recordset ?je dois mal m'y prendre. Le probleme est que je ne veux pas devoir initialiser chaque base ou
chaque type de base de donnée avec l'interface windev, je voudrais pouvoir faire tout ca dans le code, et y compris les requete . >
Posté le 17 décembre 2004 - 00:03
"kermarrec" <kermarrecs@msn.com> écrivait news:41c16cac$1@news.pcsoft.fr: > hRequêteDéfaut Salut, Ton pb vient du paramètre "hRequêteDéfaut" de HExécuteRequeteSql. Lorsque tu donnes ce paramètre, Windev doit pouvoir analyser les fichiers/Tables que tu utilises dans ta requêtes. Cela afin de déterminer la connexion à utiliser et de façon à vérifier le code SQL à exécuter. Ces fichiers/Tables doivent donc être présents dans ton analyse ou être préalablement déclarés par programmation (comme tu l'as fais dans ton dernier exemple qui fonctionne). Mon conseil : Importe la description de ta base dans l'analyse, cela te permettra d'avoir la description des tes tables sous la main et en plus d'avoir des assistants de code, de fenêtres, de requêtes, d'état..... Maintenant si tu veux tout faire par programmation c'est possible. Dans ce cas, utilise plutôt le paramètre hRequeteSansCorrection avec HExécuteRequeteSql. Ainsi Windev ne cherchera pas à analyser ta requête, et tu n'auras pas besoins de déclarer tes tables en programmation. Par contre tu devras impérativement spécifier le nom de la connexion à utiliser. Windev n'analysant pas ta requête, il ne peut pas déterminer la connexion à utiliser. Et si il y a une erreur SQL dans ta requête, c'est la base que tu interrogea qui te renverra l'erreur. -- En esperant t'avoir aidé. ted