Napojení na SQL databáze
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 M/TeamBridge na SQL databáze. V příkladu je uvedeno napojení na databázi TeamBridge, 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 M/TeamBridge/Manuals
Zpět na stránku Prováděcí skripty