程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 讓ReportBuilder徹底支持Oracle

讓ReportBuilder徹底支持Oracle

編輯:Delphi
  作為Delphi下非常好用的ReportBuilder,一定是程序員們比較愛使用的報表工具之一。只是不知道是Delphi程序員一定不會用Oracle呢,還是用ReportBuilder只是在自己的程序裡提供報表,而不會提供報表工具,所以如果你使用過ReportBuilder的EnderUser例子的話,就會知道,在使用Oracle數據庫(ADO方式)的情況下,問題很多,根本無法使用。
  這個問題出在ReportBuilder身上,根本與你的程序無關。需要進行的修改如下:
  daAdo.pas(這個怨Oracle)
  ppRptExp.pas
  PPTmplat.pas
  為了盡量少修改源碼,建議定義開關值後再進行修改。如:
  {$IFDEF ENABLE_RB_ORA}
  ...
  {$ENDIF}
  准備工作:
  Oracle中需要建立表,因為Oracle沒有自增長類型,需要執行如下SQL語句:
  CREATE TABLE "FOLDER" (
  "FOLDERID" NUMBER(10) NOT NULL,
  "NAME" VARCHAR2(60) NOT NULL,
  "PARENTID" NUMBER(10) NOT NULL);
  CREATE SEQUENCE "RBFOLDER" INCREMENT BY 1;
  CREATE OR REPLACE TRIGGER "GEN_FOLDERID" BEFORE
  INSERT ON "FOLDER"
  FOR EACH ROW WHEN(NEW.FOLDERID IS NULL) BEGIN
  SELECT "RBFOLDER".NEXTVAL INTO :NEW.FOLDERID FROM DUAL;
  END;
  
  CREATE TABLE "ITEM"(
  "ITEMID" NUMBER(10) NOT NULL,
  "SIZE0" NUMBER(10),
  "FOLDERID" NUMBER(10) NOT NULL,
  "NAME" VARCHAR2(60) NOT NULL,
  "ITEMTYPE" NUMBER(10),
  "MODIFIED" DATE,
  "DELETED" CHAR(1) DEFAULT 'F',
  "TEMPLATE" LONG RAW);
  CREATE SEQUENCE "RBITEM" INCREMENT BY 1;
  CREATE OR REPLACE TRIGGER "GEN_ITEMID" BEFORE
  INSERT ON "ITEM"
  FOR EACH ROW WHEN(NEW.ITEMID IS NULL) BEGIN
  SELECT "RBITEM".NEXTVAL INTO :NEW.ITEMID FROM DUAL;
  END;
  
  CREATE TABLE "TABLE" (
  "TABLENAME" VARCHAR2(60) NOT NULL,
  "TABLEALIAS" VARCHAR2(60) NOT NULL);
  
  CREATE TABLE "FIELD" (
  "TABLENAME" VARCHAR2(60) NOT NULL,
  "FIELDNAME" VARCHAR2(60) NOT NULL,
  "FIELDALIAS" VARCHAR2(60) NOT NULL,
  "SELECTABLE" CHAR(1) DEFAULT 'T',
  "SEARCHABLE" CHAR(1) DEFAULT 'T',
  "SORTABLE" CHAR(1) DEFAULT 'T',
  "DATATYPE" VARCHAR2(60),
  "AUTOSEARCH" CHAR(1) DEFAULT 'T',
  "MANDATORY" CHAR(1) DEFAULT 'F');
  
  CREATE TABLE RBJOIN (
  TABLENAME1 VARCHAR2(60),
  TABLENAME2 VARCHAR2(60),
  JOINTYPE VARCHAR2(60),
  FIELDNAMES1 VARCHAR2(255),
  FIELDNAMES2 VARCHAR2(255),
  OperaTORS VARCHAR2(60));
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved