Membre enregistré 48 messages
Posté le 19 juillet 2020 - 16:42
Bonjour Je suis entrin de devlopper une application qui a une connexion multi base une HFSQl et SQL SERVER, je me connecte au sql server avec succee mais je n'arrive pas recuperer les enregistrement d'une table sql server voila mon code :Nouvelle_connexion est une C onnexion Nouvelle_connexion .. Provider = hOledbSQLServer Nouvelle_connexion .. Utilisateur = "********" Nouvelle_connexion .. MotDePasse = "********" Nouvelle_connexion .. Serveur = "****" Nouvelle_connexion .. BaseDeDonnées = "*****" Nouvelle_connexion .. Accès = hOLectureEcriture SI PAS HOuvreConnexion ( Nouvelle_connexion ) ALORS Erreur ( HErreurInfo ( ) ) RETOUR SINON Info ( "connexion réussi" ) FIN sd ReqSQL est une Source de de Données s Req est une chaîne sd Data est une Source de de Données s Req = [ SELECT * FROM CHARGEMENT ] TableSupprimeTout ( TABLE_ CHARGEMENT ) SI HExécuteRequêteSQL ( sd Data, hRequêteDéfaut , s Req) ALORS TableAjoute ( TABLE_ CHARGEMENT , sd Data) FIN
Membre enregistré 1 151 messages
Posté le 19 juillet 2020 - 17:11
Membre enregistré 2 677 messages
Posté le 19 juillet 2020 - 19:56
Bonjour, Vu d'ici je dirais qu'il manque un HChangeConnexion("*",Nouvelle_connexion). C'est bien beau d'ouvrir la connexion mais si tu ne dis pas que les fichiers de ton analyse doivent utiliser la nouvelle connexion ça ne peut pas fonctionner. -- Cordialement, Philippe SAINT-BERTIN
Posté le 20 juillet 2020 - 11:26
Bonjour, A mon sens, ce qui manque est la déclaration des tables que l'on souhaite accéder avec la connexion dans l'analyse, du genre HDéclareExterne("CHARGEMENT","CHARGEMENT",Nouvelle_connexion). Sinon, pour éviter cela, il faut plutôt utiliser le SQLConnecte. Cordialement, Didier
Membre enregistré 48 messages
Posté le 20 juillet 2020 - 12:45
Bonjour dans le sdData il ya un parametre
Membre enregistré 1 151 messages
Posté le 20 juillet 2020 - 13:54
sdData devrait contenir toutes les données de la requêtes pour la table TABLE_CHARGEMENT : FichierVersTableMémoire(TABLE_CHARGEMENT , sdData ) ..? ou alors une boucle ..? il est clair que sdData doit contenir plus d'une ligne -- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net
Membre enregistré 2 677 messages
Posté le 20 juillet 2020 - 17:29
@Mustapha: Tu n'es pas sur la bonne connexion !!! -- Cordialement, Philippe SAINT-BERTIN
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 10:47
Membre enregistré 2 677 messages
Posté le 21 juillet 2020 - 11:04
Je te l'ai dit plus haut. Tu crées une connexion mais tu ne dis jamais à ton application de l'utiliser. Pour ça il y a HChangeConnexion(). -- Cordialement, Philippe SAINT-BERTIN
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 11:38
Le message d'erreur qui provien est: Vous avez appelé la fonction HExécuteRequêteSQL. erreur dans le code sql de la requete <_Source_SdData_1>.initialisation de la requete impossible. Fichier CHARGEMENT inconnu erreur détéctée : SELECT * FROM >>>>CHARGEMENT<<<<<
Membre enregistré 951 messages
Posté le 21 juillet 2020 - 12:58
Membre enregistré 1 151 messages
Posté le 21 juillet 2020 - 13:53
Vous dites aux début que votre application est multi base : est-ce la même base de données à chaque fois, identique à l'analyse du projet ? ou bien des bases de données différentes (structures différentes)? -- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 15:24
Jutilise une base de données en HFSQL c/s et une auttre en SQL SERVER. je fait une ecriture dans la base SQL server depuis ma base hfsql. pour la connexion ca marche avec : Nouvelle_connexion est une Connexion // Paramètres de la connexion Nouvelle_connexion ..Provider = hOledbSQLServer Nouvelle_connexion ..Utilisateur = "********" Nouvelle_connexion ..MotDePasse = "********" Nouvelle_connexion ..Serveur = "****" Nouvelle_connexion ..BaseDeDonnées = "*****" Nouvelle_connexion ..Accès = hOLectureEcriture // Ouverture de la connexion SI PAS HOuvreConnexion ( Nouvelle_connexion ) ALORS Erreur(HErreurInfo()) RETOUR SINON Info("connexion réussi") FIN ca marche mais le probleme je veux remplire le champ table pour afficher les enregistrement dans la table chargement qui ce trouve dans SQL serer, jai executer ce code : sdReqSQL est une Source de Données sReq est une chaîne sdData est une Source de Données sReq = [ SELECT * FROM CHARGEMENT ] TableSupprimeTout(TABLE_CHARGEMENT) SI HExécuteRequêteSQL(sdData,hRequêteDéfaut,sReq) ALORS TableAjoute(TABLE_CHARGEMENT,sdData) FIN il me retourne une erreur que la table chargement est inconu ??? ( la table chargement est dans le SQL SERVER.
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 15:26
Bonjour Christophe j'ai fait comme l'exemple que tu ma envoyer mais tj le meme pb l'erreur retourné est que la table chargement qui ce trouve dans sql server est inconu?
Membre enregistré 1 151 messages
Posté le 21 juillet 2020 - 15:56
Membre enregistré 2 677 messages
Posté le 21 juillet 2020 - 16:16
Bonjour, Je persiste et je pense que ta requête n'est pas effectuée sur la bonne connexion. Pour le moment ta requête s'exécute sur la base HF qui ne contient peut-être pas ce fameuse table chargement. Il faudrait faireSI HExécuteRequêteSQL ( sd Data, Nouvelle_connexion , hRequêteDéfaut , s Req) ALORS TableAjoute ( TABLE_ CHARGEMENT , sd Data) FIN
-- Cordialement, Philippe SAINT-BERTIN
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 16:29
Bonjour Philippe SB Sa na pas marcher tj le meme message d'erreur : Vous avez appelé la fonction HExécuteRequeteSQL. Erreur dans le code SQL de la requete <_Source_sdData_1>. Initialisation de la requete impossible. Fichier CHARGEMENT Inconu
Membre enregistré 48 messages
Posté le 21 juillet 2020 - 16:36
Bonjour THIERRY TILLIER Non ya pas d'erreur d'ortographe j'ai verifier
Membre enregistré 1 151 messages
Posté le 21 juillet 2020 - 16:40
@Philippe ce ne serait pas mieux avec une autre option : hRequêteSansCorrectionHFHExécuteRequêteSQL ( sd Data, Nouvelle_connexion , hRequêteSansCorrectionHF , s Req)
-- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net
Membre enregistré 2 677 messages
Posté le 21 juillet 2020 - 17:28
@THIERRY TILLIER: L'option importe peu, c'est juste pour lui dire sur quelle connexion il doit effectuer la requête. Si rien n'est précisé, la requête s'effectue sur la connexion en cours @Mustapha Si tu lances la requête dans SQL Management ça dit quoi ? -- Cordialement, Philippe SAINT-BERTIN
Membre enregistré 1 151 messages
Posté le 22 juillet 2020 - 08:57
avec ou sans hRequêteSansCorrectionHF le résultat peut être différent. Sous Oracle j'ai eu le même type d'erreur si j'utilisais juste hRequêteDéfaut, alors qu'avec hRequêteSansCorrectionHF la requête s'exécutait bien. -- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net
Membre enregistré 2 677 messages
Posté le 22 juillet 2020 - 10:13
C'est bon à savoir, pourtant il me semblait que ce paramètre ne servait que pour formater la requête correctement. -- Cordialement, Philippe SAINT-BERTIN
Posté le 22 juillet 2020 - 10:17
Bonjour, J'insiste par rapport à la déclaration de la table SQL à manipuler dans l'analyse, comme indiqué dans mon post du 20 juillet : "Bonjour, A mon sens, ce qui manque est la déclaration des tables que l'on souhaite accéder avec la connexion dans l'analyse, du genre HDéclareExterne("CHARGEMENT","CHARGEMENT",Nouvelle_connexion). Sinon, pour éviter cela, il faut plutôt utiliser le SQLConnecte." Cordialement, Didier
Membre enregistré 1 151 messages
Posté le 22 juillet 2020 - 11:15
Membre enregistré 48 messages
Posté le 22 juillet 2020 - 12:26
Bonjour J'ai resolu mon pb car le etais dans la definition de la connexion alors j'ai changer la connexion :H.ModeSQLServer = 0 SI PAS HDécritConnexion ( gs ConnSQL , SAI_ User , SAI_ MP , SAI_ Adr , SAI_ Database , hOledbSQLServer , hOLectureEcriture , "WD Command Timeout=120;WD Lock Timeout=30;WD Connection Timeout=10" , hCurseurClient + hCurseurPessimiste ) ALORS Info ( HErreurInfo ( hErrComplet ) ) RENVOYER Faux SINON SI PAS HOuvreConnexion ( gs ConnSQL ) ALORS Info ( HErreurInfo ( hErrComplet ) ) RENVOYER Faux FIN FIN
comme ca j'ai pu lire et ecrire dans les tables SQLSERVER Merci a tous
Membre enregistré 5 messages
Posté le 10 septembre 2020 - 19:33
Bonsoir, as-tu réglé ton probléme ou pas encore ?
Membre enregistré 48 messages
Posté le 13 septembre 2020 - 10:14
Salut J'ai reglé le probleme de la connexion ca marche meme pour une requete de update ca marche mais un probleme persiste, c'est que l'execution de cette requette ne donne rien: PROCÉDURE Chargement() HLitRecherchePremier(Centre, Flag, "S") SI HTrouve() = Vrai ALORS //Info("Enregistrement trouvé"+Centre.Des) SINON Erreur("Aucun enregistrement ne correspond") FIN H.ModeSQLServer = 0 SI PAS HDécritConnexion(gsConnSQL,"*****"************************************",hOledbSQLServer,hOLectureEcriture,"WD Command Timeout=120;WD Lock Timeout=30;WD Connection Timeout=10",hCurseurClient+hCurseurPessimiste) ALORS Info(HErreurInfo(hErrComplet)) RENVOYER Faux SINON SI PAS HOuvreConnexion(gsConnSQL) ALORS Info(HErreurInfo(hErrComplet)) RENVOYER Faux FIN FIN sReq est une chaîne sdData est une Source de Données sReq = [ INSERT INTO TRF_CHARGEMENT ([TYPE_DOCUMENT] ,[REFERENCE] ,[Centre] ,[Produit] ,[EMBALLAGE] ,[DATE_OPERATION] ,[QTE] ) SELECT dbe.Type_Doc, dbe.reference_doc_fa, be.Code_cds_source, dbe.Code_Prod, dbe.code_emballage, dbe.Date_BE, dbe.Quantite FROM Detail_BE AS dbe LEFT JOIN Bon AS be ON bon.Num_Date = dbe.bon.Num_Date WHERE dbe.bon.Num_Date= SAI_Reference ] HExécuteRequêteSQL(sdData,gsConnSQL,hSansBind+hRequêteSansCorrection,sReq) HFermeConnexion(gsConnSQL)