我們都知道ERP系統的業務資料最終幾乎都是保存在資料庫裡的,尤其是開發報表,會頻繁的去處理這些資料,那麼Genero AP端如何去連結資料庫的呢?這裡提供了一個小的案列,幫助理解:
Step1:首先看ConnectToDB FORM,根據輸入的store number關聯查找先關資訊,最終以Table形式顯示出來
step2:上代碼
#定於全域變數及mycust動態陣列(Table)
GLOBALS
DEFINE l_input INTEGER
DEFINE i INT
DEFINE mycust DYNAMIC ARRAY OF RECORD
store_num INTEGER,
store_name CHAR(20),
addr CHAR(20),
city CHAR(20),
contact_name CHAR(30),
phone CHAR(18),
order_num INT,
quantity SMALLINT,
PRICE DECIMAL(8,2),
stock_num INT,
description CHAR(15)
END RECORD
END GLOBALS
MAIN
DEFINE l_connect STRING
#sqlite的driver 'dbmsqt3xx', source值為資料庫在本地或伺服器的絕對位址
LET l_connect = "AnyDBName+driver='dbmsqt3xx',source='C:/Users/mtk68099/Documents/My Genero Files/samples/databases/custdemo/sqlite/custdemo.db'"
#通過driver和source連結到資料庫,不需要密碼訪問
CONNECT TO l_connect
#判斷是否連結成功,失敗則退出
IF SQLCA.SQLCODE THEN
EXIT PROGRAM SQLCA.SQLCODE
END IF
#成功連結到資料庫以後,就可以展開相關的資料庫操作了(比如游標)
PREPARE p1 FROM
"SELECT a.store_num, a.store_name, a.addr, a.city, a.contact_name, a.phone,
b.order_num, c.quantity, c.price, c.stock_num, d.description
FROM customer AS a
INNER JOIN orders AS b
INNER JOIN items AS c
INNER JOIN stock AS d
WHERE a.store_num = b.store_num AND b.order_num = c.order_num
AND c.stock_num = d.stock_num AND a.store_num = ?"
DECLARE c1 CURSOR FOR p1
CLOSE WINDOW SCREEN
OPEN WINDOW w1 AT 1,1 WITH FORM "ConnectToDB"
CALL display_store() #store相關資訊顯示
MENU ""
ON ACTION NEXT
CALL display_store()
ON ACTION QUIT
EXIT MENU
ON ACTION CLOSE
EXIT MENU
END MENU
CLOSE FORM ConnectToDB
CLOSE WINDOW w1
END MAIN
FUNCTION display_store()
INPUT l_input FROM store_input #store number輸入傳遞到變數
AFTER FIELD store_input #輸入完成後打開游標操作
OPEN c1 USING l_input
WHILE i >= 1
CLEAR record1[i].* #清除上次的螢幕顯示資料
LET i = i - 1
END WHILE
CALL mycust.clear() #清除陣列變數值
FOREACH c1 INTO mycust[i+1].*
DISPLAY mycust[i+1].* TO record1[i+1].* #將資料庫抓去的值顯示到螢幕
LET i = i + 1
END FOREACH
CLOSE c1
END INPUT
END FUNCTION
step3:編譯執行,顯示結果