Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem DBNavigator und Roles (Firebird 1.5) (https://www.delphipraxis.net/82439-problem-dbnavigator-und-roles-firebird-1-5-a.html)

Tihalc 13. Dez 2006 08:13

Datenbank: Firebird • Version: 1.5 • Zugriff über: FibPlus Komponenten

Problem DBNavigator und Roles (Firebird 1.5)
 
Moin,

ich habe ein kleine Problem mit dem DBNavigator...
Folgendes:

Ich habe eine Datenbank in der ich Roles und Benutzer definiert habe. Wenn ich nun für einem Benutzer auf eine Tabelle alle Rechte gewähre (Select, Insert, Delte, Update...) dann "darf" der DBNavigator ja all mir seine Button anzeigen. Wenn ich aber nur Select zulasse, hätte ich es gerne, das die Buttons für Insert Delte etc grau hinterlegt sind. So wie ich das sehe kann der DBNavigator das nicht automatisch :(

Gibt es da eine Möglichkeit dem DBNavigator das beizubringen?? Und nicht ala if User darf nicht insert dann nbInsert.enabled = false.

Oder kennt jemand eine andere schöne Komponente, die das kann?

Weiß jemand was die IBObject dabei machen?


So damit habe ich jetzt auch mein ersten Thread geschrieben :)


Gruß aus dem hohen Norden

Tihalc

hoika 13. Dez 2006 08:20

Re: Problem DBNavigator und Roles (Firebird 1.5)
 
Hallo,

woher soll der TDBNavigator das wissen ?
Du kannst eine Abfrage wegschicken,
und bekommst erst nach Ausführung (oder auch nicht)
die Info, ob du das darfst.
Falls du z.B. keine Rechte an einer Tabelle hast (select),
kommt wohl die Meldung "Objekt nicht gefunden".

Der TDBNavigator kann maximal über eine DataSource (und deren DataSet)
auf eine Tabelle zugreifen.
Also hat er keine Chance, festzustellen, was der Nutzer darf.

Ich würde die Rechte selber bestimmen und VisibleButtons verwenden.
Zum Bestimmen der Rechte über Rollen gab es hier schon mal nen Thread.
Die entsprechende Systemtabelle ist rdb$roles,
am besten du schnappst dir ibexpert und schaust dir diese Tabelle
und deren Referenztabellen an.

Ha,

muss ich gleich mal fragen,
wie arbeitet es sich mit den FIBPlus ?


Heiko

Tihalc 13. Dez 2006 08:55

Re: Problem DBNavigator und Roles (Firebird 1.5)
 
Zitat:

Ich würde die Rechte selber bestimmen und VisibleButtons verwenden.
Zum Bestimmen der Rechte über Rollen gab es hier schon mal nen Thread.
Die entsprechende Systemtabelle ist rdb$roles,
am besten du schnappst dir ibexpert und schaust dir diese Tabelle
und deren Referenztabellen an.
Genau diese wollte ich umgehen. Ich weiß, das IBObject einen eigenen Navigator mitbringt. Weiß aber nicht, ob der das handeln kann.

Die Fibplus kann mehrere SQL statement aufnehmen (Jeweils für Insert, Delete, Select...) Wenn ich aber nur Select rechte habe knallt es, wenn ich alle SQL Statement eingetragen habe. Anders herum, wenn ich nicht alle eingetragen habe und alle Rechte habe, sind nicht alle Buttons enabled beim DBNavi.

Zitat:

muss ich gleich mal fragen,
wie arbeitet es sich mit den FIBPlus ?
Viel kann ich dazu noch nicht sagen. Bin noch in der Testphase, ob die FibPlus für das kommende Projekt das Richtige ist. Vorher habe ich mit der BDE und danach mit den Zeos Komponenten gearbeitet. Bei den Zeos bin ich schnell an die gernzen gestoßen.
Die Fiblus händeln sich eigentlich sehr ähnlich wie die Zeos. Nur bringen sie leider keine Komponenten zur Datenbanksteuerung mit ( Was die IBObject tun)


Gruß Tihalc

hoika 13. Dez 2006 09:16

Re: Problem DBNavigator und Roles (Firebird 1.5)
 
Hallo,

was heisst Datenbank-Steuerung ?
die Services (Backup ...) ?

Ich arbeite immer noch mit der BDE . :wall:
Bin aber dabei, intern alles auf bridge pattern umzustellen (jaja ;)),
um dann frei entscheiden zu können, was ich benutzen werde.


Heiko

Hansa 13. Dez 2006 09:19

Re: Problem DBNavigator und Roles (Firebird 1.5)
 
Zitat:

Zitat von Tihalc
...Wenn ich aber nur Select rechte habe knallt es, wenn ich alle SQL Statement eingetragen habe. Anders herum, wenn ich nicht alle eingetragen habe und alle Rechte habe, sind nicht alle Buttons enabled beim DBNavi...

1. Besetze mal sämtliche SQLs im SQL-Generator standardmäßig. 2. Aufpassen, dass Active im OI auf false steht. 3. dann im Quelltext :
Delphi-Quellcode:
FIBDataSet.SelectSQL.Text := 'SELECT ?????????';
FIBDataSet.Open;
Der Rest mit DataSource usw. is ja wohl klar.

Ah, das noch :
Zitat:

Zitat von Tihalc
Die Fiblus händeln sich eigentlich sehr ähnlich wie die Zeos. Nur bringen sie leider keine Komponenten zur Datenbanksteuerung mit ( Was die IBObject tun)

Zeos : kein Kommentar. :angel: Ein Grund, FIBPlus zu benutzen ist aber die Tatsache, dass sie voll kompatibel zu den Delphi-eigenen Sachen sind und eben keinen eigenen DB-Kram mitschleppen. Egal, was zum Zugriff benutzt wird und welche DB-Komponenten man benutzt. Außer für kleine Testprogramme taugen die nichts. Siehe die Frage hier.

Tihalc 13. Dez 2006 09:30

Re: Problem DBNavigator und Roles (Firebird 1.5)
 
Zitat:

was heisst Datenbank-Steuerung ?
die Services (Backup ...) ?
Damit meinte ich die DB_Navigator Komponente und DBGrid etc..

Zitat:

1. Besetze mal sämtliche SQLs im SQL-Generator standardmäßig. 2. Aufpassen, dass Active im OI auf false steht. 3. dann im Quelltext :
Hatte 1. auch so gemacht. Jetzt wo du es sagt, fällt es mir wieder ein, das es mit Active auf false geklappt hat.

Hmm, vielleicht ist jetzt der Moment gekommen, wo ich mich mit der Komponentenentwicklung beschäftigen werde und der DB Navigator das beibringe, was ich will...


Wäre aber toll, wenn man dazu noch was über die IBObject erfähren könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz