OBS/Makros und Scripting/Anwendungsbereiche/Zugriff auf externe Datenquellen: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(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…“)
 
(Die Seite wurde neu angelegt: „{{Makros und Scripting}} =Allgemein= In den Makros steht Ihnen die Klasse TxDB für den Zugriff auf externe Datenquellen zur Verfügung. <source lang="delphi…“)
Zeile 1: Zeile 1:
50 yr old Business Broker Mcqueeney from Quesnel, likes beach tanning, [http://www.picturetrail.com/sfx/album/view/24761395 wood flooring types philippines] flooring and hockey. Has toured since childhood and has visited a number of locales, including Carioca Landscapes between the Mountain and the Sea.
{{Makros und Scripting}}
 
=Allgemein=
In den Makros steht Ihnen die Klasse TxDB für den Zugriff auf externe Datenquellen zur Verfügung.
 
<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');
   
    //Wieder 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=

Version vom 7. Januar 2020, 14:19 Uhr


Allgemein

In den Makros steht Ihnen die Klasse TxDB für den Zugriff auf externe Datenquellen zur Verfügung.

...
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');
    
    //Wieder 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