質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Crystal Reports

Crystal Reportsとは、幅広いデータソースを基にレポート、帳票を作成するためのアプリケーションである。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2701閲覧

Crystal Reports の接続先DBを変更したい

gosaro

総合スコア24

Crystal Reports

Crystal Reportsとは、幅広いデータソースを基にレポート、帳票を作成するためのアプリケーションである。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2022/12/07 08:00

前提

VB.NET で Crystal Reports を使用したシステムの改修をすることになりました。
Crystal Reports は未経験で、システム開発当時の担当者もいない状況です。

Crystal Reports は客先のオンプレミスの SQL Server に接続する設定になっていますが、私の開発環境からは接続できません。

検索しても新規にレポートを作る手順の説明ばかりで、既存のレポートの接続先を変更する情報が見つかりません。

実現したいこと

レポートデザイナを開き、フィールドエクスプローラのデータベースフィールドからデータベースエキスパートを開いた際、選択したテーブルにオンプレミスのサーバー名とインスタンス名が表示されていますが、さしあたりこれを開発環境の (localdb)\MSSQLLocalDB にしたいです。

最終的にはVB側で接続先を指定したいです。

VB側の改修は多少複雑になっても構いませんが、最低限レポートのデザインは維持したいです。

試したこと

「選択したテーブル」からオンプレミスの設定を削除する。
→オンプレミスのデータを参照するコントロールがすべて削除された。

「選択したテーブル」に (localdb)\MSSQLLocalDB を追加してコントロールの参照先の変更を試みる。
→該当するプロパティが見つからない。

補足情報(FW/ツールのバージョンなど)

Visual Studio 2017 Community
SAP Crystal Reports for Visual Studio (SP32) installation package for Microsoft Visual Studio IDE (VS 2019 and below)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KOZ6.0

2022/12/07 08:09

「Crystal Reports データソース変更」で検索したら、参考になりそうな記事がいくらでも出てくるんですが・・・
gosaro

2022/12/07 08:50

できました。ありがとうございます。 データソースというキーワードが思いつきませんでした…
guest

回答1

0

ベストアンサー

レポートの接続先をVBで変更するためのコードを記載しておきます。
大昔に作ったものなので、今も同じように動くかどうかわかりませんが、大筋はかわっていないと思います。

VB

1Imports CrystalDecisions.Shared 2Imports CrystalDecisions.CrystalReports.Engine 3 4Module Module1 5 6 Sub Main() 7 Using report As New ReportDocument() 8 report.Load("レポート名.rpt") 9 SetLogonInfo(report, "サーバー名", "データベース名", "ユーザ名", "パスワード") 10 report.ReadRecords() 11 If report.HasRecords Then 12 report.PrintToPrinter(1, False, 0, 0) 13 End If 14 End Using 15 End Sub 16 17 Private Sub SetLogonInfo(report As ReportDocument, 18 server As String, database As String, 19 user As String, password As String) 20 If Not report.IsSubreport Then 21 For Each subReport As ReportDocument In report.Subreports 22 SetLogonInfo(subReport, server, database, user, password) 23 Next 24 End If 25 For Each table As Table In report.Database.Tables 26 Dim logonInfo As TableLogOnInfo = table.LogOnInfo 27 With logonInfo.ConnectionInfo 28 .ServerName = server 29 .DatabaseName = database 30 .UserID = user 31 .Password = password 32 End With 33 Dim tableName As String = logonInfo.TableName 34 Dim pos As Integer = tableName.IndexOf(".") 35 If pos >= 0 Then 36 tableName = user & "." & tableName.Substring(pos + 1) 37 logonInfo.TableName = tableName 38 End If 39 table.ApplyLogOnInfo(logonInfo) 40 table.Location = tableName 41 Next 42 End Sub 43 44End Module

投稿2022/12/07 09:27

KOZ6.0

総合スコア2628

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問