Napojení na SQL databáze: Porovnání verzí
en>Kadel m |
|||
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.) | |||
Řádek 9: | Řádek 9: | ||
<h2>Nevizuální čtení z SQL databáze</h2> | <h2>Nevizuální čtení z SQL databáze</h2> | ||
− | Skript demonstruje možnosti napojení skriptovacího jazyka | + | 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. |
<pre> | <pre> | ||
Řá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