OBS/Makros und Scripting/Anwendungsbereiche/Zugriff auf externe Datenquellen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Böhrer (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „50 yr old Business Broker Mcqueeney from Quesnel, likes beach tanning, [http://www.picturetrail.com/sfx/album/view/24761395 wood flooring types philippines] fl…“) |
|||
(7 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Makros und Scripting}} | |||
=Allgemein= | |||
In den Makros steht Ihnen die Klasse TxDB für den Zugriff auf externe Datenquellen zur Verfügung. | |||
Über den Constructor können Sie den Datenbank-Typen definiert. | |||
Diese wird für die interne Verarbeitung der verschiedenen SQL-Syntaxen genutzt. | |||
{{Hinweis|Über die Verbindung mit ODBC-Treibern sind theoretisch mehrere Typen möglich. Da diese sich aber in der Syntax unterscheiden muss einzel geprüft werden, ob Anpassungen an OBS nötig sind.}} | |||
Derzeit können folgende Konstanten genutzt werden: | |||
*DB_MYSQL | |||
*DB_MSSQL | |||
*DB_SQLite | |||
*DB_MDB (Access) | |||
{{Achtung|OBS ist für den Betrieb mit einer MySQL-Datenbank entwickelt. Alle anderen Datenbank-Typen sind für den Zugriff auf externe Datenquellen gedacht, um zum Beispiel Daten in die OBS-Datenbanken zu konvertieren. Fehler und Seiteneffekte sind nicht auszuschließen.}} | |||
<source lang="delphi"> | |||
... | |||
var oMSSQLDB:TxDB; | |||
... | |||
//Klasse instanziieren | |||
oMSSQLDB:= TxDB.Create(DB_MSSQL); | |||
//Passwort | |||
oMSSQLDB.UserPassword := 'Passwort'; | |||
//Benutzer | |||
oMSSQLDB.UserName := 'Benutzer'; | |||
//ODBC DSN-Name | |||
oMSSQLDB.DataSource := 'mssql'; | |||
//Connect zur Datenbank OBS_MSSQL_DB | |||
DB_ConnectToDatabase(oMSSQLDB, 'OBS_MSSQL_DB'); | |||
//Connect für Access | |||
//DB_ConnectToDatabase(oMSSQLDB, 'c:\mdb\platin.mdb'); | |||
//Freigeben der Instanz | |||
MyFreeAndNil(oMSSQLDB); | |||
end; | |||
</source> | |||
=wichtige Konstanten= | |||
'''CONST_NO_SYSDB''' (False)<br/> | |||
Viele interne Funktionen (z.B. DB_WriteSQLWhere) prüfen ob eine Tabelle exisitert, bevor diese manipuliert werden darf. Mit dieser Konstante kann dies verhindert werden. | |||
=Häufige Funktionen= | |||
Die oben beschriebene Verbindung muss immer aufgebaut werden. | |||
==Nutzung im Query== | |||
<source lang="delphi"> | |||
function StartProc():Boolean; | |||
var oQuery: TxQuery; | |||
begin | |||
if DB_SOpen(oMSSQLDB,'SELECT * FROM Obs_Adressen',oQuery) then begin | |||
Meldung(oQuery.a2c('adrnr')); | |||
end; | |||
DB_Close(oQuery); | |||
end; | |||
</source> | |||
==Daten lesen== | |||
<source lang="delphi"> | |||
function StartProc():Boolean; | |||
begin | |||
DB_ReadSQLValue(oMSSQLDB, 'Obs_Adressen', 'Zahlbed', 'adrnr = 900003'); | |||
end; | |||
</source> | |||
==Daten verändern== | |||
<source lang="delphi"> | |||
function StartProc():Boolean; | |||
begin | |||
DB_WriteSQLWhere(oMSSQLDB, 'Obs_Adressen', ['Zahlbed'], ['dies ist ein Test'], 'adrnr = 900003', CONST_NO_SYSDB); | |||
end; | |||
</source> | |||
==Daten löschen== | |||
<source lang="delphi"> | |||
function StartProc():Boolean; | |||
begin | |||
DB_DeleteRecordWhere(oMSSQLDB, 'Obs_Adressen', 'adrnr = 000000'); | |||
end; | |||
</source> | |||
==Daten einfügen== | |||
<source lang="delphi"> | |||
function StartProc():Boolean; | |||
var xData: TqSQL; | |||
begin | |||
//Leeren Datensatz nutzen | |||
xData := qSQlInit(oMSSQLDB, 'Obs_Adressen', CONST_DIFFERENCE, CONST_NO_SYSDB); | |||
//Alternativ mit qSQLRead einen vorhanden Datensat einlesen | |||
//Dieser muss zuvor in oQuery eingelesen werden (Siehe: Nutzung im Query) | |||
xData := qSQLRead(oMSSQLDB, 'Obs_Adressen', oQuery, CONST_NO_SYSDB); | |||
xData.qSet('adrnr', '000000'); | |||
xData.lNoSysUID := True; | |||
xData.SaveData(NEW_RECORD); | |||
qSqlFree(xData); | |||
end; | |||
</source> | |||
=Einrichtung ODBC-Treiber= | |||
{{Hinweis|Möglicherweise müssen Sie den ODBC-Treiber bei Microsoft oder einem Drittanbieter herunterladen.}} | |||
Zur Einrichtung öffnen Sie den ODBC-Datenquellen-Administrator und wählen ''Hinzufügen''. | |||
*Anschließend wählen Sie den Treiber für die Datenbank, auf die Sie zugreifen möchten und anschließend auf Fertigstellen. Hier ''ODBC Driver 17 for SQL Server''. | |||
:[[Datei:ODBC_Neue_Datenquelle.png|400px]] | |||
*Im Anschluss öffnet sich der Konfigurator. | |||
:Hier können Sie im ersten Schritt den DSN-Namen (Wichtig für die Nutzung im Makro) der neuen Verbindung eingeben. | |||
:[[Datei:ODBC_Konfiguration_1.png|400px]] | |||
*Je Nach Einstellungen Ihres MS-SQL-Servers können Sie in den folgenden Schritten die entsprechende Einstellungewn wählen. | |||
:[[Datei:ODBC_Konfiguration_2.png|400px]] | |||
*Wenn am Ende der Verbindungstest erfolgreich war, können Sie über das Macro auf die neue Datenquelle zugreifen. |
Aktuelle Version vom 7. Dezember 2021, 15:06 Uhr
Allgemein
In den Makros steht Ihnen die Klasse TxDB für den Zugriff auf externe Datenquellen zur Verfügung.
Über den Constructor können Sie den Datenbank-Typen definiert. Diese wird für die interne Verarbeitung der verschiedenen SQL-Syntaxen genutzt.
HINWEIS: Über die Verbindung mit ODBC-Treibern sind theoretisch mehrere Typen möglich. Da diese sich aber in der Syntax unterscheiden muss einzel geprüft werden, ob Anpassungen an OBS nötig sind.
Derzeit können folgende Konstanten genutzt werden:
- DB_MYSQL
- DB_MSSQL
- DB_SQLite
- DB_MDB (Access)
ACHTUNG: OBS ist für den Betrieb mit einer MySQL-Datenbank entwickelt. Alle anderen Datenbank-Typen sind für den Zugriff auf externe Datenquellen gedacht, um zum Beispiel Daten in die OBS-Datenbanken zu konvertieren. Fehler und Seiteneffekte sind nicht auszuschließen.
...
var oMSSQLDB:TxDB;
...
//Klasse instanziieren
oMSSQLDB:= TxDB.Create(DB_MSSQL);
//Passwort
oMSSQLDB.UserPassword := 'Passwort';
//Benutzer
oMSSQLDB.UserName := 'Benutzer';
//ODBC DSN-Name
oMSSQLDB.DataSource := 'mssql';
//Connect zur Datenbank OBS_MSSQL_DB
DB_ConnectToDatabase(oMSSQLDB, 'OBS_MSSQL_DB');
//Connect für Access
//DB_ConnectToDatabase(oMSSQLDB, 'c:\mdb\platin.mdb');
//Freigeben der Instanz
MyFreeAndNil(oMSSQLDB);
end;
wichtige Konstanten
CONST_NO_SYSDB (False)
Viele interne Funktionen (z.B. DB_WriteSQLWhere) prüfen ob eine Tabelle exisitert, bevor diese manipuliert werden darf. Mit dieser Konstante kann dies verhindert werden.
Häufige Funktionen
Die oben beschriebene Verbindung muss immer aufgebaut werden.
Nutzung im Query
function StartProc():Boolean;
var oQuery: TxQuery;
begin
if DB_SOpen(oMSSQLDB,'SELECT * FROM Obs_Adressen',oQuery) then begin
Meldung(oQuery.a2c('adrnr'));
end;
DB_Close(oQuery);
end;
Daten lesen
function StartProc():Boolean;
begin
DB_ReadSQLValue(oMSSQLDB, 'Obs_Adressen', 'Zahlbed', 'adrnr = 900003');
end;
Daten verändern
function StartProc():Boolean;
begin
DB_WriteSQLWhere(oMSSQLDB, 'Obs_Adressen', ['Zahlbed'], ['dies ist ein Test'], 'adrnr = 900003', CONST_NO_SYSDB);
end;
Daten löschen
function StartProc():Boolean;
begin
DB_DeleteRecordWhere(oMSSQLDB, 'Obs_Adressen', 'adrnr = 000000');
end;
Daten einfügen
function StartProc():Boolean;
var xData: TqSQL;
begin
//Leeren Datensatz nutzen
xData := qSQlInit(oMSSQLDB, 'Obs_Adressen', CONST_DIFFERENCE, CONST_NO_SYSDB);
//Alternativ mit qSQLRead einen vorhanden Datensat einlesen
//Dieser muss zuvor in oQuery eingelesen werden (Siehe: Nutzung im Query)
xData := qSQLRead(oMSSQLDB, 'Obs_Adressen', oQuery, CONST_NO_SYSDB);
xData.qSet('adrnr', '000000');
xData.lNoSysUID := True;
xData.SaveData(NEW_RECORD);
qSqlFree(xData);
end;
Einrichtung ODBC-Treiber
HINWEIS: Möglicherweise müssen Sie den ODBC-Treiber bei Microsoft oder einem Drittanbieter herunterladen.
Zur Einrichtung öffnen Sie den ODBC-Datenquellen-Administrator und wählen Hinzufügen.
- Anschließend wählen Sie den Treiber für die Datenbank, auf die Sie zugreifen möchten und anschließend auf Fertigstellen. Hier ODBC Driver 17 for SQL Server.
- Im Anschluss öffnet sich der Konfigurator.
- Hier können Sie im ersten Schritt den DSN-Namen (Wichtig für die Nutzung im Makro) der neuen Verbindung eingeben.
- Je Nach Einstellungen Ihres MS-SQL-Servers können Sie in den folgenden Schritten die entsprechende Einstellungewn wählen.
- Wenn am Ende der Verbindungstest erfolgreich war, können Sie über das Macro auf die neue Datenquelle zugreifen.