- - PR -
VB6.0でのクリスタルレポートV10の実装について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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のログイン画面が表示され、パスワード入力を要求されます。 何か手順が抜けているのでしょうか? ご存知の方が居られましたら、教えて下さい。 宜しくお願いします。 |
|
投稿日時: 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を利用しています。 |
|
投稿日時: 2004-10-12 13:10
GTG様
有難う御座います。 教えて頂いた方法で接続する事ができました。 しかし・・・ V10を購入してもV9のマニュアルしか添付されてなくて しかもサンプルのプログラムが動作しないってのは こまったもんですね。 |
|
投稿日時: 2004-10-12 13:34
ZingBay様へ、
うまく動作してよかったですね。 また、どのサンプルが動作しないのかわかりませんが、製品付属のサンプルg経験上、 |
|
投稿日時: 2004-10-12 13:51
ZingBay様へ、
書き込み中に送信してしまいました。もう一度書き直します。 失礼いたしました。 うまく動作してよかったですね。 また、どのサンプルが動作しないのかわかりませんが、 ひとつのサンプルで、変数宣言が間違っていて期待する動作にならないものがありました。 でも、エラー等発生することなく、レポートは表示できると思います。 マニュアルは、バージョンの記述が違っていますのか、旧バージョンのものをそのまま使っているのかわかりませんが、内容は、旧バージョンから特に大きな変更がないのでプログラミングする上で特に問題になったことはありませんでした。 昔のOCXからだと混乱するかもしれませんが・・外資の製品は、こんなもんだと思って使っています。 |
1
