Google
 
Diesen Blog abonnieren

Beliebte Posts

Donnerstag, 29. Oktober 2009

Access für Fortgeschrittene: Feldeigenschaften in Formularen steuern

Ist die Eingabe in einem Access Formular abgeschlossen, so will man häufig einen Teil oder alle Felder sperren. In VBA hat man mit Controls beinahe unbeschränkte Manipulationsmöglichkeiten.

Beispiel 1, Sperren aller Felder ausser den Checkboxen:

Dim ctl As Control

On Error Resume Next

For Each ctl In Me

'alle Checkboxen bleiben zugreifbar
If ctl.Properties("ControlType") <> 106 Then

'fldFullAccess ist eine Checkbox im Formular
ctl.Locked = Not Me!fldFullAccess
ctl.editable = Me!fldFullAccess

End If

'Weil es so einfach ist, schalten wir gleich noch den Button für den FileDialog sichtbar oder unsichtbar

If ctl.Properties("ControlType") = 104 Then

ctl.Properties("Visible") = Me!fldFullAccess

End If

Next

Beispiel 2, Sperren aller Felder unterhalb der y-Koordinate 590

Dim ctl As Control

On Error Resume Next

For Each ctl In Me

'alle Felder unterhalb y=590 werden gesperrt
If ctl.Properties("Top") > 590 Then

'fldFullAccess ist eine Checkbox im Formular
ctl.Locked = Not Me!fldFullAccess

End If


Next

Hier eine Auflistung der Control Konstanten inkl. zugehöriger Wert:

Constant Value
acBoundObjectFrame 108
acCheckBox 106
acComboBox 111
acCommandButton 104
acCustomControl 119
acImage 103
acLabel 100
acLine 102
acListBox 110
acObjectFrame 114
acOptionButton 105
acOptionGroup 107
acPage 124
acPageBreak 118
acRectangle 101
acSubform 112
acTabCtl 123
acTextBox 109
acToggleButton 122

und hier die möglichen Funktionen an einem Beispiel einer Textbox:

EventProcPrefix = ID_Anf
Name = ID_Anf
ControlType = 109
ControlSource = ID_Anf
Format = General Number
DecimalPlaces = 255
Visible = Wahr
TextFormat = 0
DatasheetCaption =
ShowDatePicker = 1
Width = 975
Height = 315
Top = 600
Left = 8730
BackStyle = 1
BackColor = 16777215
BorderStyle = 1
OldBorderStyle = 1
BorderLineStyle = 0
BorderWidth = 3
BorderColor = 52479
SpecialEffect = 4
ScrollBars = 0
TextFontCharSet = 0
FontName = Arial
FontSize = 9
TextAlign = 0
FontWeight = 400
FontUnderline = Falsch
FontItalic = Falsch
FontBold = 0
ForeColor = 0
LineSpacing = 0
IsHyperlink = Falsch
DisplayAsHyperlink = 0
GridlineStyleTop = 0
GridlineStyleBottom = 0
GridlineStyleLeft = 0
GridlineStyleRight = 0
GridlineColor = 0
GridlineWidthTop = 1
GridlineWidthBottom = 1
GridlineWidthLeft = 1
GridlineWidthRight = 1
TopMargin = 0
BottomMargin = 0
LeftMargin = 0
RightMargin = 0
TopPadding = 30
BottomPadding = 30
LeftPadding = 30
RightPadding = 30
HorizontalAnchor = 0
VerticalAnchor = 0
CanGrow = Falsch
CanShrink = Falsch
DisplayWhen = 0
ReadingOrder = 0
ScrollBarAlign = 0
NumeralShapes = 0
KeyboardLanguage = 0
InputMask =
DefaultValue =
ValidationRule =
ValidationText =
FilterLookup = 1
Enabled = Wahr
Locked = Wahr
OnClick = [Event Procedure]
OnClickEmMacro =
BeforeUpdate =
BeforeUpdateEmMacro =
AfterUpdate =
AfterUpdateEmMacro =
OnDirty =
OnDirtyEmMacro =
OnChange =
OnChangeEmMacro =
OnGotFocus =
OnGotFocusEmMacro =
OnLostFocus =
OnLostFocusEmMacro =
OnDblClick =
OnDblClickEmMacro =
OnMouseDown =
OnMouseDownEmMacro =
OnMouseUp =
OnMouseUpEmMacro =
OnMouseMove =
OnMouseMoveEmMacro =
OnKeyDown =
OnKeyDownEmMacro =
OnKeyUp =
OnKeyUpEmMacro =
OnKeyPress =
OnKeyPressEmMacro =
OnEnter =
OnEnterEmMacro =
OnExit =
OnExitEmMacro =
OnUndo =
OnUndoEmMacro =
EnterKeyBehavior = Falsch
ControlTipText =
TabIndex = 6
TabStop = Wahr
StatusBarText =
ShortcutMenuBar =
HelpContextId = 0
AutoTab = Falsch
Vertical = Falsch
AllowAutoCorrect = Wahr
IMEHold = Falsch
IMEMode = 0
IMESentenceMode = 3
SmartTags =
Tag =
ConditionalFormat =
FuriganaControl =
ColumnWidth = 1245
ColumnOrder = 0
ColumnHidden = Falsch
Section = 0
AggregateType = -1
Layout = 0
LayoutID = 0

