作為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));