PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → histoire de curseurs
histoire de curseurs
Iniciado por olivier.allender, set., 08 2005 7:05 PM - 2 respostas
Publicado em setembro, 08 2005 - 7:05 PM
Bonjour à tous ..

j'ai un souci avec du code faisant du requetage SQL sur une base Oracle :
j'ai un premier curseur en select qui me permet de lire des elts.
et un deuxième imbriqué pour manipuler ces elts et les inserer dans une table.

classique...

le problème est qu'au bout d'un moment (vers la 150ème itération) j'ai un message
ORA 01000- nombre maximum de curseurs atteint.

pourtant je fais des sqlferme à chaque fin de boucle !! comprends pas ...


quelqu'un a une idée?

ci-après le code résumé ::

POUR iis = 1 A nbis
lklo = lselect[iis,1]
cnct = lselect[iis,3]
TextReq = "select qtterm, .....)
Res = SQLExec(TextReq,"SELDETTE")

// Recup ok, on fetche pour la recuperer
ResFetch = SQLFetch("SELDETTE")
idette = 0
TANTQUE ResFetch = 0

ordre = "update cdp set qt" + numdette + " = '" + mois + " " + lan + "' , det" + numdette + " = " + ldette + " where cnct = " + cnct

SI PAS SQLTransaction(sqlDébut) ALORS
Erreur("Impossible de démarrer une transaction!")
Ferme
FIN

Res2 = SQLExec(ordre,"MAJDETTE")
SI PAS Res2 ALORS
erreur_sql(ordre,Vrai)
Erreur("Impossible de mettre à jour les dettes pour " + cnct)
Ferme
FIN
SQLFerme("MAJDETTE")
SI PAS SQLTransaction(sqlFin) ALORS
Erreur("Impossible de valider la transaction!")
FIN

ResFetch = SQLFetch("SELDETTE")
FIN
SQLFerme("SELDETTE")
FIN
Publicado em setembro, 09 2005 - 3:26 PM
Bonjour,

Je vous conseille vivement d'utiliser la mise à jour de l'Accés Natif Oracle
disponible à l'adresse suivante :

http://www.pcsoft.fr/st/telec/modules-communs-9/oracle.htm

--
Ed en Ligne


"olivier allender" <olivier.allender@ophlm-puteaux.com> a écrit dans le
message de news: 43203ea3$1@news.pcsoft.fr...


Bonjour à tous ..

j'ai un souci avec du code faisant du requetage SQL sur une base Oracle :
j'ai un premier curseur en select qui me permet de lire des elts.
et un deuxième imbriqué pour manipuler ces elts et les inserer dans une
table.

classique...

le problème est qu'au bout d'un moment (vers la 150ème itération) j'ai un
message
ORA 01000- nombre maximum de curseurs atteint.

pourtant je fais des sqlferme à chaque fin de boucle !! comprends pas ...


quelqu'un a une idée?

ci-après le code résumé ::

POUR iis = 1 A nbis
lklo = lselect[iis,1]
cnct = lselect[iis,3]
TextReq = "select qtterm, .....)
Res = SQLExec(TextReq,"SELDETTE")

// Recup ok, on fetche pour la recuperer
ResFetch = SQLFetch("SELDETTE")
idette = 0
TANTQUE ResFetch = 0

ordre = "update cdp set qt" + numdette + " = '" + mois + " " + lan + "' ,
det" + numdette + " = " + ldette + " where cnct = " + cnct

SI PAS SQLTransaction(sqlDébut) ALORS
Erreur("Impossible de démarrer une transaction!")
Ferme
FIN

Res2 = SQLExec(ordre,"MAJDETTE")
SI PAS Res2 ALORS
erreur_sql(ordre,Vrai)
Erreur("Impossible de mettre à jour les dettes pour " + cnct)
Ferme
FIN
SQLFerme("MAJDETTE")
SI PAS SQLTransaction(sqlFin) ALORS
Erreur("Impossible de valider la transaction!")
FIN

ResFetch = SQLFetch("SELDETTE")
FIN
SQLFerme("SELDETTE")
FIN



Publicado em setembro, 09 2005 - 5:17 PM
c'est une piste, je teste ça et je vous tiens au courant

merci