Bonjour,
Je cherche à connaitre le nombre de sessions paradox qui sont lancées et les noms et nombre d'utilisateurs.
Si quelqu'un connait la réponse merci d'avance.
Jack
Bonjour,
Je cherche à connaitre le nombre de sessions paradox qui sont lancées et les noms et nombre d'utilisateurs.
Si quelqu'un connait la réponse merci d'avance.
Jack
Voilà la proc que j'utilise.
Procedure EcrireInfoVerrousDansLog;
Var idxSession, IdxDataBase, IdxDataSet : integer;
UsrDbiCur, LokDbiCur : hDBICur;
Lock: LOCKDesc;
UsrDesc: USERDesc;
rslt: dbiResult;
begin
try
with Sessions do
begin
For idxSession := 0 to Count-1 do
begin
// Parcour de toutes les sessions de l'application.
EcrireLogFile('-----------------------------------------------');
EcrireLogFile('Session : ' + sessions[idxSession].SessionName {+ ' session ID :' + inttostr(siSessInfo.iSession)});
EcrireLogFile('');
with Sessions[idxSession] do
begin
For IdxDataBase := 0 to DatabaseCount-1 do
begin
with Databases[IdxDataBase] do
begin
EcrireLogFile(' DataBase : ' + DatabaseName);
For IdxDataSet := 0 to DataSetCount-1 do
begin
if DataSets[IdxDataSet] is ttable then
begin
EcrireLogFile(' Table Name : ' + ttable(DataSets[IdxDataSet]).TableName);
Check(DbiCheckRefresh);
// recupértation des verrous de la table.
Check(DbiOpenLockList(ttable(DataSets[IdxDataSet]).Handle, true, true, LokDbiCur));
Check(DbiSetToBegin(LokDbiCur));
EcrireLogFile(' Verrous de lectures :');
repeat
rslt:= DbiGetNextRecord(LokDbiCur, dbiNOLOCK , @Lock, nil);
if (rslt <> DBIERR_EOF) then
begin
case Lock.iType of
0 : EcrireLogFile(' Lock Type : Record lock' );
4 : EcrireLogFile(' Lock Type : No table lock');
5 : EcrireLogFile(' Lock Type : Table read lock');
6 : EcrireLogFile(' Lock Type : Table write lock');
7 : EcrireLogFile(' Lock Type : Table opened exclusively');
end;
check(DbiGetNetUserName (Lock.szUserName));
EcrireLogFile(' User Name : ' + Lock.szUserName);
EcrireLogFile(' Net level Session number : ' + IntToStr (Lock.iNetSession));
EcrireLogFile(' Session ID : ' + IntToStr (Lock.iSession));
EcrireLogFile(' Record Number : ' + IntToStr (Lock.iRecNum));
EcrireLogFile('');
end;
until (rslt <> DBIERR_NONE);
Check(DbiCloseCursor(LokDbiCur));
EcrireLogFile('');
end;
end;
EcrireLogFile('');
end;
end;
end;
EcrireLogFile('');
end;
end;
// recupération des Utilisateurs.
Check(DbiOpenUserList(UsrDbiCur));
Check(DbiSetToBegin(UsrDbiCur));
EcrireLogFile('-----------------------------------------------');
EcrireLogFile('Utilisateurs utilisant le même fichier net :');
EcrireLogFile('');
repeat
rslt:= DbiGetNextRecord(UsrDbiCur, dbiNOLOCK , @UsrDesc, nil);
if (rslt <> DBIERR_EOF) then
begin
EcrireLogFile(' User Name : '+ UsrDesc.szUserName);
EcrireLogFile(' User Net level session number : '+ inttostr(UsrDesc.iNetSession));
EcrireLogFile('');
end;
until (rslt <> DBIERR_NONE);
Check(DbiCloseCursor(UsrDbiCur));
except
on E : Exception do
begin
EcrireLogFile('Erreur lors de la récupération des infomations de Lock : ' + E.ClassName + ' ' + E.Message);
end;
end;
end;
merci pour l'info, car en plus je connais le nombre d'utilisateurs simultanés
a+
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