在一段PB源碼中,有看到如下一段代碼:
<!-- @page { margin: 2cm } -->
IF il_flow = 1 THEN
dw_3.SetTransObject(Sqlca)
dw_3.Retrieve(ls_no)
ELSE
dw_3.SetTransObject(Sqlca)
dw_3.Retrieve()
END IF
這個代碼之前有根據不同條件改變dw_3的DataObject值.
然后在提取資料時,也根據不同條件判斷是否需要傳入參數.
其實在PB中,Retrieve()的參數不一定需要與DataObject參數匹配的.
我們傳入的參數可以比資料提取定義的參數多,系統會自動取舍.
上面的代碼可以簡化為:
<!-- @page { margin: 2cm } -->
dw_3.SetTransObject(Sqlca)
dw_3.Retrieve(ls_no)
如果你的DataObject沒有定義過濾參數,則傳入的ls_no值會由系統自動忽略.
上面的寫法源於對PB系統函數基本知識掌握不夠.