Bonsoir,

J'éssaye de lire une valeur dans la table système RDB$USERS... Je ne sais pas si c'est possible mais j'ai éssayé quelque chose qui ne fonctionne pas... voici le code :

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
 
var
  IBDataBase: TIBDatabase;
  IBQuery: TIBQuery;
  IBTransaction: TIBTransaction;
  Qry: TIBSQL;
  resultat:integer;
begin
  IBDataBase := TIBDatabase.Create(nil);
  IBQuery := TIBQuery.Create(nil);
  IBTransaction := TIBTransaction.Create(nil);
  Qry := TIBSQL.Create(nil);
  try
    //Créer base temporaire :
    IBDataBase.DatabaseName := ExtractFilePath(Application.ExeName)+'Bdd\Temp.GDB';
    IBDataBase.SQLDialect := 3;
    IBDataBase.Params.Clear;
    IBDataBase.Params.Add('USER "SYSDBA"');
    IBDataBase.Params.Add('PASSWORD "masterkey"');
    IBDataBase.Params.Add('PAGE_SIZE 4096');
    IBDataBase.CreateDatabase;
    IBDatabase.Connected := true;
    IBTransaction.DefaultDatabase := IBDataBase;
    IBQuery.Database := IBDatabase;
    IBQuery.Transaction := IBTransaction;
    Qry.database:=IBDatabase;
    Qry.Transaction:=IBTransaction;
    try
     IBTransaction.active:=true;
     Qry.SQL.Text:='SELECT count(RDB$USER_NAME) FROM RDB$USERS WHERE RDB$USER_NAME=''SYSDBA'';';
     Qry.ExecQuery;
     if Qry.Fields[0].Value = 0 then begin
         showmessage ('utilisateur non existant');
         end
     else begin
        showmessage ('Utilisateur existant');
        end;
 
    except
      IBTransaction.Rollback;
    end;
    IBDataBase.Connected := false;
  finally
    FreeAndNil(IBQuery);
    FreeAndNil(IBTransaction);
    FreeAndNil(IBDataBase);
    FreeAndNil(Qry);
 
end;
end;
Le message d'erreur que j'ai c'est : TableUnknown RDB$USERS .

Pourtant, si je regarde cette doc, http://dn.codegear.com/article/32981 je constate que RDB$USERS est une table system...

Il y a quelque chose qui m'échape, ou alors peut être qu'on ne peut faire cela...

Merci de votre aide !