PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Probleme avec requête UPDATE
Probleme avec requête UPDATE
Iniciado por alain.decline, ago., 01 2005 12:18 PM - Sem resposta
Publicado em agosto, 01 2005 - 12:18 PM
Bonjour,

Je travail sur un projet avec accès natif à une base Oracle(v8.1.7). J’ai importé dans mon analyse les tables de ma base de données sur lesquelles je veux travailler.

Je dois modifier le contenu d’une de ces tables en y insérant des valeurs saisies dans une fenêtre. J’ai donc écrit la fonction suivante :
(MaConnexion est la connexion avec accès natif décrite dans l’analyse)

PROCEDURE MettreBAP(pNom, pSys_Date, pTaech_Numcpt, pTotie_Cod)

sReq_Update est une chaîne = "UPDATE TAECH SET tasta_cod = 'BP', taech_utimaj = '" + pNom + "', taech_datmaj = '" + pSys_Date + "' WHERE taech_numcpt = '" + pTaech_Numcpt + "'"

// Mise en transaction de la connexion
SI SQLTransaction ( sqlDébut , MaConnexion) ALORS

SI SQLExec(sReq_Update, "req_Update") = 0 ALORS
SQLInfoGene("req_Update")
Erreur("Erreur d'execution de la requête : " + SQL.MesErreur)
SQLTransaction ( sqlFin, MaConnexion )

SINON
Info("req executée")
SQLTransaction ( sqlFin, MaConnexion )
FIN
SINON
Erreur("Erreur début transaction : " + SQL.MesErreur)

FIN


Voici le code de l’erreur qui est généré lors de l’exécution :

Vous avez appelé la fonction SQLExec.
Il n'y a pas de connexion courante.
**********************************************
......

J’ai testé ma requête depuis un administrateur de base de données (TOAD 8.0.0.47, paramètres de connexion identiques à ceux de « MaConnexion ») et elle fonctionne correctement. J’ai ensuite essayé de créer cette requête avec l’assistant mais lorsque je la teste l’état du mode test reste figé à : Initialisation de la requête et affichage du résultat…


J’ai fait un autre essai avec cet méthode mais la aussi mon application ne répond plus dès l’exécution du code :

PROCEDURE MettreBAP(pNom, pSys_Date, pTaech_Numcpt, pTotie_Cod)

sReq_Update est une chaîne = "UPDATE TAECH SET tasta_cod = 'BP', taech_utimaj = '" + pNom + "', taech_datmaj = '" + pSys_Date + "' WHERE taech_numcpt = '" + pTaech_Numcpt + "'"

Req_Update est une Source de Données

SI HExécuteRequêteSQL(Req_Update, MaConnexion, hRequêteDéfaut, sReq_Update) ALORS
Info("req executée")
SINON
Info("La requête n'a pas été éxécutée : " + RC + HErreurInfo())
FIN


Enfin j’ai essayé ceci :


PROCEDURE MettreBAP(pNom, pSys_Date, pTaech_Numcpt, pTotie_Cod)

sReq_Update est une chaîne = "UPDATE TAECH SET tasta_cod = 'BP', taech_utimaj = '" + pNom + "', taech_datmaj = '" + pSys_Date + "' WHERE taech_numcpt = '" + pTaech_Numcpt + "'"

// Connexion en utilisant Hyper File :
SI SQLConnecte("ulism","ULIST","ULIST","","Oracle") = 0 ALORS
SQLInfoGene()
Erreur("La connexion à la source de données ulism a échouée."+ RC + "Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
SINON
SI PAS SQLTransaction( sqlDébut ) ALORS
Info("pb debut transaction")
SINON
SI SQLExec(sReq_Update, "req_Update") = 0 ALORS
SQLInfoGene("req_Update")
Erreur("Erreur d'execution de la requête : " + SQL.MesErreur)
SQLTransaction ( sqlFin )
SINON
Info("req executée")
FIN
SQLTransaction( sqlFin )
FIN
SQLDéconnecte()
FIN


Mais lorsque le code SQLExec est exécuté un message d’erreur apparaît :
Erreur d'execution de la requete : Erreur(blocage) de l'acces natif Oracle.
Numero d'erreur = 1004
L'execution de la requete suivante a echoué :
UPDATE TAECH SET tasta_cod = 'BP', taech_utimaj = 'STAGE', taech_datmaj = '22/07/2005' WHERE taech_numcpt = '20146'
ORA-02049: Temporisation : transaction distribuée attend un verrou


J’aimerais connaître la méthode à utiliser afin de faire ces modifications.


PS : je fais des requêtes select qui utilisent MaConnexion et je n’ai rencontré aucun problème (avec HexecuteRequeteSQL()).



Merci de votre réponse.