PDA

Vollständige Version anzeigen : Funktion gibt keinen Wert zurück


EKAB
15.03.2013, 12:36
Hallo zusammen,

ich habe ja aus DONKARL die Funktion zur Unterdrückung der Shift-Shaste seit Jahren in Acces2003 eingebaut

Habe mir ob die Shift-Taste ein/oder aus ist diese Funktion in einem Formular eingebaut

Wenn ich die DB unter Access2010 öffene dann steht da anstatt 0 oder -1

#Name?


=[CurrentDb].[Properties]("AllowBypassKey")

Was ist der Grund ?

Danke
Franz

Lanz Rudolf
15.03.2013, 12:51
Hallo
AllowBypassKey ist die Funktion ?

evtuel. bei "AllowBypassKey" die " weglassen

EKAB
15.03.2013, 13:02
Hallo

nein dann funktioniert es weder unter A03 noch unter A10

Danke

maikek
15.03.2013, 13:06
Bist du sicher, dass die [] da hingehören?
Imho müsste das so aussehen:
= CurrentDb.Properties("AllowBypassKey")
oder
= CurrentDb.Properties!AllowBypassKey

maike

EKAB
15.03.2013, 13:16
Werde automatisch im Steuerelement des Formulares gesetzt .

Wie gesagt unter A03 kein Problem seit Jahren , gibt brav 0 oder -1 zurück.

Nur unter A10 funktioniert es nicht.

Gruss
Franz

maikek
15.03.2013, 13:54
Dann gibt es diese Property vielleicht in 2010 nicht mehr?
Da ich kein 2010 habe, kann ich es nicht testen ...
maike

Anne Berg
15.03.2013, 16:04
Hallo,

es ist vielleicht so wie es immer schon war, Properties, die noch nicht vorhanden (=initialisiert) sind, müssen zunächst einmal angelegt werden.

EKAB
15.03.2013, 16:43
Hallo,

danke für den beitrag aber ich verstehe leider nicht was genau ich egtl. machen muss.

Unter Access2003 habe ich mir den Code für das Sperren der Shifttaste kopiert und es lief jetzt 10 Jahre wunderbar. Öffne ich die DB mit Acces2010 - dann geht die angeführte FUnktion leider nicht mehr.

Wie initalisere ich das ?

gruss
Franz

maikek
15.03.2013, 16:57
Steht bei Donkarl: http://www.donkarl.com?FAQ1.8
maike

Thomas Möller
15.03.2013, 17:12
Hallo Franz,

vielleicht ist es schon ausreichend, wenn Du diese Einstellung in der Datenbank veränderst:
Datei / Optionen / Aktuelle Datenbank / Access-Spezialtasten verwenden
Danach den Dialog mittels OK verlassen, um die Werteänderung zu speichern.

HTH

Anne Berg
15.03.2013, 23:10
Hi,Unter Access2003 habe ich mir den Code für das Sperren der Shifttaste kopiert und es lief jetzt 10 Jahre wunderbar. dann zeig uns doch bitte mal den Code, den du dazu einsetzt.

Lanz Rudolf
16.03.2013, 09:13
Hallo
wenn Du das was Thomas beschrieben hat
mit VBA machen möchest dann benütigst Du eine Funktion wie Diese:
Function FIntEigenschaftAendern (strEigName As String, varEigTyp As Variant, varEigWert As Variant) As Integer
' Schalten wenn Eigenschaft (Property) vorhanden wenn nicht erstellen
Dim dbs As Database, prp As Property, ChangeProperty As Boolean
Const conPropNotFoundError as Long = 3270
Set dbs = DBEngine(0)(0) ' CurrentDb
On Error GoTo Change_err
dbs.Properties(strEigName) = varEigWert
ChangeProperty = True
Change_bye:
Exit Function
Change_err:
If Err = conPropNotFoundError Then ' Eigenschaft nicht gefunden
Set prp = dbs.CreateProperty(strEigName, varEigTyp, varEigWert)
dbs.Properties.Append prp ' Eigenschaft definieren
Resume Next ' Eigenschaft hinzufügen
Else ' Unbekannter Fehler
ChangeProperty = False
Resume Change_bye
End If
End Function
der Aufruf zum zum einschalten der Access-Spezialtasten
FIntEigenschaftAendern "AllowSpecialKeys", dbBoolean, True

und so könnteman BypassKey setzen :
Public Function ShiftEigenschaftBypassKeyEinstellen(Value As Boolean) As Boolean
' Shift Taste Ausschalten (Value = False) oder Einschalten (Value = True)
FIntEigenschaftAendern "AllowBypassKey", dbBoolean, Value
End Function

EKAB
19.03.2013, 14:18
Hallo

dieser Code:

On Error GoTo Error_EnableShift

Dim DB As DAO.Database
Dim prp As DAO.Property

Set DB = CurrentDb
'Property mit übergebenem Parameter belegen
DB.Properties!AllowBypassKey = blnFlag

Exit_EnableShift:
Set prp = Nothing
Exit Sub

Error_EnableShift:

'Property erzeugen, falls noch nicht vorhanden
If Err = 3270 Then
Set prp = DB.CreateProperty("AllowBypassKey", dbBoolean, blnFlag)
DB.Properties.Append prp
Resume Next
Else
MsgBox "Ausnahme Nr. " & str(Err.Number) & " " & Err.Description
Resume Exit_EnableShift


----
Dieser Ausdruck gibt mir dann auch in A2003 0 oder -1 zurück

[CurrentDb].[Properties]("AllowBypassKey")


Gruss
Franz

Anne Berg
19.03.2013, 14:46
Dieser Ausdruck gibt mir dann auch in A2003 0 oder -1 zurück
Ja, aber doch nur dann, wenn du den darüber gezeigten Code wenigstens einmal ausgeführt hast!

EKAB
20.03.2013, 07:29
OK - aber:

1. das Sperren / Entsprerren der Shift Taste funktioniert ja weiter tadellos
2. somit habe ich ja die Funktion sicher ausgeführt,

EnableShift (True) bzw. EnableShift (True)

3. dennoch bei

=[CurrentDb].[Properties]("AllowBypassKey") kein Wert

Ich öffne ja exakt die gleiche DB nur unter Office2010

Gruss
Franz

Smaug
20.03.2013, 10:18
lass uns doch mal schauen ob die property überhaupt korrekt gesetzt wurde. Lass mal folgenden Code durchlaufen:
Dim db As DAO.Database
Dim prp as DAO.Property
On error resume next
Set db=currentDb
for each prp in db.Properties
debug.print prp.Name & "--" & prp.Value
next prp
Set db=nothing
Wenn AllowBypasskey korrekt gesetzt ist, sollte irgendwo diese Property und deren Wert im Direktfenster auftauchen. Prinzipiell ist AllowByPassKey auch unter Access 2010 vorhanden - muss aber (wie bereits erwähnt wurde) in einer neuen Datenbank zumindest 1x korrekt gesetzt werden

Anne Berg
20.03.2013, 10:25
Hallo,

ich hab's grad mal ausprobiert, als Steuerelementinhalt ist das unter A2010 wohl nicht mehr einsetzbar.
Weise den Wert also per VBA zu, bspw. beim Öffnen des Formulars.

EKAB
20.03.2013, 10:48
Super das war's - vielen Dank an euch alle

Gruss
Franz