Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Umgehen der Shift taste mit AllowBypassKey





Frage

Hallo, Ich möcht gerne das sich ein Formular öffnet ohne das AutoExec vorgreift. In der Hilfe steht es sei möglich mit AllowBypassKey aber nicht wie mans genau macht .Hat jemand eine Idee. Danke

Antwort 1 von disco

moin

ich hatte zwar keine ahnung was du wolltest, bzw. worum es genau ging, aber alsi ch mal nach AllowBypassKey gegoogelt habe, kam da einiges....
bspw das;
http://support.microsoft.com/default.aspx?scid=kb%3Bde%3BD39521

g,
disco

Antwort 2 von Marie

ich verstehe nicht genau was Du da schreibst???

Die Autoexec läuft immer ab wenn eine existiert. Mit der Shift-Taste kannst Du die AutoExec ausschalten und deshalb die Datenbank öffnen ohne die Autoexec ablaufen zu lassen.

Du kannst in der Autoexec reinschreiben, dass Du das Öffnen mit der Shifttaste unterbinden willst und beim Start ein Formular öffnen willst. Vermutlich hast Du das auch so gemeint? Also beim Start Formular öffnen hast Du in der Autoexec stehen?? Und nun willst Du unterbinden, dass jemand die Autoexec ausschaltet und deshalb Dein Formular nicht geöffnet wird??

Dann schreib in die Autoecex: ausführen code Starteigenschaften ():

Public Function Starteigenschaften()
EigenschaftÄndern "AllowBypassKey", dbBoolean, True
End Function


Function EigenschaftÄndern(strEigName As String, varEigTyp As Variant, varEigWert As Variant) As Integer

Dim Dbs As DAO.DATABASE
Dim prp As Property

Const conPropNotFoundError = 3270
Set Dbs = CurrentDb
On Error GoTo Change_Err
Dbs.Properties(strEigName) = varEigWert
Change_Bye:
Dbs.close
Exit Function
Change_Err:
If err = conPropNotFoundError Then ´Eigenschaft nicht gefunden.
Set prp = Dbs.CreateProperty(strEigName, _
varEigTyp, varEigWert)
Dbs.Properties.Append prp
Resume Next
Else
Resume Change_Bye
End If
End Function

Antwort 3 von Marie

upps, natürlich schreibste dann
EigenschaftÄndern "AllowBypassKey", dbBoolean, False


aber vorsichtig, Du kannst dann selbst die Datenbank nicht mehr öffnen!!!!!! Immer eine Sicherheistkopie aufbewahren mit EigenschaftÄndern "AllowBypassKey", dbBoolean, True

Gruß Marie

Antwort 4 von erik

Das stimmt so nicht, Marie. Eine Datenbank mit AllowBypassKey = False kann jederzeit wieder zurückgesetzt werden. Die betroffene Datenbank muss nur über VBA geöffnet und die Eigenschaft dann entsprechend manipuliert werden.

Deine Funktion verändert nur die lokale Datenbank. Wenn du ein optionales Datenbankobjekt an die Funktion übergibst, dann kannst du jede beliebige Datenbank verändern. Lässt du den ExternalDb-Parameter weg, dann wird wie bei deiner Version die lokale Datenbank aktualisiert:

Public Function ChangeProperty(PropertyName As String, DataType As DataTypeEnum, Value As Variant, Optional ExternalDb As Database) As Boolean
	Dim db As Database
	Dim prp As Property
	Const conPropNotFoundError = 3270
	
	If ExternalDb Is Nothing Then
		Set db = CurrentDb
	Else
		Set db = ExternalDb
	End If
	
	On Error GoTo Change_Err
	db.Properties(PropertyName) = Value
	ChangeProperty = True
	
Change_Bye:
	Exit Function
Change_Err:
	If Err = conPropNotFoundError Then
		Set prp = db.CreateProperty(PropertyName, DataType, Value)
		db.Properties.Append prp
		Resume Next
	Else
		´ Unknown error.
		ChangeProperty = False
		Resume Change_Bye
	End If
End Function




Der kürzestmögliche Aufruf wäre demnach:

ChangeProperty "AllowBypassKey", dbBoolean, True, OpenDatabase("C:\Ordner\Datenbank.mdb")


Antwort 5 von zuboz

Also ihr habt mein problem ja verstanden aber ich bin etwas durcheinender wo soll ich nun was hinschreiben ?

Antwort 6 von Marie

Hallo Erik,

ich denke mal ein Hacker öffnet Dir alles, aber darum geht es ja hier nicht. Ich habe angenommen, dass er im Startmenü oder per Autoexec ein Formular öffnen will und nicht möchte, dass die Datenbank angezeigt wird, also tut es das doch allemal. Das ist der Code wie er in OH steht und IMO für einen Anfänger genau das Richtige. Warum machst Du ihn jetzt durcheinander?

