PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → requete avec connexion defini dans le code
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 ALORS
Erreur("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 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 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