- PR -

VB6.0でのクリスタルレポートV10の実装について

1
投稿者投稿内容
ZingBay
常連さん
会議室デビュー日: 2004/02/16
投稿数: 27
お住まい・勤務地: 古の奈良
投稿日時: 2004-10-08 11:18
皆さんこんにちは。
クリスタルレポート(以降、CRと標記します)V10について
教えて頂きたい事があります。

5年程前に、VB4.0 + CR6.x (?) + ORACLE 7.3にて構築したシステムを
VB6.0 + CR10.0 + ORACLE9.2に変更しようとしています。

この内、VB6.0からCR10を起動するやり方が見つからず、困っております。
移行前の資産では、画面上にCRのコントロールを貼り付けて
プレビューまたは直接プリンタへ出力しています。

CR10ではVBから利用できるOCXがサポートされていない様なので
ヘルプに添付されているサンプルプログラムを元に変更手順を洗い出しているのですが
ODBCのパスワード要求画面が表示されてしまい、内部処理でORACLEへ接続する事ができません。

コード内容は以下の様なものです。

Dim w_Application As New CRAXDDRT.Application
Dim m_Application As New CRAXDDRT.Application
Dim m_Report As CRAXDDRT.Report
....

Private Sub cmdOpen_Click()
CommonDialog1.CancelError = True
On Error GoTo errHandler
' [ ファイルを開く] ダイアログ ボックスを表示します。
CommonDialog1.ShowOpen
' レポート オブジェクトに nothing を設定します。
Set m_Report = Nothing
' 選択されたレポートを開きます。
Call m_Application.logonserver("C:\Program Files\Common Files\Crystal Decisions\2.5\bin\oracle", _
"AAAA", "BBBB", "CCCC", "DDDD")

Set m_Report = m_Application.OpenReport(CommonDialog1.FileName, 1)

' DisplayReport を呼び出し、レポートを Embeddable Designer および
' Crystal Report Viewer に設定します。
Call DisplayReport
<この時点でODBCへのログイン画面が表示されます>

"AAAA", "BBBB", "CCCC", "DDDD"については、接続文字列として正しい内容を設定しているのですが
ODBCのログイン画面が表示され、パスワード入力を要求されます。

何か手順が抜けているのでしょうか?
ご存知の方が居られましたら、教えて下さい。
宜しくお願いします。

GTG
常連さん
会議室デビュー日: 2004/08/26
投稿数: 43
投稿日時: 2004-10-12 11:20
ZingBay様へ、

以下のコードで試してみてください。
Dim CRApp As New CRAXDRT.Application
Dim Report As CRAXDRT.Report
Dim ConnectProperty As CRAXDRT.ConnectionProperty

Set Report = CRApp.OpenReport(App.Path & "\Report1.rpt",1)
Report.DiscardSavedData

Dim i As Integer
For i = 1 To Report.Database.Tables.Count
'ODBCの場合
Set ConnectProperty = Report.Database.Tables.Item(i).ConnectionProperties.Item("DSN")
ConnectProperty.Value = "ODBC データソース名"
'直接接続の場合
Set ConnectProperty = Report.Database.Tables.Item(i).ConnectionProperties.Item("Server")
ConnectProperty.Value = "Oracle サービス名"
Set ConnectProperty = Report.Database.Tables.Item(i).ConnectionProperties.Item("User Id")
ConnectProperty.Value ="ユーザー名"
Set ConnectProperty = Report.Database.Tables.Item(i).ConnectionProperties.Item("Password")
ConnectProperty.Value = "パスワード"
Next i

'レポート表示
CrystalActiveXReportViewer1.ReportSource = Report
CrystalActiveXReportViewer1.ViewReport

印刷の場合、Report.PrintOut False と記述します。
上記のコードは、ActiveXビューアでレポートを表示しています。
そのため、VBフォームにはActiveXビューアのコントロールを貼り付けます。
CRAXDDRTとCRAXDRTは、同じ機能ですが、上記のコードでは、CRAXDRTを利用しています。
ZingBay
常連さん
会議室デビュー日: 2004/02/16
投稿数: 27
お住まい・勤務地: 古の奈良
投稿日時: 2004-10-12 13:10
GTG様

有難う御座います。
教えて頂いた方法で接続する事ができました。

しかし・・・
V10を購入してもV9のマニュアルしか添付されてなくて
しかもサンプルのプログラムが動作しないってのは
こまったもんですね。
GTG
常連さん
会議室デビュー日: 2004/08/26
投稿数: 43
投稿日時: 2004-10-12 13:34
ZingBay様へ、

うまく動作してよかったですね。
また、どのサンプルが動作しないのかわかりませんが、製品付属のサンプルg経験上、
GTG
常連さん
会議室デビュー日: 2004/08/26
投稿数: 43
投稿日時: 2004-10-12 13:51
ZingBay様へ、

書き込み中に送信してしまいました。もう一度書き直します。
失礼いたしました。

うまく動作してよかったですね。
また、どのサンプルが動作しないのかわかりませんが、
ひとつのサンプルで、変数宣言が間違っていて期待する動作にならないものがありました。
でも、エラー等発生することなく、レポートは表示できると思います。
マニュアルは、バージョンの記述が違っていますのか、旧バージョンのものをそのまま使っているのかわかりませんが、内容は、旧バージョンから特に大きな変更がないのでプログラミングする上で特に問題になったことはありませんでした。
昔のOCXからだと混乱するかもしれませんが・・外資の製品は、こんなもんだと思って使っています。
1

スキルアップ/キャリアアップ(JOB@IT)