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 :
Le message d'erreur que j'ai c'est : TableUnknown RDB$USERS .
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;
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 !
Partager