- ⑥ 如何在FORM中實現(xiàn)某數(shù)據(jù)項自動按記錄序號加一操作
---- 設(shè)塊名為VO,要操作的數(shù)據(jù)項為VO_ID,在該塊中建立塊級觸發(fā)子WHEN-CREATE- RECORD,加入如下代碼:
:VO_ID:=:System.Trigger_Record;
---- 這樣每當(dāng)生成新記錄時VO_ID就會自動加一了。
---- ⑦ 如何在一個FORM中調(diào)用另一個FORM,或在一個塊中調(diào)用另一個塊時顯示特定的記錄有時用戶會要求在調(diào)用另一個FORM時,只顯示相關(guān)的記錄,舉例如下,在一個FORM的塊中有一個按鈕,在按鈕觸發(fā)子中加入如下代碼:
DECLARE
PM
PARAMLIST;
BEGIN
PM:=GET_PARAMETER_LIST('PM');
IF NOT ID_NULL(PM) THEN
DESTROY_PARAMETER_LIST('PM');
END IF;
PM:=CREATE_PARAMETER_LIST('PM');
......................
ADD_PARAMETER(PM,'THE_WHERE',
TEXT_PARAMETER,'EM_NAME=''EM4''
AND EM_PROJECT_NAME=''支架預(yù)制''');
OPEN_FORM('PAYMENT',ACTIVATE,SESSION,PM);
END;
---- 其中EM_NAME,EM_PROJECT_NAME為本FORM某塊的數(shù)據(jù)項,PAYMENT為要調(diào)用的FORM模塊。這樣通過傳遞參數(shù)列表就可以得到想要的結(jié)果。在FORM PAYMENT.FMB中,建立一參數(shù)THE_WHERE,CHAR型,長1000,然后在PAYMENT.FMB中建立FORM級觸發(fā)子WHEN-NEW-FORM-INSTANCE,在該觸發(fā)子中加入以下語句:
IF :PARAMETER.THE_WHERE IS NOT NULL THEN
SET_BLOCK_PROPERTY('PAYMENT',
DEFAULT_WHERE,:PARAMETER.THE_WHERE);
END IF;
---- 其中PAYMENT為要顯示的塊,這樣通過參數(shù)傳遞就得到想要的某些特定條件的數(shù)據(jù)了。
---- ⑧ 在FORM中當(dāng)有主從塊時,連續(xù)輸入記錄如何避免被不斷的提示保存:
---- 每輸入一條主記錄和若干條該主記錄的從記錄后,此時再導(dǎo)航到主塊輸下一條記錄,F(xiàn)ORM就會提示你是否要保存記錄,而你并不希望FORM提示,讓它自動保存,此時你可以到Program Units中找到過程PROCEDURE Clear_All_Master_Details,然后在這個過程中找到語句
Clear_Block(ASK_COMMIT);
---- 將其改為Clear_Block(DO_COMMIT);就可以了。
---- ⑨ 在Report開始時選擇排序項:
---- 在報表開始的Parameter Form中選擇報表按哪個數(shù)據(jù)項排序,
---- 1. 先在USER PARAMETER 中創(chuàng)建SORT參數(shù),為字符型,長20。
---- 2. 初始值選’責(zé)任方’,然后將這四個值輸入到DATA SELECTION中,形成列表。
---- 3. 然后處理QUERY中的SQL語句:
select CHARGER,FCO_NO,EM_NAME,FCO
_NO,DESCRIPTION, FCR_POINT
from FCR_MAIN
ORDER BY DECODE(:SORT,'責(zé)任方',CHARGER,'FCO號',
FCO_NO,'FCR號',FCR_NO,'FCR號',EM_NAME)
---- ⑩ 在Developer 2000中如何讀寫操作系統(tǒng)文件
---- 在用Developer 2000的開發(fā)工具開發(fā)應(yīng)用程序時,經(jīng)常碰到需要讀寫外部文件的問題,可以用ORACLE 帶的包TEXT_IO來完成這項需求。例如:
DECLARE
IN_FILE TEXT_IO.FILE_TYPE;
OUT_FILE TEXT_IO.FILE_TYPE;
LINE_BUFER VARCHAR2(80);
/*若不用IN_FILE,可以將各字段聯(lián)接在一起賦值給此變量*/
BEGIN
IN_FILE:=TEXT_IO.FOPEN
(‘C:\TEMP\TEST1.TXT’,’r’);
OUT_FILE:=TEXT_IO.FOPEN
(‘C:\TEMP\TEST2.TXT’,’w+’);
LOOP
TEXT_IO.GET_LINE(IN_FILE,LINE_BUFER);
TEXT_IO.PUT(LINE_BUFER);
TEXT_IO.NEW_LINE;
TEXT_IO.PUT_LINE(OUT_FILE,LINE_BUFER);
END LOOP;
EXCEPTION
WHEN no_data_found THEN
TEXT_IO.PUT_LINE(‘CLOSING THE FILE ,PLEASE WAITING....’);
TEXT_IO.FCLOSE(IN_FILE);
TEXT_IO.FCLOSE(OUT_FILE);
END;
---- 三.數(shù)據(jù)庫管理
---- ① 在刪除一個表中的全部數(shù)據(jù)時,須使用TRUNCATE TABLE 表名;因為用DROP TABLE,DELETE * FROM 表名時,TABLESPACE表空間該表的占用空間并未釋放,反復(fù)幾次DROP,DELETE操作后,該TABLESPACE上百兆的空間就被耗光了。
---- ② 數(shù)據(jù)庫文件的移動方法
---- 當(dāng)想將數(shù)據(jù)庫文件移動到另外一個目錄下時,可以用ALTER DATABASE命令來移動(比ALTER TABLESPACE適用性強):
---- 1. 使用SERVER MANAGER關(guān)閉實例.
SVRMGR > connect internal;
SVRMGR > shutdown;
SVRMGR >exit;
---- 2. 使用操作系統(tǒng)命令來移動數(shù)據(jù)庫文件位置(假設(shè)這里操作系統(tǒng)為SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移動到新的位置,
#mv /ora13/orarun/document.dbf /ora12/orarun
---- 3. 裝載數(shù)據(jù)庫并用alter database命令來改變數(shù)據(jù)庫中的文件名.
SVRMGR > connect internal;
SVRMGR > startup mount RUN73;
SVRMGR > alter database rename file
> ‘/ ora13/orarun/document.dbf’
> ‘/ ora12/orarun/document.dbf’;
---- 4. 啟動實例.
SVRMGR > alter database open;