Difference between revisions of "AccessAutomation/de"

From Lazarus wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting)
 
Line 21: Line 21:
 
=Access Dateiverarbeitung=
 
=Access Dateiverarbeitung=
 
==Speicher reservieren==
 
==Speicher reservieren==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   varAcApp: OleVariant;  // reserviert den Speicher
 
   varAcApp: OleVariant;  // reserviert den Speicher
Line 27: Line 27:
 
<br>
 
<br>
 
==Speicher belegen==
 
==Speicher belegen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 45: Line 45:
 
<br>
 
<br>
 
==Access beenden und den Speicher freigeben==
 
==Access beenden und den Speicher freigeben==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 55: Line 55:
 
<br>
 
<br>
 
==Access Datenbank öffnen==
 
==Access Datenbank öffnen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 70: Line 70:
 
<br>
 
<br>
 
==Access Datei schliessen==
 
==Access Datei schliessen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 79: Line 79:
 
<br>
 
<br>
 
==Tabelle öffnen==
 
==Tabelle öffnen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 88: Line 88:
 
<br>
 
<br>
 
==Tabelle schliessen==
 
==Tabelle schliessen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 99: Line 99:
 
Der Zugriff auf das Makro erlaubt demjenigen der VBA Kenntisse hat die Beschränkungen der OleAutoamtion zu umgehen und
 
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.
 
direkt in der Datenbank mit VBA zu programmieren und diese Makros über die Schnittstelle 'DoCmd.RunMacro' auszuführen.
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 110: Line 110:
  
 
==Accessversion ermitteln==
 
==Accessversion ermitteln==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 119: Line 119:
 
<br>
 
<br>
 
==Die Sichtbarkeit von Access steuern==
 
==Die Sichtbarkeit von Access steuern==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 129: Line 129:
 
<br>
 
<br>
 
==Die Sanduhr anzeigen==
 
==Die Sanduhr anzeigen==
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...
Line 141: Line 141:
 
==Die Warnmeldungen ausschalten==
 
==Die Warnmeldungen ausschalten==
 
Unterdrückt einige Warnmeldungen (Statusmeldungen), die für den Programmablauf nicht wichtig, aber bei der Programmierung störend sind.
 
Unterdrückt einige Warnmeldungen (Statusmeldungen), die für den Programmablauf nicht wichtig, aber bei der Programmierung störend sind.
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
begin
 
begin
 
   ...
 
   ...

Latest revision as of 01:01, 2 February 2020

Deutsch (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

var
  varAcApp: OleVariant;  // reserviert den Speicher


Speicher belegen

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

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


Access Datenbank öffnen

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

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


Tabelle öffnen

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


Tabelle schliessen

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.

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


Access sonstige Methoden

Accessversion ermitteln

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


Die Sichtbarkeit von Access steuern

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


Die Sanduhr anzeigen

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.

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)