フロント(デルファイ5)エンドが接続する1つのユーザー名を持つデータベースを今持っています。以下を使用してレポートを呼び出します。
with tcrpe.create(self) do
try
report_name := 'CrystalLotRecapSummary.rpt';
if fileexists(dmposting.tws_drive+'\tws\special\'+report_name) then
ReportName := dmposting.tws_drive+'\tws\special\'+Report_Name
else
ReportName := dmposting.tws_drive+'\tws\reports\harvest\'+Report_Name;
WindowButtonBar.PrintSetupBtn := true;
Paramfields.retrieve;
ParamFields[0].Value := cmbCropYear.text; // IN OLD REPORT
ParamFields[1].Value := 'ALL';
ParamFields[2].Value := real_to_str(unitfactor,0); // IN OLD REPORT
ParamFields[3].Value := cmbUnit.text; // IN OLD REPORT
ConnectMethod := useConnect;
Connect.Retrieve;
Connect.Password := 'PASSWORD';
Output := toWindow;
Execute;
finally
CloseJob;
end;
end; // PRINT SUMMARY BY WAREHOUSE
これはうまくいきます。問題は、これから 2 つのスキーマ (sysdba と sysdba2) を作成しようとしていることです。
現在、Crystal Reports クエリは次のようになっています。
SELECT
LOT_RECAP."GROWING_YEAR", LOT_RECAP."GREEN", LOT_RECAP."ADJUSTED", LOT_RECAP."SHIPPED",
LOT_RECAP."WAREHOUSE_ID", LOT_RECAP."REMAINING", LOT_RECAP."LOT_ID",
LOT_RECAP."FINISH_DRYING", LOT_RECAP."NAME", LOT_RECAP."STATUS",
LOT_RECAP."COMMODITY_ID",
LOT_RECAP."VARIETY_ID", LOT_RECAP."PRODUCER_ID", LOT_RECAP."LR_AVMOISTURE",
LOT_RECAP."PROJECTED", LOT_RECAP."NOTE", LOT_RECAP."MASTER_ID",
LOT_RECAP."VARIETY_TYPE",
LOT_RECAP."CROP", LOT_RECAP."STORAGE_ONLY"
FROM
"SYSDBA"."LOT_RECAP" LOT_RECAP
WHERE
LOT_RECAP."GROWING_YEAR" = 2009 AND
LOT_RECAP."COMMODITY_ID" = 'RICE' AND
LOT_RECAP."STORAGE_ONLY" = 'FALSE'
ORDER BY
LOT_RECAP."LOT_ID" ASC
ユーザー ID が sysdba である場合、テーブルは sysdba.lot_recap であり、ユーザー ID が sysdba2 である場合、テーブル名は sysdba2.lot_recap であるかどうかをレポートで判断する方法を見つける必要があります。ところで、私は約 300 件のレポートに対してこれを行う必要があります。どんな助けでも大歓迎です。十分な情報を提供していない場合はお知らせください