iT邦幫忙

0

TIPTOP TABLE表

我新建了一張TABLE表單
原本檢查是否有重覆的欄位部分,4gl的程式是有寫入的
由於公司需要,所以我必須得將,檢查是否有重覆值的給拿掉
目前也是拿掉的狀況
但拿掉之後,當我按單身他會一直重覆上個值得顯示,但當我退出單身值又是正常的
所以我有找到有一段程式,感覺是這個部分會引響到這塊
但我有點改不出來,想尋求協助該如何修改才行
原始程式段:
LET g_forupd_sql = " SELECT mmc01,mmc02,mmc04,mmc05,mmc06,mmc07,mmcacti
FROM mmc_file ",
" WHERE mmc01= ? FOR UPDATE NOWAIT "

2 個回答

0
souda
iT邦研究生 1 級 ‧ 2021-03-13 20:18:44

看不懂你的問題? 貼出你的單身段喔!

carry1246 iT邦新手 5 級 ‧ 2021-03-15 13:21:59 檢舉

BEFORE FIELD mmc01
IF g_mmc[l_ac].mmc01 IS NULL OR g_mmc[l_ac].mmc01 = 0 THEN
SELECT max(mmc01)+1
INTO g_mmc[l_ac].mmc01
FROM mmc_file
IF g_mmc[l_ac].mmc01 IS NULL THEN
LET g_mmc[l_ac].mmc01 = 1
END IF
END IF

   AFTER FIELD mmc01                        #check 編號是否重複
     IF g_mmc[l_ac].mmc01 IS NOT NULL THEN
     IF g_mmc[l_ac].mmc01 != g_mmc_t.mmc01 OR
       (g_mmc[l_ac].mmc01 IS NOT NULL AND g_mmc_t.mmc01 IS NULL) THEN
           SELECT COUNT(*) INTO g_cnt FROM mmc_file
               WHERE mmc01 = g_mmc[l_ac].mmc01

IF g_cnt >0 THEN

CALL cl_err('',-239,0)

LET g_mmc[l_ac].mmc01 = g_mmc_t.mmc01

NEXT FIELD mmc01

END IF

     END IF
     END IF
    AFTER FIELD mmc02
       IF g_mmc[l_ac].mmc01 IS NULL THEN NEXT FIELD mmc01 END IF

因為我把這段mark之後,他不會檢查我的編號是否重覆
但我點單身進去時,變成假設我的第一條有4個欄位
編號 名稱 序號 內容
1 A A A
1 B B B
當我mark的狀況下,可允許上述狀況發生,但會產生一個額外問題
當我點選單身之後,我的第二條 1BBB若還沒點選到他那條她依舊是1BBB,但當我點選到的時候他會變成1AAA,但是當我查詢全部時又是1AAA、1BBB分別兩條正常的狀況。

souda iT邦研究生 1 級 ‧ 2021-03-17 13:10:48 檢舉

你可以看看FUNCTION xxx_b()
是否有BEFORE INSERT 新增做INITIALIZE
BEFORE INSERT
LET l_n = ARR_COUNT()
LET p_cmd = 'a'
INITIALIZE g_tc_poe[l_ac].* TO NULL
LET g_tc_poe_t.* = g_tc_poe[l_ac].*
CALL cl_show_fld_cont()
NEXT FIELD tc_poe01

0
做工仔人!
iT邦大師 1 級 ‧ 2021-03-15 21:03:56

這個問題有很多地方要看.
查詢時,可以看到二筆單身是 程式代編_FILL_B() 這段程式在控管.
在單身輸入時上一筆下一筆時會亂SHOW : 應該是單身的 INPUT ARRAY 中的AFTER ROW 或是AFTER INSERT 或是 ON ROW CHANGE (因為這些地方都會重show 單身資料)

從某些角度來看:程式這樣改會害死後人.因為"項次"可以重覆,資料很容易搞錯而且其他程式要來用這個table的資料時,也容易撈錯資料也會撈到多筆資料.

carry1246 iT邦新手 5 級 ‧ 2021-03-16 12:05:44 檢舉

因為目前公司發票類行改成電子發票後,我需要抓實際出貨發票的虛擬序號,而每次執行完之後虛擬序號由於會重跑,所以我才想說那若產生發票檔案時,就把這些訊息INSERT INTO 到我的TABLE表內使我的TABLE表有實體紀錄,但問題來了我允許序號重覆的狀況下,又希望他能撈取正確資料,但由於我的發票號碼欄位都是重覆的狀況下,取值確實出了問題
及時我給了,我要查詢的條件依發票號碼、料號,需要這兩個條件成立才能過抓取資料
select mmc01 into l_mmc01 from mmc_file where mmc02=g_ohb.ohb30 and mmc04=g_ohb.ohb04
但這樣查詢的結果 l_mmc01竟然為空值....
我是希望她和axmt700退貨那做對應

carry1246 iT邦新手 5 級 ‧ 2021-03-16 14:09:25 檢舉

我進sqlplus 輸入SELCET選線
select mmc01 from mmc_file,ohb_file
where mmc02=ohb30 and mmc04=ohb04;
可以查得出mmc01=2
但進到4gl內這樣寫,就會NULL
這是select 方向錯誤還是?

carry1246 iT邦新手 5 級 ‧ 2021-03-19 09:58:13 檢舉

這段select 解決,我的條件下錯

我要發表回答

立即登入回答