Napojení na SQL databáze: Porovnání verzí
| (Není zobrazena jedna mezilehlá verze od stejného uživatele.) | |||
| Řádek 73: | Řádek 73: | ||
</pre> | </pre> | ||
V proměnných wkf.stredisko_code a wkf.stredisko_nazev bude vrácen "kód" a "název" střediska. | V proměnných wkf.stredisko_code a wkf.stredisko_nazev bude vrácen "kód" a "název" střediska. | ||
| − | Detailní popis funkce SQLselectDialogSQL naleznete v popisu "ActDocEntr.txt", který je uložen v adresáři | + | Detailní popis funkce SQLselectDialogSQL naleznete v popisu "ActDocEntr.txt", který je uložen v adresáři enTeam/Manuals |
Zpět na stránku [[Prováděcí skripty]] | Zpět na stránku [[Prováděcí skripty]] | ||
| − | [[Category: | + | [[Category: enTeam skripty]] |
Aktuální verze z 22. 12. 2020, 21:29
Skriptovací jazyk podporuje napojení na databáze typu
- Microsoft SQL (MS SQL) - pomocí knihoven "dynOLEEng" a "actdocentr"
- Oracle - pomocí knihoven "dynOLEEng" a "actdocentr"
- Firebird - pomocí knihoven "dynOLEEng" a "actdocentr"
- Microsoft Access (MS Access) - pomocí knihovny "AccessMTB"
Dále je uveden příklad nevizuální práce s databází pomocí knihovny "dynOLEEng" a vizuální výběr z databáze pomocí knihovny "actdocentr". Knihovna "AccessMTB" určená pro komunikaci s MS Access podporuje pouze nevizuální práci.
Nevizuální čtení z SQL databáze
Skript demonstruje možnosti napojení skriptovacího jazyka na SQL databáze. V příkladu je uvedeno napojení na databázi enTeam, kde její umístění je načteno z INI souboru. Proměnná DBtype může obsahovat hodnoty INTERBASE, ORACLE a nebo MSSQL. Po napojení jsou načtena loginID všech uživatelů z tabulky z tabulky MUUSER.
declare function TB_ParamsAddStr dll "dynOLEEng" (integer,string): integer
declare function TB_CreateParams dll "dynOLEEng" ():integer
declare function DB_ConnectWithParams dll "dynOLEEng" (integer,string,string):integer
declare function DB_CreateSQLQuery dll "dynOLEEng" (string):integer
declare Procedure DB_SQLQueryNext dll "dynOLEEng" (Integer)
declare procedure DB_OpenSQLQuery dll "dynOLEEng" (integer,integer,var Boolean)
declare Procedure DB_SQLQueryEof dll "dynOLEEng" (Integer,var boolean,var boolean)
declare Function DB_QueryFieldByName dll "dynOLEEng" (Integer,string,var Boolean):integer
declare Function TB_GetResultStr dll "dynOLEEng" (Integer): string
Declare procedure DB_ExecuteSQLQuery dll "dynOLEEng"(Integer,Integer,var Boolean)
Declare procedure DB_FreeSQLQuery dll "dynOLEEng"(Integer)
Declare procedure DB_Disconnect dll "dynOLEEng"(integer)
declare procedure GetItemFromMTBini dll "actualDocument" (string,string,string)
Script UkazkaKomunikaciSdatabazi (): Boolean
var DBname, DBtype : String DBlogin, DBpass : String SQLCOL, s : String
conn, sqlID, columnID, iParamsId : Integer
eof, success : Boolean
Begin
DBlogin := "sysdba" //výchozí uživatel v databázovém serveru Firebird
DBpass := "masterkey"
GetItemFromMTBini("M/TEAMBRIDGE","server",DBname) // označení databáze. Procedura GetItemFromMTBini načte hodnotu klíče ze souboru parent.ini ze sekce M/TeamBridge
GetItemFromMTBini("M/TEAMBRIDGE","Database",DBtype) // pro Firebird zde bude načten typ INTERBASE
iParamsId:=TB_CreateParams() //vytvoření objektu parametrů
TB_ParamsAddStr(iParamsId,DBtype) //naplnění parametrů
TB_ParamsAddStr(iParamsId,DBname)
TB_ParamsAddStr(iParamsId,"ANCZECH")
TB_ParamsAddStr(iParamsId,"")
TB_ParamsAddStr(iParamsId,"3")
conn:=DB_ConnectWithParams(iParamsId,DBlogin,DBpass) //volání metody Connect s parametry, které jsou uloženy v objektu parametrů
SQLCOL := "select * from muuser" // SQL dotaz nebo příkaz
sqlID:=DB_CreateSQLQuery(SQLCOL) //z textové SQL příkazu vytvoří objekt příkazu
DB_OpenSQLQuery(sqlID, conn,success) // provede SQL dotaz
//Pokud se má provádět SQL příkaz (UPDATE,INSERT), tak se místo OpenSQLQuery
//použije příkaz DB_ExecuteSQLQuery
DB_SQLQueryEof(sqlID,eof,success)
while not eof do //prochází jednotlivé řádky výsledku
columnID:=DB_QueryFieldByName(sqlID,"loginID",success) ¨
s := TB_GetResultStr(columnID) //....................... zde může následovat dotaz na další sloupce z řádku výsledku.
//Pro každý sloupec to budou dva příkazy, tak jako u loginID.
DB_SQLQueryNext(sqlID)
write(s) //testovací zobrazení výsledku
DB_SQLQueryEof(sqlID,eof,success) //testuje, zda ještě není konec seznamu výsledků
End
DB_FreeSQLQuery(sqlID)
DB_Disconnect(conn)
End
Vizuální čtení z SQL databáze
Příkaz provede SQL dotaz do databáze a odpovídají záznamy zobrazí v dialogovém okně s možností výběru. Je možné specifikovat, které sloupce záznamu budou zobrazeny a které bude systém vracet jako výsledek.
Declare Function SQLselectDialogSQL dll "actdocentr" (string,string,string,string,string,string,string,string,string,string,string,string,var integer): Boolean
Script ZobrazStrediska (): Boolean
Begin
SQLselectDialogSQL("Select Code,DescriptionCZ from CR_CodeBook","Receptury",login,password,"Výběr","Code,DescriptionCZ","Kód,Název střediska","80,200","Code,DescriptionCZ","","",s,i)
GetFromStringListExt (1,"#$#",s,wkf.stredisko_code)
GetFromStringListExt (2,"#$#",s,wkf.stredisko_nazev)
End
V proměnných wkf.stredisko_code a wkf.stredisko_nazev bude vrácen "kód" a "název" střediska. Detailní popis funkce SQLselectDialogSQL naleznete v popisu "ActDocEntr.txt", který je uložen v adresáři enTeam/Manuals
Zpět na stránku Prováděcí skripty