Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Entwurfsansicht der Abfragen sperren

Begonnen von accessy, Januar 04, 2015, 15:10:10

⏪ vorheriges - nächstes ⏩

accessy

Erst einmal möchte ich allen Mitgliedern dieses Forums ein erfolgreiches und gesundes Jahr 2015 wünschen.

Ich habe eine MDE Datei erstellt.
Das Formular und der Bericht hat nun keine Entwurfsansicht mehr.
Aber die Abfragen können nach wie vor in der Entwurfsansicht eingesehen und geändert werden.
Ich finde keinen Eintrag wie man auch das verhindern kann.

Kann mir da jemand einen Hinweis geben.
Gruß Achim

database

Hallo,

du könntest den Abfragen die SQL zur Laufzeit zuweisen, dann wäre es auch egal, wenn ein Benutzer den Abfragenentwurf ändert

accessy

Hallo Peter,

ich habe das leider nicht verstanden.
Ich hatte dieses Vorhaben mit dem Schützen der DB schon mal hier im Forum angefragt.

Aber egal, ich will mal kurz erwähnen, was ich bisher gemacht habe.
Menü Extras -Start
Häkchen rausgenommen bei
Datenbankfenster anzeigen
Access Spezialtasten verwenden

Formulareigenschaften geändert auf
Löschen zulassen NEIN
Anfügen zulassen - NEIN

Anschließend eine MDE Datei erstellt.

Jetzt kann der USER keine DS löschen, oder anfügen.
Er kann das Formular und den Bericht nicht im Entwurf öffnen.
Das VBA ist alles weg; also unsichtbar.

Aber die Makros, die Tabellen und die Abfragen sind alle editierbar in der MDE.
Wenn ich das auch noch verhindern könnte, das wäre okay....

Jetzt sagst du was von SQL - Laufzeit zuweisen.....
Da bin ich mit meinem Latein am Ende....

Kannst du mir die Vorgehensweise näher beschreiben.
Gruß Achim

MaggieMay

Hallo,

eine weitere Möglichkeit besteht in der Runtime-Ausführung deiner Anwendung. Hierzu kann die auszuliefernde Datei im einfachsten Fall in eine *.accdr umbenannt werden. Dann sind aber auch die Standardmenüs weg und du musst bei Bedarf eigene Ribbons definieren.

Die Änderung des SQL-Codes während der Ausführung halte ich (auch auf die Gefahr hin, hier jemanden vor den Kopf zu stoßen) ehrlich gesagt für eine "Krücke".

Freundliche Grüße
MaggieMay

accessy

Mein Bekannter sagte mir, dass eine Runtime-Lösung nur dann sinnvoll ist, wenn der gesamte VBA Bereich exakt sauber programmiert ist, weil es sonst zu Abstürzen kommt.

Aber soweit soll das ganze ja gar nicht gehen.
Ich bin und bleibe der Admin dieser DB.
Ich stelle die DB den Kollegen nur zur Ansicht und zum Filter zur Verfügung.
Neue DS werden von MIR eingetragen und anschließend die MDE wieder auf den Server abgelegt.

Ich wollte halt nur mein "geistiges Eigentum" ein wenig verstecken....mehr nicht.

DF6GL

#5
Hallo,

Änderungen an Tabellen und Abfragen sind in einer MDE nicht zu unterbinden.

Möglich ist es aber, das Access-Fenster (per VBA)   zu verstecken. Das bedingt aber die Einstellung aller Formulare und Berichte auf "Ja" bei deren Eigenschaft "Popup" und evtl. "gebunden".

http://dbwiki.net/wiki/VBA_Tipp:_Access_Anwendungsfenster_minimieren/maximieren


Das Access-Fenster ganz zu unterbinden, geht in etwa so:


Im Startformular:

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


Private Sub Form_Open(Cancel As Integer)
ShowWindow hWndAccessApp , 0   '0= ausblenden,  1=einblenden
End Sub

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

ebs17

Bezüglich der Abfragen: Der Entwurf lässt sich natürlich nicht sperren. Auch bei ausgeblendetem Datenbankfenster wäre ein Zugriff und eine Manipulation, dann per Code, möglich.

Zwecks "geistiges Eigentum": Als Abfragefan würde ich mich nun gerade für besondere Leistungen interessieren. Ich gebe aber auch Lösungen weiter.

Ansonsten müsste man schauen, wozu die Abfragen eingesetzt werden. Gespeicherte Abfragen verwendet man ja nicht zum Selbstzweck:
- Datenherkünfte für Formulare, Listen und Kombinationsfelder könnte man direkt in den Eigenschaften (RecordSource, RowSource) als SQL-Anweisung einsetzen.
- Datenquellen für Recordsets sowie Aktionsabfragen werden durch eine VBA-Aktion aufgerufen. In diesen VBA-Code könnte man da die ganze SQL-Anweisung statt des Abfragenamens übernehmen.

Gespeicherte Abfragen und damit deren Schutz werden somit vollständig(?) verzichtbar.
Mit freundlichem Glück Auf!

Eberhard

MaggieMay

Hallo,
Zitat von: accessy am Januar 04, 2015, 17:45:14Mein Bekannter sagte mir, dass eine Runtime-Lösung nur dann sinnvoll ist, wenn der gesamte VBA Bereich exakt sauber programmiert ist, weil es sonst zu Abstürzen kommt.
das gilt ebensogut für eine MDE. Mag sein, dass die bei einem unbehandelten Fehler nicht komplett abstürzt, aber auf eine vollständige Fehlerbehandlung sollte so oder so nicht verzichtet werden.
ZitatNeue DS werden von MIR eingetragen und anschließend die MDE wieder auf den Server abgelegt.
Das hört sich so an, als sei die Anwendung nicht in Frontend und Backend aufgeteilt, darüber solltest du wohl noch einmal nachdenken. Denn dann wäre nach Hinzufügen, Ändern oder Löschen von Datensätzen kein Dateiaustausch beim Anwendern notwendig.

PS:
Zitat von: ebs17 am Januar 04, 2015, 18:26:16
Auch bei ausgeblendetem Datenbankfenster wäre ein Zugriff und eine Manipulation, dann per Code, möglich.
Wie soll das gehen bei einer MDE? Wenn du an eine Manipulation via Fremdsteuerung von außen denkst, so setzt das schon ein erhebliches Maß an Programmierfähigkeit voraus, die allgemein bei "Anwendern" wohl eher nicht vorhanden ist. Außerdem vermute ich - ohne es getestet zu haben -, dass dieser Versuch ebenfalls an einer MDE scheitert.
Freundliche Grüße
MaggieMay

accessy

Das war eine gute Idee mit dem Verstecken im VBA.
Ich habe im

Private Sub Form_Open(Cancel As Integer) 'Beim Öffnen des Formulars
  Call Tabellen_und_Abfragen_Ausblenden
  'Call Tabellen_und_Abfragen_Einblenden
End Sub

eingegeben.

Im Modul1 steht dann


Sub Tabellen_und_Abfragen_Ausblenden()
Application.SetHiddenAttribute acTable, "Bearbeitungsart", True 
Application.SetHiddenAttribute acQuery, "Abfrage Bezeichnung Material", True
End Sub


Dadurch werden alle Tabellen und Abfragen ausgeblendet.

Ich habe eine MDE Datei erstellt und mal getestet. Es scheint alles zu funktionieren.
Aber ich habe
Zitat
Das bedingt aber die Einstellung aller Formulare und Berichte auf "Ja" bei deren Eigenschaft "Popup" und evtl. "gebunden".
nicht geändert. Oder passiert da jetzt etwas, was ich noch gar nicht erkannt habe?

MaggieMay

Hallo Achim,

das Ausblenden des Access-Fensters und das Verstecken der Tabellen und Abfragen im Datenbankfenster sind zwei völlig verschiedene Ansätze.
Freundliche Grüße
MaggieMay

accessy

Ja, das ist schon möglich.
Aber das Ausblenden mittels VBA hat exakt das gebracht, was ich mir vorstelle.
Es ist nun alles ausgeblendet. Mehr wollte ich gar nicht erreichen.

ebs17

Zitat von: MaggieMayWenn du an eine Manipulation via Fremdsteuerung von außen denkst, so setzt das schon ein erhebliches Maß an Programmierfähigkeit voraus
Das Herstellen eines DAO-Zugriffes würde ich nicht als erheblich bezeichnen.

Generell: Die meisten User sind zufrieden, wenn etwas funktioniert, und wenn sie per Bedienoberfläche des Programmierers alles geboten bekommen, was sie benötigen, kommen sie dann gar nicht auf die Idee, herumzuspielen oder zu manipulieren. "Kaputt machen" erzeugt bloß zusätzliche und unangenehme Arbeit.

Bei der Restgruppe, die aus Prinzip alles auseinandernehmen und manipulieren, kann man den Grad von Wissen und Energie nicht einschätzen.
Mit freundlichem Glück Auf!

Eberhard

MaggieMay

@ebs17:
Ich gebe dir völlig recht, so sehe ich das eigentlich auch, allerdings sind mir bislang nur Anwender der ersten Kategorie begegnet - vermutlich, weil meine Programme keine Wünsche offen lassen. ;-).
Freundliche Grüße
MaggieMay