|
Débuté par ali, 08 jan. 2020 11:21 - 15 réponses |
| |
| | | |
|
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 08 janvier 2020 - 11:21 |
Bonjour; Je veux créer une connexion ODBC pour se connecter à une base de données HANA comme mentioné dans le code ci-dessous, la connexion je l'ai déjà créé dans l'administrateur de sources de données ODBC, mais à l'exécution j'ai toujours un message d'erreur "source de données introuvalbe et nom du pilote non spécifié".
NomSource est une chaîne = "SAP_FORMATION" NumConnexion est un entier
NumConnexion = SQLConnecte("10.10.10.5:30015","SYSTEM","Dimed_2013",NomSource,"ODBC",hODBC) SI NumConnexion = 1 ALORS Info("Connexion") SINON SQLInfoGene() Info(SQL.MesErreur) SQLDéconnecte() FIN
J'avoue que je ne maitrise pas ODBC, j'avais l'habitude de travailler directement sur des bases HFSQL.
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 08 janvier 2020 - 11:30 |
Bonjour. Le paramètre 1 correspond au nom de la connexion, dans votre cas, SAP_FORMATION, le paramètre 4 doit être une chaine videMessage modifié, 08 janvier 2020 - 11:34 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 08 janvier 2020 - 13:19 |
Merci pour la réponse, ça a marché.
J'ai une autre question, comment manipuler ensuite les données via ODBC, sachant que j'ai créé la connexion dans l'analyse et elle fonctionne, mais je n'ai aucune table donc je sais pas comment faire appel aux table de HANA.
Dans l’environnement SAP ça je le maîtrise très bien (SQL).
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 08 janvier 2020 - 13:59 |
Du moment où vous utilisez la fonction SQLConnecte pour établir la connexion, il faut faire appel aux fonctions SQL pour manipuler les données, comme SQLExec, SQLPremier, SQLAvance, SQL.EnDehors, SQLSuivant, SQLFerme, SQLDeconnecte.
Si vous n'avez pas de table, que voulez vous faire ensuite? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 08 janvier 2020 - 14:34 |
Merci à vous pour vos réponse, c'est bon j'ai trouvé le fil qui me manquait, voici la solution à celui qui est intéréssé:
NumConnexion est un entier i est un entier
NumConnexion = SQLConnecte("SAP_FORMATION","SYSTEM","mdp","","ODBC",hODBC) SI NumConnexion<>0 ALORS SI PAS SQLExec ("SELECT * FROM SAP_FORMATION.OCRD","REQ_SELECT") ALORS SQLInfoGene("REQ_SELECT") Erreur("Erreur"+SQL.Erreur+" dans le requête:",SQL.MesErreur) SQLFerme("REQ_SELECT") SINON Info("Exécuté") TANTQUE SQLAvance("REQ_SELECT") = 0 TableAjouteLigne(TABLE_SansNom1,(SQLLitCol("REQ_SELECT",1)),(SQLLitCol("REQ_SELECT",2))) FIN SQLFerme("REQ_SELECT") FIN SINON SQLInfoGene() Erreur("Erreur de connexion"+"SAP_FORMATION" +RC+SQL.Erreur+RC+SQL.MesErreur) SQLTransaction(sqlAnnule) FIN
SQLDéconnecte()
Sujet clôturé |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 09 janvier 2020 - 10:13 |
Bonjour;
Il semble qu'il me reste une autre petite question:
> SQLExec ("SELECT * FROM SAP_FORMATION.OCRD","REQ_SELECT") Quand j'exécute la requête , ça marche car j'ai fait SELECT *, sans spécifier le nom du champ, mais quand je fait une condition genre WHERE OCRD.CardCode='Code01', là je trouve un problème, avec un message OCRD.CODE01 n'est pas trouvé dans la table OCRD, c'est à dire dans la requete tout est remis en majuscule, or, dans mon cas les champs des tables sont sensibles à la casse, donc je sais pas comment je pourrai contourner ça.
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 13 janvier 2020 - 09:35 |
Bonjour;
Je suis toujours coincé dans ce problème de casse, c'il y a quelqu'un pour m'aider. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 13 janvier 2020 - 10:18 |
Bonjour. Je ne comprends pas votre erreur, en mettant "WHERE OCRD.CardCode='Code01", pourquoi est-ce que la colonne "OCRD.CODE01" est utilisée? Par contre, c'est assez dangereux de faire un SELECT * avec les fonctions SQL, par il n'est pas possible de faire appel à des noms de colonne, il est juste possible de faire appel à des indices de colonnes. Si vous faites "WHERE CardCode='Code01", est-ce que la requête fonctionne? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 13 janvier 2020 - 10:53 |
Bonjour, Je te remercie pour la réponse.
>>Si vous faites "WHERE CardCode='Code01", est-ce que la requête fonctionne?
Le problème réside dans le nom du champ CardCode, windev remet tout en majuscule CARDCODE, et HANA (SGBD de SAP), est sensible à la casse, donc il ne reconnait pas le champ, et il renvoie une erreur comme quoi le champ n'est pas trouvé.
c'est assez dangereux de faire un SELECT * avec les fonctions SQL
Le SELECT * je l'ai fait pour tester l'accès aux données, et là ça marche car je n'ai pas précisé le nom du champ.Message modifié, 13 janvier 2020 - 10:53 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 13 janvier 2020 - 17:59 |
Bonjour. Essayez avec WHERE CARDCODE='Code01' |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 14 janvier 2020 - 09:24 |
ROMULUS001 a écrit :
Bonjour. Essayez avec WHERE CARDCODE='Code01'
ça ne marche pas, je l'ai déjà fait,et le problème ne réside pas dans la condition seulement, même dans la sélection des champs. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 14 janvier 2020 - 13:10 |
Bonjour,
il te faut protéger le nom de ton champ.
SELECT OSLP."Active", OSLP."SlpName", OSLP."Memo", OSLP."Mobil", OSLP."Email", OSLP."SlpCode" FROM "[%SansEspace(comAgence.colAgBase)%]"."OSLP" AS OSLP ORDER BY OSLP."SlpName"
Tu peux aussi utiliser les fonctions hxxx au lieu de sqlxxxx
HExécuteRequêteSQL(sdReqODBC,vpcCxionODBC:cxCxion,hRequêteSansCorrection,SansEspace(sCondition)) POUR TOUT sdReqODBC FIN
Bon courage et bon dev. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 14 janvier 2020 - 16:03 |
EJ a écrit :
Bonjour, il te faut protéger le nom de ton champ. SELECT OSLP."Active", OSLP."SlpName", OSLP."Memo", OSLP."Mobil", OSLP."Email", OSLP."SlpCode" FROM "[%SansEspace(comAgence.colAgBase)%]"."OSLP"AS OSLP ORDER BY OSLP."SlpName" Tu peux aussi utiliser les fonctions hxxx au lieu de sqlxxxx HExécuteRequêteSQL(sdReqODBC,vpcCxionODBC:cxCxion,hRequêteSansCorrection,SansEspace(sCondition)) POUR TOUT sdReqODBC // Traitement FIN Bon courage et bon dev.
Merci pour la réponse, en fait il mettre le champ de table entre deux paires de guillemets pour fontionner >OSLP.""Active""
avec
>OSLP."Active"
ça ne fonctionne pas.
Maintenant je veux ajouter un paramètre de sélection à la requête. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 15 janvier 2020 - 09:40 |
ali a écrit : > ça ne marche pas, je l'ai déjà fait,et le problème ne réside pas dans la condition seulement, même dans la sélection des champs.
Si vous avez Excel, ouvrez le, dans l'onglet "données", en ouvrant la pop-up du bouton "obtenir des données", faites "à partir d'autres sources", puis, "à partir d'ODBC". En faisant cela, vous allez pouvoir tester votre ODBC, et ainsi récupérer les données des colonnes des tables que vous voulez utilisez, il me semble qu'il est aussi possible de récupérer une requête Select dans excel, mais je ne peux pas confirmer. Si ça peut vous aider. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 52 messages Popularité : +1 (1 vote) |
|
Posté le 15 janvier 2020 - 11:04 |
ROMULUS001 a écrit :
ali a écrit : ça ne marche pas, je l'ai déjà fait,et le problème ne réside pas dans la condition seulement, même dans la sélection des champs.
Si vous avez Excel, ouvrez le, dans l'onglet "données", en ouvrant la pop-up du bouton "obtenir des données", faites "à partir d'autres sources", puis, "à partir d'ODBC". En faisant cela, vous allez pouvoir tester votre ODBC, et ainsi récupérer les données des colonnes des tables que vous voulez utilisez, il me semble qu'il est aussi possible de récupérer une requête Select dans excel, mais je ne peux pas confirmer. Si ça peut vous aider.
Merci beaucoup pour les réponses données. En fait, moi je veux faire cela sur une application windev pour plusieurs raison, je vais tester ça car c'est intéressant aussi sur Excel, mais je continuerai à rechercher sur windev, je vous publie la solution une fois trouvée. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 17 janvier 2020 - 13:44 |
Ali,
Fait un test simple: * Configuration de la connexion directement dans l'analyse de ton projet en utilisant bien ton lien ODBC * Tu codes ta requête et ta lecture:
sCondition est une chaîne sdReqODBC est une Source dede Données
sCondition = [ SELECT OSLP."Active", OSLP."SlpName", OSLP."Memo", OSLP."Mobil", OSLP."Email", OSLP."SlpCode" FROM "NOM DE TA BASE HANA"."OSLP" AS OSLP ORDER BY OSLP."SlpName" ]
HExécuteRequêteSQL(sdReqODBC,hRequêteSansCorrection,SansEspace(sCondition)) POUR TOUT sdReqODBC Info(sdReqODBC.slpName) FIN Tu devrais avoir la liste des représentants.
Bon courage et bon dev. |
| |
| |
| | | |
|
| | | | |
| | |
|