共用方式為


存取安全資料庫

Web Form 和 Windows Form 使用 Crystal Reports for Visual Studio .NET 存取安全資料庫的程序並不相同。在 Windows Form 中,會自動出現對話方塊自動提示使用者輸入其使用者名稱和密碼。但在 Web Form 中,您必須設計從使用者處擷取這些資訊的表單。不論是哪一種情況,您都可以使用程式碼指定使用者名稱和密碼,提供相同的安全性層級給您應用程式的所有使用者。

設定資料庫登入參數

下列範例說明如何傳遞登入參數至報表的資料表。在這個範例中,將使用安全的 SQL Server 資料庫連接。

  1. 請開始新的專案。

  2. 加入 Button 和四個 Textbox 控制項至表單。

  3. 將 Textbox 控制項命名為 serverNameTxt、dbNameTxt、userNameTxt 和 passwordTxt。

  4. 按兩下 Button 控制項以指定 Click 事件的程式碼。請根據您使用的語言,插入適當的程式碼。

    [Visual Basic]

    ' 宣告必要的變數。
    Dim logOnInfo As New TableLogOnInfo()
    Dim i As Integer
    
    ' 在報表的所有資料表中進行迴圈。
    For i = 0 To report.Database.Tables.Count - 1
    ' 設定目前資料表的連接資訊。
       logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text
       logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text
       logOnInfo.ConnectionInfo.UserID = userNameTxt.Text
       logOnInfo.ConnectionInfo.Password = passwordTxt.Text
       report.Database.Tables.Item(i).ApplyLogOnInfo(logOnInfo)
    Next i
    

    [C#]

    // 宣告必要的變數。
    TableLogOnInfo logOnInfo = new TableLogOnInfo ();
    int i = 0;
    
    // 在報表的所有資料表中進行迴圈。
    for (i=0;i == Report.Database.Tables.Count - 1;i++)
    {
    // 設定目前資料表的連接資訊。
       logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text;
       logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;
       logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;
       logOnInfo.ConnectionInfo.Password = passwordTxt.Text;
       Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
    }
    

    [C++]

    // 宣告必要的變數。
    TableLogOnInfo* logOnInfo = new TableLogOnInfo ();
    int i = 0;
    
    // 在報表的所有資料表中進行迴圈。
    for (i=0;i == Report->Database->Tables->Count - 1;i++)
    {
    // 設定目前資料表的連接資訊。
    logOnInfo->ConnectionInfo->ServerName = serverNameTxt->Text;
    logOnInfo->ConnectionInfo->DatabaseName = dbNameTxt->Text;
    logOnInfo->ConnectionInfo->UserID = userNameTxt->Text;
    logOnInfo->ConnectionInfo->Password = passwordTxt->Text;
    Report->Database->Tables->Item [i]->ApplyLogOnInfo (logOnInfo);
    }
    

    [VJ#]

    // 宣告必要的變數。
    TableLogOnInfo logOnInfo = new TableLogOnInfo ();
    int i = 0;
    
    // 在報表的所有資料表中進行迴圈。
    for (i=0;i == Report.get_Database().get_Tables().get_Count() - 1;i++)
    {
    // 設定目前資料表的連接資訊。
       logOnInfo.get_ConnectionInfo().set_ServerName(serverNameTxt.get_Text());
       logOnInfo.get_ConnectionInfo().set_DatabaseName(dbNameTxt.get_Text());
       logOnInfo.get_ConnectionInfo().set_UserID(userNameTxt.get_Text());
       logOnInfo.get_ConnectionInfo().set_Password(passwordTxt.get_Text());
       Report.get_Database().get_Tables().get_Item(i).ApplyLogOnInfo (logOnInfo);
    }
    

    注意   如果是密碼保護的 PC 資料庫,如 Microsoft Access 和 Paradox,請使用相同的方法,但 LogOnInfo.ServerNameLogOnInfo.DatabaseName 必須留白。

請參閱

使用資料