Bonjour tout le monde !!!
Je suis débutant dans InfoPath et les WebServices. J'ai réussi à faire quelques trucs "bâteaux" qui fonctionnent pas mal, mais je coince sur une chose. Je vous explique ma situation :
- j'ai un formulaire InfoPath
- j'ai un WebService
- j'ai une BDD Oracle
InfoPath se connecte au WebService, qui lui-même est connecté à la base de donnée (via ODBC).
Si je veux récupérer toutes les entrées d'une table, c'est ok. J'ai la WebMethod suivante :
Si j'ajoute cette connexion de donnée dans InfoPath, merveilleux, j'arrive à afficher tous mes secteurs (secteurs d'activité pour info).
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
18
19
20
21
22 [WebMethod] public DataSet GetAllSecteurs() { DataSet ds = null; string connectionString = "DSN=OracleDSNSystem;Pwd=test;"; using (OdbcConnection conn = new OdbcConnection(connectionString)) { conn.Open(); using (OdbcCommand cmd = new OdbcCommand("SELECT DISTINCT secteur FROM AA_GHSV_POC", conn)) { OdbcDataAdapter adp = new OdbcDataAdapter(cmd); ds = new DataSet(); adp.Fill(ds); } conn.Close(); } return ds; }
Il faut savoir que j'ai environ 5 secteurs d'activités, et dans chaque secteur j'ai plusieurs établissements. Si je veux récupérer les établissements qui font parti d'un secteur en particulier, je me dit donc :
"je vais créer une WebMethod qui prend en paramètre le nom d'un secteur, qui sera écrit dans un champ du formulaire, et qui retourne les établissements correspondant."
Je crée donc la webmethod suivante :
Je veut relier ce résultat à une liste déroulante dans InfoPath. Je crée donc une connexion de donnée (en réception de données) ou je vais chercher ma WebMethod, en me disant que InfoPath va détecter que cette méthode à besoin d'un paramètre...Mais non !!! Du moins, pas vraiment :/
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
18
19
20
21
22 [WebMethod] public DataSet GetEtablissementsFromSecteur(string secteur) { DataSet ds = null; string connectionString = "DSN=OracleDSNSystem;Pwd=test;"; using (OdbcConnection conn = new OdbcConnection(connectionString)) { conn.Open(); using (OdbcCommand cmd = new OdbcCommand("SELECT * FROM AA_GHSV_POC WHERE secteur = '" + secteur + "'", conn)) { OdbcDataAdapter adp = new OdbcDataAdapter(cmd); ds = new DataSet(); adp.Fill(ds); } conn.Close(); } return ds; }
InfoPath me demande une "valeur échantillon", mais après avoir regardé quelques forums sur le net et des explications sur le site de Microsoft, je ne comprend toujours pas bien comment cela fonctionne...
Mon problème se résume donc assez simplement : comment spécifier à InfoPath le paramètre (ou les paramètres dans le cas ou j'en aurais besoin de plusieurs) à utiliser pour une méthode de réception de donnée ?
Merci de vos réponses !
Bonne soirée
Benoit
Partager