Meine Datenbanken öffnest Du nicht mehr mit VBA, aber das hat mit dem AllowBypassKey absolut nix mehr zu tun. Falls er die Datenbank zusätzlich vor Zugriffen schützen möchte muss er halt danach fragen. Dann kriegt er auch darauf eine Antwort.

Gruß Marie

Antwort 7 von Marie

@zuboz

Du öffnest beim Start Dein Formular, das hast Du schon eingetragen?? In der Autoexec oder in extras Start?? So zum Beispiel in Formular/Seite anzeigen Dein Startformular anklicken:
http://www.tfh-wildau.de/rhirte/informatik/access_xp/abrunden.htm

Du hast doch eine Autoexec????

Wenn nicht legst Du jetzt eine solche an:

http://www.tfh-wildau.de/rhirte/informatik/access_xp/makro.htm

Dort schreibst Du als erstes in Aktion hinein:
ausführen Code und unten fügst Du dann in Funktionsname ein:

Starteigenschaften ()

Dann legst Du ein Modul an in das Du einfach den Text hineinkopirst, den ich Dir oben eingetragen habe.

Nun versuchs mal oder formulier Deine Frage anders, wenn Du was anderes wolltest oder frag weiter wenn Du nicht klarkommst.

Und mach Dir eine Sicherheitskopie vorher, sonst musst Du - wie Erik das beschrieben hat - die Property mit code von aussen wieder umändern. Das hat Erik gemeint, dass es doch ein Leichtes ist die Shifttaste wieder einzuschalten. Falls Du also verhindern willst, dass ein Experte an Deine datenbank kommt, dann musst Du schon andere Mittel ergreifen, aber dann frag bitte danach extra.

Antwort 8 von zuboz

Hallo,
Erstmal grosses DANKE SCHÖN für die Hilfe.

Ich habe ein AutoExec Das meine Datenbank jeden Tag aktuallisiert und am ende die DB wieder schließt.
Dieses will Ich behalten weil dahinter wieder ein anderer Automatismus steckt..also soweit klar?

nun möchte ich aber einen Link in eine Web-Seite setzen der auf ein Formular in der DB verlinkt ist.Das hab Ich auch gemacht. Das Problem ist nur Da AutoExec nicht umgangen worden ist läuft es durch und schliesst die DB am Ende wieder so das das ich das Formular auch nicht öffnen kann.Daher hab ich gedacht wenn isch dafür sorge das beim öffnen der DB Autoexec nicht gestartet wierd kann sich mein Formular problemlos öffnen.

Ist die Lösung die du mir vorgeschlagen hast nun immernoch richtig ? und wie öffne ich ein Modul...
Bitte alles in einzelnen Schritten erklären damit ich keine Fehler mache ...

Danke
zuboz

Antwort 9 von zuboz

Ok also Ich ahbe in AutoExec als erst Aktion "AusführenCode" eingegeben uns als Funktionsnamen "Starteigenschaften ()"
und ich habe ein neues Modul erstellt in dem ich den obrigen Code ein kopeirt habe


Public Function Starteigenschaften()
EigenschaftÄndern "AllowBypassKey", dbBoolean, True
End Function


Function EigenschaftÄndern(strEigName As String, varEigTyp As Variant, varEigWert As Variant) As Integer

Dim Dbs As DAO.DATABASE
Dim prp As Property

Const conPropNotFoundError = 3270
Set Dbs = CurrentDb
On Error GoTo Change_Err
Dbs.Properties(strEigName) = varEigWert
Change_Bye:
Dbs.Close
Exit Function
Change_Err:
If err = conPropNotFoundError Then ´Eigenschaft nicht gefunden.
Set prp = Dbs.CreateProperty(strEigName, _
varEigTyp, varEigWert)
Dbs.Properties.Append prp
Resume Next
Else
Resume Change_Bye
End If
End Function

False ...weil ich ja Shift umgehen will

aber ich kriege einen Fehler zurück der sagt er kann mit Starteigenschaften() nichts anfangen

Wo ist wohl mein Fehler ???

Antwort 10 von erik

Hallo Marie,

mit Hacken hat das nichts zu tun, sondern damit, dass du bereits mehrmals die gleiche Behauptung aufstellst, dass AllowBypassKey eine endgültige Angelegenheit ist. Siehe Supportnet-Archiv.

Das wollte ich nur geklärt wissen. :-)

Antwort 11 von Marie

Hi Erik,

für einen Anfänger ist das so, der weiss nicht wie er die Datenbank wieder öffnen kann. Deshalb schreibe ich das Anfängern immer so.

Wenn er mal bissel mehr kann, dann sieht er ja in der ersten Antwort, in dem KB-Artikel, wie er die DB wieder öffnen kann.

