En Delphi 5 (version entreprise), comment savoir si un enregistrement d'une table
dBase 5 est verrouillé par un autre utilisateur. Merci.
En Delphi 5 (version entreprise), comment savoir si un enregistrement d'une table
dBase 5 est verrouillé par un autre utilisateur. Merci.
salut,
vous auriez, appuyez sur la touche, et voilà la réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part F1
bon courage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Syntaxe Delphi : procedureLockTable(LockType:TLockType);
Merci, mais la méthode LockTable sert à vérouiller une table (si j'ai bien compris), moi je cherche juste à savoir si l'enregistrement que je voudrais modifier n'est pas au même moment modifié par un autre utilisateur, et cela avant de faire mon Edit (et si possible sans passer par une exception). Merci.
La propriété Exclusive a l'air intéressante (merci "voir ausssi"). Mais c'est vrai que ça tourne toujours autour du verrouillage d'une table. Si vous utilisez ADO, les propriétés LockType et FilterGroup ont l'air intéressantes aussi.
La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème
Pas de sollicitations techniques par MP -
Bonsoir,
Je ne sais pas si cette fonction fait l'affaire pour une table dBase :
C'est dans le BDE.HLP et faut pas oublier d'inclure l'unité BDE dans le uses
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 Delphi Examples: DbiIsRecordLocked Checks the lock status of the current record. This example uses the following input: IsRecordLocked(Table1, True); NOTE: If ByAnyone is true, then the function also checks if any other session has the record locked. If ByAnyone is false, then only the current session is checked. The function returns False if not locked, and True if locked. The function is: function IsRecordLocked(Table: TTable; ByAnyone: Boolean): Boolean; var Locked: BOOL; hCur: hDBICur; rslt: DBIResult; begin Table.UpdateCursorPos; // Is the record locked by the current session... Check(DbiIsRecordLocked(Table.Handle, Locked)); Result := Locked; // If the current session does not have a lock and the ByAnyone varable is // set to check all sessions, continue check... if (not Result) and (ByAnyone) then begin // Get a new cursor to the same record... Check(DbiCloneCursor(Table.Handle, False, False, hCur)); try // Try and get the record with a write lock... rslt := DbiGetRecord(hCur, dbiWRITELOCK, nil, nil); if (rslt <> DBIERR_NONE) then begin // if an error occured and it is a lock error, return true... if (HiByte(rslt) = ERRCAT_LOCKCONFLICT) then Result := True else // If some other error happened, throw an exception... Check(rslt); end else // Release the lock in this session if the function was successful... Check(DbiRelRecordLock(hCur, False)); finally // Close the cloned cursor... Check(DbiCloseCursor(hCur)); end; end; end;
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager