Sign in Join
Wiki copytemporary

AccessAutomation/de

Zurück zur Office Automation.\

=Access= Bei der OleAutomatisierung von Acces gibt es ein grosse Probleme. Es werden nicht alle Methoden von der OleAutomatisierung unterstützt.
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.\

==Sicherheitsabfrage== Die Sicherheitsabfrage, die (ab Access 2003) bei jedem start von Access erscheint stört die meisten bei der Automatisierung von Access.
Um sie Sicherheitsabfrage (Beispiel: Access 2003) zu umgehen gibt es zwei Möglichkeiten:\

Sie erstellen folgenden Eintrag in der Registry:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Access\Security]
"label"=dword:00000001
Alternativ kann die Sicherheitsstufe in Access auf niedrig gesetzt werden.
Extras -> Makro -> Sicherheit -> Sicherheitsstufe -> Niedrig\

=Access Dateiverarbeitung=

Speicher reservieren

pascal
var
  varAcApp: OleVariant;  // reserviert den Speicher

==Speicher belegen==

pascal
begin
  ...
  // Speicher belegen ohne Fehlerbehandlung
  varAcApp := CreateOleObject('Access.Application'); // erstellt das Accessobjekt

  // Speicher belegen mit Fehlerbehandlung:
  try
    varAcApp := CreateOleObject('Access.Application'); // erstellt das Accessobjekt
  except
    ShowMessage('MS Access kann nicht gestartet werden.'); // Fehlerbehandlung
    Exit;
  end;
  ...
end;

==Access beenden und den Speicher freigeben==

pascal
begin
  ...
  varAcApp.Quit;            // bedendet Access
  varAcApp := UnAssigned;   // gibt den Speicher frei
  ...
end;

==Access Datenbank öffnen==

pascal
begin
  ...
  // Öffnet die Datenbank, ohne die Datenbank zu referenzieren
  try
    varAcApp.OpenCurrentDatabase(UTF8ToUTF16('D:\Test.mdb')); // öffnet die Accessdatenbank (Pfad: maximal 255 Zeichen)
  except
    ShowMessage('Die Datenbank kann nicht geöffnet werden.');
    Exit;
  end;
  ...
end;

==Access Datei schliessen==

pascal
begin
  ...
  varAcApp.CloseCurrentDatabase;
  ...
end;

==Tabelle öffnen==

pascal
begin
  ...
  varAcApp.DoCmd.OpenTable('tblStammdaten');
  ...
end;

==Tabelle schliessen==

pascal
begin
  ...
  varAcApp.DoCmd.Close;
  ...
end;

==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.

pascal
begin
  ...
  varAcApp.DoCmd.RunMacro('Makro1');
  ...
end;

=Access sonstige Methoden=

Accessversion ermitteln

pascal
begin
  ...
  ShowMessage(varAcApp.Version);
  ...
end;

==Die Sichtbarkeit von Access steuern==

pascal
begin
  ...
  varAcApp.Visible := False;  // Access ist unsichtar
  varAcApp.Visible := True;   // Access ist sichtbar
  ...
end;

==Die Sanduhr anzeigen==

pascal
begin
  ...
  varAcApp.DoCmd.Hourglass(True);   // Schaltet die Sanduhr ein
  varAcApp.DoCmd.Hourglass(False);  // Schaltet die Sanduhr aus
  ...
end;

Die Warnmeldungen ausschalten

Unterdrückt einige Warnmeldungen (Statusmeldungen), die für den Programmablauf nicht wichtig, aber bei der Programmierung störend sind.

pascal
begin
  ...
  varAcApp.DoCmd.SetWarnings(False);  // Schaltet die Warnmeldungen aus
  varAcApp.DoCmd.SetWarnings(True);   // Schaltet die Warnmeldungen ein
  ...
end;

--Olaf 17:26, 1 October 2012 (UTC)


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.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.