Sonntag, 11. Oktober 2009

Security Essentials


Ich gehe zwar davon aus, dass sich das Zielpublikum meines Blogs der Gefahren durch Malware bewusst ist und sich entsprechend schützt. Trotzdem weise ich an diese Stelle auf das von Microsoft (endlich) erschienene Programm Security Essentials hin. Käufliche Virentester werden dadurch zwar nicht ersetzt, für einfache Anforderungen scheint es aber gemäss ersten Tests ausreichend zu sein.

Sonntag, 4. Oktober 2009

Toodledo oder Remember the milk


Die kürzlich vorgestellte iPhone App 'Appigo' kann durch den Einsatz von Toodledo noch veredelt werden. Mit dem Lösen eines Accounts ist es möglich, im Outlook erstellte Aufgaben direkt auf Appigo im iPhone zu übertragen. Dazu muss aber noch ein kleines Progrämmchen auf den Ziel PC geladen werden, das entweder automatisch oder manuell synchronisieren kann. Ausserdem ermöglicht Toodledo den Datenaustausch mit vielen anderen Applikationen wie z.B. Twitter, Google, Palm, Vista Gadget und, und, und ... Toodledo bietet auch eine eigene iPhone Applikation, die aber mindestens bis vor kurzem nicht überzeugte. Der Gratisaccount kann schon sehr viel. Möchte man noch Anhänge hochladen, statistische Auswertungen machen usw. kann man einen Pro Account lösen. Ausser mit Toodledo kann Appigo auch mit 'Remember the milk' kommunizieren. Eine direkte Konkurrenz, die ich aber nicht näher kenne. Eine Beschreibung aller Funktionen würde den Rahmen dieses Beitrages bei weitem sprengen, es gibt aber diverse Anleitungen, Blogs usw. im Netz die sich dem Thema annehmen.
So, damit ist die Reihe iPhone App der Woche als regelmässige Kolumne vorderhand beendet und ich werde mich in nächster Zeit wieder Access Themen widmen. Über das iPhone gibt es mittlerweile dermassen viele Seiten, dass weitere Beiträge hier überflüssig sein dürften.

Google Treffer als Mindmap


Google werkelt seit einigen Monaten an einer Idee, die ich genial finde. Die Trefferliste kann auch als Mindmap dargestellt werden. Einige Beispiele haben mich innerhalb von Sekunden überzeugt. Aber probiert es selbst, die Anleitung findet ihr hier.
Aber Achtung: Leider gibt es nur Zugriff auf die Mindmaps, wenn die Sprache in den Einstellungen auf Englisch umgestellt ist, so dass die Seite google.com erreicht werden kann. Die Option ist nur dort ersichtlich. An sich kein Problem, aber für Schweizer entfällt die Option 'nur deutschsprachige Seiten', was ein bisschen schade ist.

Datenträgerbereinigung aus der Dose

Kürzlich wurde ich mit dem Problem konfrontiert, dass nach einer misslungenen Programminstallation (soll es ja unter Windows geben), der PC bei jedem Neustart von Windows automatisch eine Datenträgerkontrolle startete, das Problem nicht beheben konnte und wieder neu bootete. Was passiert in einem solchen Fall? Erkennt Windows beim Start ein Konsistenzproblem der Harddisk, so startet es automatisch das über 30 jährige Dos Programm 'chkdsk' (kein Scherz!). Leider wird aber chkdsk nur im Analysemodus und nicht im Bereinigunsmodus gestartet (ein schlechter Scherz von Microsoft). Das bedeutet, dass Windows das Problem nicht lösen kann und jedesmal durch Überspringen der Routine gestartet werden muss.
Um dieses Problem zu beheben ist einmal mehr die Hilfe der uralten Dose angesagt und das geht folgendermassen:
Start -> Ausführen -> cmd
Nun den Befehl chkdsk /f eingeben. Dos erkennt, dass es im Moment nichts machen kann weil Windows läuft, fragt aber, ob ein Task für den nächsten Start angelegt werden soll. Diese Frage unbedingt mit Ja beantworten und Windows neu starten. Nun behebt chckdsk beim nächsten Start hoffentlich das Problem. Bei mir funktionierte es auf jeden Fall und der PC läuft wieder einwandfrei.
Anmerkung: Diese Anleitung bezieht sich Windows XP Professional SP3, ich weiss nicht, ob sich jede Windows Version so verhält.