Und ausserdem bin ich nicht so arg begeistert hier zu erläutern, wie man einen vom Benutzer gedachten Schutz aufheben kann.

Ich kann auch eine geschützte Exceldatei öffnen, aber sowas gehört nicht hierher. :-(

Gruß Marie

Antwort 12 von Marie

Also zuboz,

offensichtlich willst Du was ganz anderes?? Also irgendwie willst Du die Autoexec lassen aber umgehen. Das widerspricht sich doch, ich versteh nicht wirklich was Du willst.

Ich versteh auch nicht was Du für eine Fehlermeldung bekommst oder was Du falsch gemacht hast, ist aber egal, denn offensichtlich willst Du ja was ganz anderes.

Zitat:
Ist die Lösung die du mir vorgeschlagen hast nun immernoch richtig ?


Nein!!!


Zitat:
und wie öffne ich ein Modul..


Wenn Du in der Autoexec richtig eingetragen hast:
Aktion "AusführenCode" und als Funktionsname "Starteigenschaften ()", dann wird an dieser Stelle die Function Starteigenschaften aufgerufen. Ein Modul musst Du nicht öffnen, Du rufst die Funktionen, die in dem Modul stehen, auf. Haste vielleicht anführungsstriche reingemacht?? dann mach sie weg. :-) Ansonsten schreib mal genau hin welche Fehlermeldung kommt.

Also nun sag mal genau was Du willst, wenn Du die Autoexec lässt und die am Ende Deine DB schliesst und das so bleiben soll, dann kannste danach kein Formular mehr öffnen. Wenn Du nach abarbeiten der Funktionen, die bleiben sollen, ein Formular öffnen willst und offen lassen willst, dann musst Du halt in der autoexec die letzte Aktion weglassen, die Deine DB schließt

Zitat:
Daher hab ich gedacht wenn isch dafür sorge das beim öffnen der DB Autoexec nicht gestartet wierd kann sich mein Formular problemlos öffnen.


jo, benenn die Autoexec mal einfach um und schon startet sie nicht mehr.

Zitat:
Ich habe ein AutoExec Das meine Datenbank jeden Tag aktuallisiert und am ende die DB wieder schließt.
Dieses will Ich behalten weil dahinter wieder ein anderer Automatismus steckt..also soweit klar?
Nöööö!!! Du kannst nicht die Autoexec so behalten wollen wie sie ist und gleichzeitig umgehen wollen, das is absolut nicht klar, Du musst Dich schon entscheiden.

Du hast das mit dem Umgehen der Shift taste mit AllowBypassKey offensichtlich genau falsch herum verstanden.

Mit gedrückter Shifttaste beim Öffnen der Datenbank kann man die Autoexec umgehen. Sie wird dann nicht abgearbeitet, probier es mal aus.

Ich habe Dir erklärt, wie Du das mit Code abschalten kannst, dass also Dein Benutzer oder Du beim Öffnen nicht mehr mit der Shifttaste die Autoexec umgehen kannst.

Wenn ich Dich nun richtig verstanden habe wolltest Du eigentlich eher das Gegenteil??? Oder was willst Du wirklich??? :-))

Gruß Marie

Antwort 13 von zuboz

hi,

Also das Problem mit dem AutoExec ist gelöst du hattest recht es ist nicht möglich es zu umgehen also hab ichs umbenannt

aber nun hab ich ein neues, wenn ich über die Web-Seite auf die DB zugreiffe speert sich das Teil es erscheint im Ordner in dem Die DB liegt ein "Datenbankname.Idb" soll ein Access Record- Locking sein wie kann ich das verhindern? Hängt das mit einer Einstellung zusammen??????

Gruß...

Antwort 14 von Marie

Hallo Zuboz,

ob eine Access-Datenbank geöffnet ist siehst Du daran, dass eine gleichnamige .ldb existiert. Das kannst und sollst Du nicht verhindern und hat nix mit irgendwelchen Sperrungen zu tun.

Aber was Du damit meinst:
Zitat:
wenn ich über die Web-Seite auf die DB zugreiffe speert sich das Teil
hab ich nicht verstanden????

Gruß Marie

Antwort 15 von zuboz

ok das letzte problem hat sich auch gelöst ;-)

Ich hab aber damit dir nicht langweilig wird gleich ne neue Frage

Ist es möclich von einem formular in einer db auf andere formulare auf anderen db zu kommen.

Also ich hab ein formular in einer db X und auf diesem formular hab ich eine Schaltfläche wenn sie ancklike will ich auf ein Formular in einer db Y
?????????????

Gruß...

Antwort 16 von Marie

Habs nicht ausprobiert, aber müsste eigentlich gehen. Probiers doch einfach und sag mir wo Du hängenbleibst.

Ich mach das über VB. Die eine Datenbank zu, die andere auf.

Gruß Marie

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: