PDA

Vollständige Version anzeigen : Access Oberfläche ausblenden


j4flou
20.01.2003, 17:43
Hallo zusammen,

ich bin neu hier. Wollte erst mal hallo sagen und direkt mit einem für mich verzwickten Thema anfangen :)

Ich nutze Access 97.

Ich habe meine Formulare fertig und das einzige was noch fehlt, ist dass ich alles bis auf die Formulare ausblenden möchte. Ich möchte quasi das Programm so öffnen als würde ich eine *.exe Datei öffnen. Ich weiß dass ich mit der Funktion application.visible = False die Access Oberfläche ausblenden kann. Nur habe ich keine Ahnung wo ich das eingeben muß oder kann damit schon am Anfang des Programms das Startformular ohne Access Hintergrund startet.

Der Grund des Ganzen ist, dass ich nicht möchte dass der Anwender durch irgendwelche tricks oder Tastenkombinationen wieder in Access kommen kann, um die Formulare und was dahinter steckt zu ändern.

Ich würde mich über jeden Beitrag freuen und wenn ich selber helfen kann werde ich das so gut es geht machen.

Gruß
j4flou

Christian
20.01.2003, 17:52
Hallo ....

Du kannst die sache z.B. in dein Startformular einbauen aber wenn du damit verhindern willst das sich ein erfahrender Anwender an z.B. deine Formulare vergreifen wird dann bist du leider auf dem Holzweg.
Sicheren Schutz vor Änderungen erreichst du nur über die Erstellung einer MDE, wenn du aber weiterhin deine DB verändern willst solltest du dich mit dem Sicherheitssytem von Access beschäftigen!


Christian

orchidee
21.01.2003, 08:38
Gibt es aber eine möglichkeit das Access selbst nicht angezeigt wird?

Danke
Orchidee

horse79
21.01.2003, 08:51
Entfernt Access-Fenster und Access aus der Taskbar. Nur Formular selber ist sichtbar.

Füge folgendes ein im allgemeinen Deklarationsbereich des Formulares:

Option Explicit
Const SW_HIDE = 0
Const SW_NORMAL = 1

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

und bei der Eigenschaft beim Öffnen des Formulares:

Private Sub Form_Open(Cancel As Integer)

Dim hWindow As Long
Dim nResult As Long
Dim nCmdShow As Long

hWindow = Application.hWndAccessApp
nCmdShow = SW_HIDE
Call ShowWindow(Me.hwnd, SW_NORMAL)
nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)


End Sub
Dann stell die Eigenschaft des Formulares auf PopUp.

Mach unbedingt ne Schaltfläche, dass ein anderes Formular öffnet, dass im Deklarationsbereich das selbe stehen hat wie in deinem "verstecktem" Formular , und bei der Eigenschaft beim öffnen:

(Du kommst sonst nicht mehr an deine Tabellen und das Datenbankfenster ran.)

Private Sub Form_Open(Cancel As Integer)

Dim hWindow As Long
Dim nResult As Long
Dim nCmdShow As Long

hWindow = Application.hWndAccessApp
nCmdShow = SW_HIDE
nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)

Call ShowWindow(Me.hwnd, SW_NORMAL)
Call ShowWindow(hWindow, SW_NORMAL)

End Sub
Mach aber unbedingt ne Sicherungskopie der Datenbank.

HTH

orchidee
21.01.2003, 08:58
Danke!
Werd ich mal mit einer Kopie testen!
Orchidee

horse79
21.01.2003, 09:09
Noch ein kleiner Nachtrag:

Importieren aus einer anderen DB ist trotzdem möglich. Wenn Du das noch absichern willst, dann such mal nach mdw, Sicherheit etc. im Archiv. Von Erwin gibts da eine sehr gute Anleitung sowie eine klasse mdb (erwin2.mdb) zum downloaden...

j4flou
21.01.2003, 11:24
thx a lot,

ich denke das ich das auch gleich mal direkt testen werden.

gruß j4flou

Hennesy
21.01.2003, 11:49
Hi j4flou

probier doch mal in der Befehlszeile: EXTRAS und dann START.
Hier kannst Du per Mausklick Access anweisen wie es starten soll.
Am Besten immer nur einen Haken setzen/rausmachen und dann das Ergebnis kontrollieren (Beenden und Neustarten).

Möchtest Du das Access-File dann wieder normal starten musst Du gleichzeitig SHIFT gedrückt halten.

Gruß
Hennesy

horse79
21.01.2003, 12:45
Ich habe meine Formulare fertig und das einzige was noch fehlt, ist dass ich alles bis auf die Formulare ausblenden möchte. Ich möchte quasi das Programm so öffnen als würde ich eine *.exe Datei öffnen. Ich weiß dass ich mit der Funktion application.visible = False die Access Oberfläche ausblenden kann. Nur habe ich keine Ahnung wo ich das eingeben muß oder kann damit schon am Anfang des Programms das Startformular ohne Access Hintergrund startet.

@Hennesy:
Deine vorgehensweise kann aber jeder User wieder rückgängig machen... ;)
Und Access verhält sich nicht so ähnlich wie eine exe wie der ursprüngliche Wunsch war, weil das Access-Fenster eben sichtbar ist.
Siehe OH.

Deshalb das vorgehen wie oben gepostet, nebst Absicherung über eine mdw...

Greetings

j4flou
21.01.2003, 14:11
Für was steht mdw ??

Ich würde nur eine sicherungskopei anlegen ...

das mit start und so weiter kann man wirklich leicht umgehen. Dazu mußt du die *mdb zusätzlich zu einem Doppelklick mit der shift taste öffnen. und schon hast du zugriff auf alle daten.

gruß j4flou

horse79
21.01.2003, 14:36
Schau mal diesen Link an:

http://support.microsoft.com/default.aspx?scid=/support/access/content/secfaq.asp

und such in den Archiven der Foren nach mdw, Sicherheit etc.

Auch

Erwin's Gedanken (http://www.ms-office-wissen.de/download/liste.php?cat=Access&cat_unter=Forumsbeitrag)

sind hier sehr aufschlußreich.

HTH

horse79
21.01.2003, 14:39
http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=68799&highlight=shift+verhindern

Deshalb geht aber immer noch importieren aus einer anderen mdb. Zur Verhinderung siehe obigen Thread.

j4flou
21.01.2003, 16:14
thx a lot

j4flou
22.01.2003, 08:19
So ich bins nochmal :)

Habe deinen Vorschlag gerade ausprobiert und siehe da es funktioniert :)

Mit der oben genannten Lösung bin ich sehr zufrieden. Ich habe deinen vorgeschlagenen Code in jedes meiner Formulare eingefügt und die Eigenschaften auf Popup gestellt.

Jetzt wäre ich dir sehr dankbar, wenn du mir noch genau erklären könntest, was bei deinem Code passiert. Quasi ein wenig zu kommentieren.

Trotzdem erst mal vielen Dank.

Gruß j4flou

interfind
24.01.2003, 13:54
Ich habe den Code zum Ausblenden des Access Fensters
in meine Datenbank eingebaut.

Hat prima funktioniert.

Doch leider hab ich noch ein Problem.

Meine Formulare habe ich alle auf Popup und Gebunden gesetzt.

Leider gibts aber bei einen Bericht diese Möglichkeit nicht.

Was kann ich tun damit auch meine Berichte als Popup
geöffnet werden?

Interfind

horse79
24.01.2003, 15:29
Hi,

das ist der kleine Schönheitsfehler an der Sache. In Access erstellte Berichte benötigen das Access Fenster um dargestellt werden zu können und dieses blenden wir ja per VBA aus. Evtl. gibts einen Lösungsansatz über den Snapshot-Viewer (Schau mal im DL-Bereich des Forums). Hab aber hier noch nichts befriedigendes gefunden, muss aber auch dazusagen, dass ich nicht sehr intensiv gesucht habe ;) . Aber vielleicht haben unsere API-Freaks hierzu noch einen ganz anderen Lösungsansatz in der Hinterhand.

Lassen wir uns von Antworten überraschen.

Sven

Sascha Trowitzsch
24.01.2003, 16:12
Ob das jetzt "überraschend ist" :

Schlechte Karten!
Berichte sind MDI-Childs. Wie normale Forms im Unterschied zu Popups auch.
Popup-Berichte gibt es nicht.
Das Parent-Fenster eines Berichts ist damit die Access-MDIClient-Area. (Die graue Flache).
Wenn die nicht sichtbar ist - was passiert, wenn man das hWndAccess auf Invisible setzt-, so auch alle Fenster nicht, die sie verwaltet.

Man kann einen Bericht nicht in ein Nicht-MDI-Window umwandeln; auch über Subclassing nicht.

Selbst wenn das über Hardcore-API gemacht würde, gäbe es Abstürze, weil die Berichtsfenster-WinProc nicht mehr mit der geänderten Fensterkalsse zurechtkäme.

Sic, Sascha

j4flou
24.01.2003, 16:48
Hallo,

ich mußte heute leider feststellen, dass dies doch nicht die perfekte Lösung ist. Mit einem kleinen Trick kann der Anwender ohne Probleme wieder auf alle Daten zugreifen und diese nach belieben ändern.

Und zwar halte man die Schift Taste gedrückt und mache Doppelklick auf die *.mdb Datei. Schon öffnet sich ganz normal Access und das Popup Fenster öffnet sich nicht !

Somit stehe ich eigentlich wieder am Anfang :( aber für unerfahrene Anwender scheint dies eine gute Lösung zu sein !

Gruß j4flou

Christian
24.01.2003, 18:59
Hallo ....

Womit wir wieder beim alten Thema sind........

Du wirst also nicht umhin kommen dich entweder mit dem Sicherheitssytem von Access zu beschäftigen oder aber die Lösung mit der MDE-Datei zu realesieren.


Christian

horse79
25.01.2003, 13:27
@j4flou:

Dies hatte ich bereits in vorigen Antworten geschrieben. Ich hatte da einen Link angegeben um die Möglichkeit mit der Shift-Tast zu verhindern, deswegen kommt mann aber immer noch an die Daten heran. Wenn Du das auch noch verhindern willst: Schau Dir doch mal die anderen Links in dem Beitrag an... ;)

Sven