close

我們都知道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:編譯執行,顯示結果

arrow
arrow
    創作者介紹
    創作者 M先生 的頭像
    M先生

    雨果

    M先生 發表在 痞客邦 留言(0) 人氣()