DevExpress のサンプル作成(ASPxScheduler)手順です。
データベースはオラクルを使用します。
「ASPxScheduler」のスケジュール情報はシーケンシャルな「ID」をキーにしています。
オラクルでは項目の型で「オートナンバー型」等のシーケンスを割り当て出来ません。
※「オラクル 12c」では対応している噂がありますが。。。現在構築しているオラクルは「オラクル 11g」なので出来ません。
ですので、「シーケンス」、「トリガー」を用意してスケジュール情報にシーケンシャルな「ID」を自動で割り付けていきます。
※疑似的な「オートナンバー型」を実現
<オラクル構成>
・テーブル2個(スケジュールマスタ、スケジュール情報)
・シーケンス1個(スケジュール情報のIDを管理)
・トリガー1個(スケジュール情報登録のID割り付けに使用)
<事前準備>
・オラクルで2テーブルを作成します。
【テーブル名】
スケジュールマスタ(管理対象名を管理)
スケジュール情報(スケジュール情報を管理)
【サンプルプログラム(SQL)】
1 2 3 4 5 6 7 8 |
CREATE TABLE SCHEDULE_MST ( ID NUMBER(10) NOT NULL , NAME VARCHAR2(255) , CONSTRAINT SCHEDULE_MST_PKC PRIMARY KEY (ID) ) ; COMMENT ON TABLE SCHEDULE_MST IS 'スケジュール情報テーブル'; COMMENT ON COLUMN SCHEDULE_MST.ID IS 'ID'; COMMENT ON COLUMN SCHEDULE_MST.NAME IS '名称'; |
【スケジュール情報(スケジュール情報を管理)】
【サンプルプログラム(SQL)】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
CREATE TABLE SCHEDULE_INFO ( ID NUMBER(10) NOT NULL , STARTDATE DATE , ENDDATE DATE , TYPE NUMBER(10) , SUBJECT VARCHAR2(50) , LOCATION VARCHAR2(50) , DESCRIPTION VARCHAR2(1000) , ALLDAY NUMBER(2) , STATUS NUMBER(10) , LABEL NUMBER(10) , RESOURCEID NUMBER(10) , RECURRENCEINFO VARCHAR2(1000) , REMINDERINFO VARCHAR2(1000) , CONSTRAINT SCHEDULE_INFO_PKC PRIMARY KEY (ID) ) ; COMMENT ON TABLE SCHEDULE_INFO IS 'スケジュール情報テーブル'; COMMENT ON COLUMN SCHEDULE_INFO.ID IS 'ID'; COMMENT ON COLUMN SCHEDULE_INFO.STARTDATE IS '開始日付'; COMMENT ON COLUMN SCHEDULE_INFO.ENDDATE IS '終了日付'; COMMENT ON COLUMN SCHEDULE_INFO.TYPE IS 'タイプ'; COMMENT ON COLUMN SCHEDULE_INFO.SUBJECT IS '件名'; COMMENT ON COLUMN SCHEDULE_INFO.LOCATION IS '場所'; COMMENT ON COLUMN SCHEDULE_INFO.DESCRIPTION IS '内容'; COMMENT ON COLUMN SCHEDULE_INFO.ALLDAY IS '終日フラグ'; COMMENT ON COLUMN SCHEDULE_INFO.STATUS IS '状況'; COMMENT ON COLUMN SCHEDULE_INFO.LABEL IS 'ラベル'; COMMENT ON COLUMN SCHEDULE_INFO.RESOURCEID IS '対象ID'; COMMENT ON COLUMN SCHEDULE_INFO.RECURRENCEINFO IS 'アラーム情報'; COMMENT ON COLUMN SCHEDULE_INFO.REMINDERINFO IS '繰り返し情報'; |
・オラクルでシーケンスを作成します。
【サンプルプログラム(SQL)】
1 |
CREATE SEQUENCE SCHEDULE_INFO_SEQ; |
・オラクルでトリガーを作成します。
【スケジュールトリガー(スケジュール情報登録のID割り付けに使用)】
【サンプルプログラム(SQL)】
1 2 3 4 5 6 7 |
CREATE OR REPLACE TRIGGER SCHEDULE_INFO_TRIGGER BEFORE INSERT ON SCHEDULE_INFO FOR EACH ROW BEGIN SELECT SCHEDULE_INFO_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL; END SCHEDULE_INFO_TRIGGER; |
それは各テストを行います。
【スケジュールシーケンス(スケジュール情報のIDを管理)】
「SELECT SCHEDULE_INFO_SEQ.NEXTVAL FROM DUAL;」を実行して結果を確認します。
無事連番のIDが帰ってきましたので成功です。
【スケジュールトリガー(スケジュール情報登録のID割り付けに使用)】
「INSERT INTO SCHEDULE_INFO(SUBJECT) VALUES(‘件名_テスト01′);」を実行して結果を確認します。
無事スケジュール情報の登録が出来て、「ID」項目も自動でシーケンスを割り付けできましたので成功です。
※「ID」が「2」になっているのは、上記「スケジュールシーケンス」のテストを行ったため