|
| Inicio → WINDEV 2025 → Bloqué un enregistrement pour les autres utilisateurs d'une application |
| Bloqué un enregistrement pour les autres utilisateurs d'une application |
| Iniciado por ROMULUS001, 30,oct. 2019 15:14 - 9 respuestas |
| |
| | | |
|
| |
Miembro registrado 352 mensajes |
|
| Publicado el 30,octubre 2019 - 15:14 |
Bonjour,
Dans une application qui fait appel à des bases de données HFSQL C/S, j'aimerais qu'un enregistrement dans un fichier soit bloqué pour les autres utilisateurs du programme. Mon code fonctionne de la manière suivante :
MaReqSQL est une chaîne="SELECT * FROM MaTable WHERE IDMaTable="+nID Req est une Source dede Données
SI HExécuteRequêteSQL(REQ,hRequêteDéfaut,MaReqSQL) ALORS HLitPremier(Req) SI HTrouve() ALORS HBloqueNumEnr("MaTable") FIN FIN HAnnuleDéclaration(Req)
Le soucis en faisant cela, j'ai une erreur quand je fais appel à HBloqueNumEnr, qui me dit qu'aucun enregistrement en cours n'est défini pour le fichier MaTable.
Une idée de comment s'y prendre? Merci |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2019 - 15:37 |
bonjour il faut indiquer à la fonction HBloqueNumEnr() quel enregistrement elle va bloqué et le type de blocage, essayé HBloqueNumEnr("MaTable", hNumEnrEnCours, hBlocageLectureEcriture) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 352 mensajes |
|
| Publicado el 30,octubre 2019 - 16:25 |
| Bonjour, j'avais justement spécifié ces paramètres à HBloqueNumEnr mais le message d'erreur est le même que celui que j'ai obtenu, j'ai l'impression qu'il n'est pas possible de bloqué un enregistrement quand on fait appel à HExécuteRequêteSQL, il faudrait certainement passer par HExécuteRequête à la place |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 30,octubre 2019 - 16:46 |
Bonjour, Il faudrait indiquer quel numéro d'enregistrement bloquer ! Et pas en utilisant hNumEnrEnCours, vu que tu parcours ta requête, et pas ton fichier MaTable. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2019 - 16:53 |
ROMULUS001 avait énoncé :
Bonjour, Dans une application qui fait appel à des bases de données HFSQL C/S, j'aimerais qu'un enregistrement dans un fichier soit bloqué pour les autres utilisateurs du programme. Mon code fonctionne de la manière suivante : MaReqSQL est une chaîne="SELECT * FROM MaTable WHERE IDMaTable="+nID Req est une Source de Données
SI HExécuteRequêteSQL(REQ,hRequêteDéfaut,MaReqSQL) Alors HLitPremier(Req) SI HTrouve() Alors //récupération des données HBloqueNumEnr("MaTable") FIN FIN HAnnuleDéclaration(Req) Le soucis en faisant cela, j'ai une erreur quand je fais appel à HBloqueNumEnr, qui me dit qu'aucun enregistrement en cours n'est défini pour le fichier MaTable. Une idée de comment s'y prendre? Merci
normal une requête va récupérer les infos de l'enreg sans se soucier d'être en phase avec le fichier (le poiteur de lecture du fichier n'est pas aligné sur l'enreg)
faire pour HLSQL: HLitRecherchePremier(MaTable, IDMaTable, nID, hBlocageLectureEcriture)
ou pour MySQL
MaReqSQL est une chaîne="SELECT * FROM MaTable WHERE IDMaTable="+nID+" FOR UPDATE"
mais pour vous donner une réponse il faut savoir quel base vous utilisez
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 352 mensajes |
|
| Publicado el 30,octubre 2019 - 16:56 |
je crois que le soucis avec HExécuteRequêteSQL, c'est qu'il est possible de faire des jointures entre tables, du coup, parler de numéro d'enregistrement n'a aucun sens pour une table donnée. Comment peut-on connaitre le numéro d'un enregistrement, autrement qu'à l'aide de hNumEnrEnCours ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 30,octubre 2019 - 17:21 |
Je suppose que si tu passes par une requête, c'est pour ne pas modifier ton pointeur sur le fichier MaTable. Je ne vois pas comment connaitre le numéro d'enregistrement dans un fichier, sans bouger ce pointeur. HRecherche te positionne sur le bon numéro d'enregistrement et donc modifie ce pointeur. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 352 mensajes |
|
| Publicado el 30,octubre 2019 - 17:31 |
@JeAn-PhI : quand on fait appel à HLitPremier, on se positionne bien sur un enregistrement : "Positionne sur le premier enregistrement d'un fichier de données en fonction d'une rubrique de parcours" https://doc.pcsoft.fr/fr-FR/?3044051&name=HlitPremier
@Eric : pas grave, je crois que le mieux serait de procéder autrement, par exemple, en ajoutant une nouvelle colonne et y mettre quel utilisateur a pris tel enregistrement, j'ai bien peur que je n'ai que ça comme solution, en tout cas, dans le contexte où je me trouve |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2019 - 17:39 |
ROMULUS001 a formulé ce mercredi :
je crois que le soucis avec HExécuteRequêteSQL, c'est qu'il est possible de faire des jointures entre tables, du coup, parler de numéro d'enregistrement n'a aucun sens pour une table donnée. Comment peut-on connaitre le numéro d'un enregistrement, autrement qu'à l'aide de hNumEnrEnCours ?
le n° d'enreg n'a pas d'existence en dehors de HF donc si vous pouvez nous dire quel type de base vous utilisez pour commencer cela ne rendra les réponses que meilleures
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
| Publicado el 30,octubre 2019 - 17:41 |
Il se trouve que ROMULUS001 a formulé :
@JeAn-PhI : quand on fait appel à HLitPremier, on se positionne bien sur un enregistrement : "Positionne sur le premier enregistrement d'un fichier de données en fonction d'une rubrique de parcours" https://doc.pcsoft.fr/fr-FR/?3044051&name=HlitPremier@Eric : pas grave, je crois que le mieux serait de procéder autrement, par exemple, en ajoutant une nouvelle colonne et y mettre quel utilisateur a pris tel enregistrement, j'ai bien peur que je n'ai que ça comme solution, en tout cas, dans le contexte où je me trouve
oui pour HLitPremier() sauf que je n'en ai pas parlé j'ai indiqué HLitRecherchePremier() avec option de blocage
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | | | |
| | |
|