Настройка источника данных Crystal Report во время выполнения - PullRequest
6 голосов
/ 26 февраля 2009

При создании своего Crystal Report я, очевидно, настраивал соединение с базой данных и сервером, которое я использую для разработки.

Что я хочу сейчас сделать в своем приложении VB - это динамически установить базу данных и имя сервера для использования с отчетами. У меня есть эти значения в виде строк varServer и varDatabase.

Кто-нибудь знает, как это сделать?

Заранее спасибо.

P.S Я пробовал несколько онлайн-решений, но у меня проблемы с VB6.

Ответы [ 4 ]

4 голосов
/ 26 февраля 2009

Эта ссылка содержит всю информацию, которую вы хотите знать.

ОБНОВЛЕНИЕ: Вот минимальный рабочий пример для интегрированной аутентификации с SQL Server. Вы должны использовать ConnectionProperties объекта таблицы для установки параметров соединения.

Dim app As New CRAXDDRT.Application
Dim rpt As CRAXDDRT.Report
Dim tbl As CRAXDDRT.DatabaseTable
Dim tbls As CRAXDDRT.DatabaseTables

Set rpt = app.OpenReport("C:\report\repotest.rpt")

For Each tbl In rpt.Database.Tables
    tbl.ConnectionProperties.DeleteAll
    tbl.ConnectionProperties.Add "Provider", "SQLOLEDB"
    tbl.ConnectionProperties.Add "Data Source", "localhost"
    tbl.ConnectionProperties.Add "Initial Catalog", "testdb"
    tbl.ConnectionProperties.Add "Integrated Security", "True"   ' cut for sql authentication
    'tbl.ConnectionProperties.Add "User Id", "myuser"   ' add for sql authentication
    'tbl.ConnectionProperties.Add "Password", "mypass"  ' add for sql authentication
Next tbl

'This removes the schema from the Database Table's Location property.
Set tbls = rpt.Database.Tables
For Each tbl In tbls
    With tbl
        .Location = .Name
    End With
Next

'View the report
Viewer.ReportSource = rpt
Viewer.ViewReport
1 голос
/ 16 декабря 2010

Отличная работа! спасибо за код! Я немного изменил его, потому что эта часть не работала:

'View the report
Viewer.ReportSource = rpt
Viewer.ViewReport

Ошибка: не удалось найти объект

Итак, я сделал это так:

With Me.CRViewer91
    .ReportSource = rpt
    .ViewReport
End With
0 голосов
/ 09 мая 2011

Можно также установить поставщика отчета по умолчанию, добавив этот бит кода.

 Dim MyProvider As Object = logOnInfo.ConnectionInfo.LogonProperties.LookupNameValuePair("Provider")
            If IsNothing(MyProvider) = False Then
                MyProvider.Value = "SQLOLEDB"
            End If
0 голосов
/ 26 февраля 2009

Какую версию кристалла вы используете?

В мире .net я обычно передаю набор данных в отчет, как Эморо говорит: здесь .

Таким образом, ваше соединение устанавливается из кода, а не из кристалла, и может храниться в глобальном свойстве соединения. Тем не менее, это .net. Я думаю, что либо версия вашего кристалла должна иметь аналогичную функциональность, либо у Emoreau может быть пример того, как сделать это в VB6 в используемой вами версии.

Надеюсь, что вы начали.

...