Page 1 sur 1

sqlrpgle, exec sql update et carte f en mise à jour comité

Posté : mar. 05 mars 2013, 12:30:46
par manae
Bonjour,

je rencontre des problèmes de verrouillage d'enregistrement
dans un programme utilisant le controle de validation
sur des fichiers en carte F et des mises à jour par sql ne sont
plus possibles sur ces enregistrements dans ce programme.

je ne sais pas pourquoi la mise à jour par sql devient impossible.

Si vous avez une idée ou rencontré le meme probleme,

merci par avance pour vos réponses.

code erreur SVP

Posté : mar. 05 mars 2013, 12:45:55
par cmasse
Pouvez vous nous donner :

1/ le code erreur

2/ un extrait du code concerné


PS: je ne comprend pas, vous parlez de mise à jour SQL et de carte F, vous faites les deux en même temps ?

(sans texte)

Posté : mar. 05 mars 2013, 15:24:53
par manae
apparemment apres analyse,
le probleme reside sur le fait que les enregs créés sous controle validation reste tenu en mise a jour( c'est normal je pense !).
lorsqu'un autre utlisateur parcourt le fichier si la selection n'est pas assez fine, il tombe sur ces fameux enregistrements.
d'ou un plantage si c'est en rpgle(read) sinon rien en sql si on ne teste pas le sqlcod.

est ce que cela vous semble une explication envisageable ?

sinon je vois pas trop !!???

COMMIT

Posté : mar. 05 mars 2013, 17:58:39
par cmasse
Avez vous validé (COMMIT) les insertions et les mises à jour ?

si vous êtes avec COMMIT(*CHG), c'est impératif !

Code : Tout sélectionner

C/EXEC SQL
C+   COMMIT
C/END-EXEC
si vous êtes en format libre

Code : Tout sélectionner

  EXEC SQL
             COMMIT ;

(sans texte)

Posté : mer. 06 mars 2013, 10:17:14
par manae
Bonjour,

Tout va bien, on a enfin trouvé LE POURQUOI.

On avait le code suivant par endroit

setll ( x1: x2 : x3 ) format;
reade (x1: x2: x3) format;


le probleme de ce code en plus d'etre faux peut faire planter (allocation impossible de l'enregistrement) en lisant des enregs avec reade ( c'etait notre cas...).

On l'a remplacé par le code suivant

setll ( x1: x2 : x3 ) format;
if %equal;
reade (x1: x2: x3) format;
endif;

Cordialement.