AccessAutomation/de: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: AccessAutomation/de
| Old | New | Line | |
|---|---|---|---|
| 1 | + | \ | |
| 2 | + | Zurück zur [[Office Automation/de|Office Automation]].\ | |
| 3 | + | \ | |
| 4 | + | \ | |
| 5 | + | =Access= Bei der OleAutomatisierung von Acces gibt es ein grosse Probleme. Es werden nicht alle Methoden von der OleAutomatisierung unterstützt.\ | |
| 6 | + | Das heisst sie stehen dem Programmierer nicht zur Verfügung. Daher ist das Arbeiten mit Access über den Weg der OleAutomatisierung nur eingeschränkt möglich.\ | |
| 7 | + | \ | |
| 8 | + | ==Sicherheitsabfrage== Die Sicherheitsabfrage, die (ab Access 2003) bei jedem start von Access erscheint stört die meisten bei der Automatisierung von Access.\ | |
| 9 | + | Um sie Sicherheitsabfrage (Beispiel: Access 2003) zu umgehen gibt es zwei Möglichkeiten:\ | |
| 10 | + | \ | |
| 11 | + | Sie erstellen folgenden Eintrag in der Registry:\ | |
| 12 | + | \[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Access\Security\]\ | |
| 13 | + | "label"=dword:00000001\ | |
| 14 | + | Alternativ kann die Sicherheitsstufe in Access auf niedrig gesetzt werden.\ | |
| 15 | + | Extras -\> Makro -\> Sicherheit -\> Sicherheitsstufe -\> Niedrig\ | |
| 16 | + | \ | |
| 17 | + | =Access Dateiverarbeitung= | |
| 18 | + | ||
| 19 | + | ## Speicher reservieren | |
| 20 | + | ||
| 21 | + | ``` pascal | |
| 22 | + | var | |
| 23 | + | varAcApp: OleVariant; // reserviert den Speicher | |
| 24 | + | ``` | |
| 25 | + | ||
| 26 | + | \ | |
| 27 | + | ==Speicher belegen== | |
| 28 | + | ||
| 29 | + | ``` pascal | |
| 30 | + | begin | |
| 31 | + | ... | |
| 32 | + | // Speicher belegen ohne Fehlerbehandlung | |
| 33 | + | varAcApp := CreateOleObject('Access.Application'); // erstellt das Accessobjekt | |
| 34 | + | ||
| 35 | + | // Speicher belegen mit Fehlerbehandlung: | |
| 36 | + | try | |
| 37 | + | varAcApp := CreateOleObject('Access.Application'); // erstellt das Accessobjekt | |
| 38 | + | except | |
| 39 | + | ShowMessage('MS Access kann nicht gestartet werden.'); // Fehlerbehandlung | |
| 40 | + | Exit; | |
| 41 | + | end; | |
| 42 | + | ... | |
| 43 | + | end; | |
| 44 | + | ``` | |
| 45 | + | ||
| 46 | + | \ | |
| 47 | + | ==Access beenden und den Speicher freigeben== | |
| 48 | + | ||
| 49 | + | ``` pascal | |
| 50 | + | begin | |
| 51 | + | ... | |
| 52 | + | varAcApp.Quit; // bedendet Access | |
| 53 | + | varAcApp := UnAssigned; // gibt den Speicher frei | |
| 54 | + | ... | |
| 55 | + | end; | |
| 56 | + | ``` | |
| 57 | + | ||
| 58 | + | \ | |
| 59 | + | ==Access Datenbank öffnen== | |
| 60 | + | ||
| 61 | + | ``` pascal | |
| 62 | + | begin | |
| 63 | + | ... | |
| 64 | + | // Öffnet die Datenbank, ohne die Datenbank zu referenzieren | |
| 65 | + | try | |
| 66 | + | varAcApp.OpenCurrentDatabase(UTF8ToUTF16('D:\Test.mdb')); // öffnet die Accessdatenbank (Pfad: maximal 255 Zeichen) | |
| 67 | + | except | |
| 68 | + | ShowMessage('Die Datenbank kann nicht geöffnet werden.'); | |
| 69 | + | Exit; | |
| 70 | + | end; | |
| 71 | + | ... | |
| 72 | + | end; | |
| 73 | + | ``` | |
| 74 | + | ||
| 75 | + | \ | |
| 76 | + | ==Access Datei schliessen== | |
| 77 | + | ||
| 78 | + | ``` pascal | |
| 79 | + | begin | |
| 80 | + | ... | |
| 81 | + | varAcApp.CloseCurrentDatabase; | |
| 82 | + | ... | |
| 83 | + | end; | |
| 84 | + | ``` | |
| 85 | + | ||
| 86 | + | \ | |
| 87 | + | ==Tabelle öffnen== | |
| 88 | + | ||
| 89 | + | ``` pascal | |
| 90 | + | begin | |
| 91 | + | ... | |
| 92 | + | varAcApp.DoCmd.OpenTable('tblStammdaten'); | |
| 93 | + | ... | |
| 94 | + | end; | |
| 95 | + | ``` | |
| 96 | + | ||
| 97 | + | \ | |
| 98 | + | ==Tabelle schliessen== | |
| 99 | + | ||
| 100 | + | ``` pascal | |
| 101 | + | begin | |
| 102 | + | ... | |
| 103 | + | varAcApp.DoCmd.Close; | |
| 104 | + | ... | |
| 105 | + | end; | |
| 106 | + | ``` | |
| 107 | + | ||
| 108 | + | \ | |
| 109 | + | ==Makro ausführen== Der Zugriff auf das Makro erlaubt demjenigen der VBA Kenntisse hat die Beschränkungen der OleAutoamtion zu umgehen und direkt in der Datenbank mit VBA zu programmieren und diese Makros über die Schnittstelle 'DoCmd.RunMacro' auszuführen. | |
| 110 | + | ||
| 111 | + | ``` pascal | |
| 112 | + | begin | |
| 113 | + | ... | |
| 114 | + | varAcApp.DoCmd.RunMacro('Makro1'); | |
| 115 | + | ... | |
| 116 | + | end; | |
| 117 | + | ``` | |
| 118 | + | ||
| 119 | + | \ | |
| 120 | + | =Access sonstige Methoden= | |
| 121 | + | ||
| 122 | + | ## Accessversion ermitteln | |
| 123 | + | ||
| 124 | + | ``` pascal | |
| 125 | + | begin | |
| 126 | + | ... | |
| 127 | + | ShowMessage(varAcApp.Version); | |
| 128 | + | ... | |
| 129 | + | end; | |
| 130 | + | ``` | |
| 131 | + | ||
| 132 | + | \ | |
| 133 | + | ==Die Sichtbarkeit von Access steuern== | |
| 134 | + | ||
| 135 | + | ``` pascal | |
| 136 | + | begin | |
| 137 | + | ... | |
| 138 | + | varAcApp.Visible := False; // Access ist unsichtar | |
| 139 | + | varAcApp.Visible := True; // Access ist sichtbar | |
| 140 | + | ... | |
| 141 | + | end; | |
| 142 | + | ``` | |
| 143 | + | ||
| 144 | + | \ | |
| 145 | + | ==Die Sanduhr anzeigen== | |
| 146 | + | ||
| 147 | + | ``` pascal | |
| 148 | + | begin | |
| 149 | + | ... | |
| 150 | + | varAcApp.DoCmd.Hourglass(True); // Schaltet die Sanduhr ein | |
| 151 | + | varAcApp.DoCmd.Hourglass(False); // Schaltet die Sanduhr aus | |
| 152 | + | ... | |
| 153 | + | end; | |
| 154 | + | ``` | |
| 155 | + | ||
| 156 | + | \ | |
| 157 | + | ||
| 158 | + | ## Die Warnmeldungen ausschalten | |
| 159 | + | ||
| 160 | + | Unterdrückt einige Warnmeldungen (Statusmeldungen), die für den Programmablauf nicht wichtig, aber bei der Programmierung störend sind. | |
| 161 | + | ||
| 162 | + | ``` pascal | |
| 163 | + | begin | |
| 164 | + | ... | |
| 165 | + | varAcApp.DoCmd.SetWarnings(False); // Schaltet die Warnmeldungen aus | |
| 166 | + | varAcApp.DoCmd.SetWarnings(True); // Schaltet die Warnmeldungen ein | |
| 167 | + | ... | |
| 168 | + | end; | |
| 169 | + | ``` | |
| 170 | + | ||
| 171 | + | \ | |
| 172 | + | \ | |
| 173 | + | --Olaf 17:26, 1 October 2012 (UTC) | |
| 174 | + | ||
| 175 | + | --- | |
| 176 | + | *From the Free Pascal wiki, page "AccessAutomation/de", as it stood on 2020-02-01 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 177 | + | Category: Tutorials/de |
