Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Actuellement nous travaillons avec SQL SERVER 2000, dans certains cas nous utilisons le contenu de la variable SQLCA.SQLNROWS pour déterminer si une rèquete SQL à fonctionner. Normalement cette zone contient le nombre de lignes traitées, lues ....
Si la valeur = 0, aucun données lues ou retournées.
Sur un autre PC, nous avons installé SQL SERVER 2005, et nous avons installé la base.
Maintenant avec les MEMES programmes, dans certains cas, la valeur retournée dans SQLCA.SQLNrows = 0 alors que la requète executée a bien trouve les donnees (controle par debug)
Est-ce que quelqu'un a une idée.
(Powerbuilder 10.2.1)
D'avance Merci
Cordialement
Dernière modification par le_gone_de_lyon (25-02-2008 13:05:03)
Hors ligne
Bonjour, dans la doc PB :
SQLNRows Long The number of rows affected (the database vendor supplies this number, so the meaning might not be the same in every DBMS).
même si dans ton cas il s'agit du même SGBDR, il y a peut-être un paramètre qui différe à ce niveau
le mieux est d'utiliser SQLCode :
SQLCode Long The success or failure code of the most recent operation.Return codes:
0 - Success
100 - Not found
-1 - Error (use SQLDBCode or SQLErrText to obtain the details)
Hors ligne
Le probleme est que nous avons beaucoup utilisé cette possibilité dans notre application.
Il faudrait re-suivre toute l'application qui tourne tres bien avec cette possibilité en SQL SERVER 2000.
S'il y a un paramètrage particulier pour SQL SERVER 2005, j'aimerais bien le connaitre.
A moins que l'on me dise que l'utilisation du sqlnrows n'est plus possible avec SQL SERVER 2005 !!!
Merci quand même pour ta réponse, c'est la solution extrème !!!!!!!
Hors ligne
je comprends ta problématique...
mais en faisant une recherche, j'ai trouvé un commentaire de l'illustre Breck Carter de TeamSybase :
Breck Carter a écrit:
I am going to assume "don't use SQLNrows in PB" is the right answer.
Hors ligne
Même si cela ne concerne en principe pas le select, essaye : SQLCA.DBParm="RecheckRows=1"
ou alors un select @@rowcount juste après ton select...
Hors ligne
Bonjour,
Je viens d'essayer en mettant <recheckrows=1> dans DBparm, j'ai toujours le probleme
Merci quand même pour ta réponse et tes recherches.
Je m'apercois qu'a priori le SQLNrows ne serait gérer que pour les INSERT, DELETE et UPDATE
Cela marche avec le SELECT INTO pour le sql server 2000 mais plus pour le sql server 2005 (changement paramètrage par defaut ou plus supporte ??????????)
Encore merci
Hors ligne
bon courage à toi...
et pour ce soir, on y croit
Hors ligne
Bonjour,
Voici une précision sur mon problème (c'est fou), dans certains cela marche :
1> exemple qui ne marche pas et renvoie la valeur 0 :
SELECT zonesql INTO :ls_zonesql FROM UTILISATEUR WHERE UTILI = :nom_uti USING SQLCA;
la zone <nom_uti> contient le code utilisateur et est bien présente dans la table => ls_zonesql est bien chargée à la bonne valeur
mais SQLCA.SQLNrows = 0 !!!!!!!!!!!!!!!!!!!
2> exemple qui marche et renvoie la valeur 1 :
SELECT zonesql INTO :ls_zonesql FROM UTILISATEUR WHERE UTILI = 'JYB'USING SQLCA;
j'ai mis en dur le nom de l'utilisateur dans la requete => ls_zonesql est bien chargée à la bonne valeur
ET SQLCA.SQLNrows = 1 !!!!!!!!!!!!!!!!!!!
A priori, si dans le WHERE, on fait appel à des variables, ==> SQLNrows ne marcherait plus ?!?!?!?!?!?
Quelqu'un aurait-il une explication ??
Merci
cordialement
Hors ligne
Salut
Alors faut surement jouer sur les DisableBind & StaticBind
Hors ligne
et le select @@rowcount ?
Hors ligne
bonjour,
Apres plusieurs essais en jouant avec le parametre <disablebind> et <staticbind>, je suis arrivé à faire marcher l'application.
En mettant disablebind=1 dans le parametre "DBParms" (chaine de connexion) au moment de la connexion ODBC,
Le select into avec une variable dans le where fonctionne et la valeur retournée pour nrows = 1
Merci pour cette reponse !!!
Je vais tester le reste de l'application avec cette modif !!
Encore merci
Cordialement
Hors ligne
Merci pour ton retour
Hors ligne
Bonjour,
Pour information, j'ai installer SQL SErveur 2005 et PB10 sous Vista, cela ne marche plus => j'ai de nouveau sqlnrows = 0 peu importe les paramètres !!!!!!!!!!
A plus
Hors ligne