Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonsoir,
Nous utilisons un progiciel codé sous PB, et nous développons nos Web Services en .NET / C# (Visual Studio 2012).
Nous travaillons sous DB2.
(Si mon ancien collègue passe par là, il va rire)
Un de nos clients a installé une base sur un nouveau serveur.
Sur son serveur 1, base 1, le WS fonctionne.
Sur son serveur 2, base 2, le même WS ne fonctionne pas.
Voici le problème.
Notre progiciel, sous PB, insère une ligne dans une table (dw_trucmuche.insertrow / dw_trucmuche.setItem / etc.)
Notre WS, lit une ligne
string _RechercheEvenement = "select colA, colB, colC from table " + " where colA = ? with UR; "; CmdRechercheEvenement.CommandType = CommandType.Text; CmdRechercheEvenement.CommandText = _RechercheEvenement; CmdRechercheEvenement.Prepare(); CmdRechercheEvenement.Parameters.AddWithValue("colA", Id); using (OleDbDataReader DataReaderEvenement = CmdRechercheEvenement.ExecuteReader()) { if (DataReaderEvenement.HasRows) { while (DataReaderEvenement.Read()) { ... } } }
Le ExecuteReader plante :
System.Data.OleDb.OleDbException (0x80004005): CLI0100E Nombre de paramètres incorrect. SQLSTATE=07001
Sachant que le même code fonctionne sur d'autres environnements (même version de la DLL), quelqu'un aurait-il une idée ?
Merci d'avance
Dernière modification par Saria (06-07-2015 15:52:02)
Hors ligne
Il va pas forcément rire ^^.
Les serveurs sont sur des versions d'OS différents? Est ce que celui sur lequel ça ne marche pas est sur une version particulière?
Il faut peut être aussi voir les versions de IIS et les DLL servant à la connexion OleDb.
Sinon s'il n'y a pas de changement de paramètre dans la boucle pourquoi ne pas créer la string _RechercheEvenement directement avec " where colA = 'Toto' " ?
Ca évite le passage par la fonction de chargement de paramètre avant l'exécution du reader.
Hors ligne
On a envoyé quelqu'un de la tech (A.) chez le client, pour vérifier la config de leur serveur.
On a vérifié l'OS, la version de IIS, la version de DB2. A. est là-bas en train de remettre à jour leur DB2 (apparemment, ils ont pas fait les 9 ou 10 derniers updates). Il vérifie aussi les drivers ODBC.
Le problème, c'est que c'est un Processus.TrucMuche, avec le moteur (tu sais, ce qu'on avait fait pour D.), et que ça marche chez nous, chez d'autres clients (hébergés ou non), mais pas chez ce client.
Et on n'a pas envie de changer le code de tous les Processus.TrucMuche juste pour ce client-là, alors que ça fonctionne partout.
Hors ligne
Attention car tu es sur une connexion OleDb qui n'est pas une connexion ODBC.
Il faut donc voir plutot le provider Ole Db au lieu de la version d'ODBC qui est ce que tu sert pour tes connexions en PB.
Hors ligne
Le problème est résolu : mise à jour de la version de DB2 (fix pack installés) et des différents drivers. Cela fonctionne.
Hors ligne
Pages: 1