Accesso a database protetti
La procedura per accedere a database protetti tramite Crystal Reports per Visual Studio .NET, è diversa per i Web Forms e per i Windows Forms. In un Windows Forms, viene visualizzata una finestra di dialogo in cui l'utente viene invitato a immettere il nome utente e la password. In un Web Forms, tuttavia, è necessario progettare un modulo che consente il recupero di tali informazioni dall'utente. In entrambi le situazioni è possibile utilizzare del codice per specificare il nome utente e la password, offrendo quindi lo stesso livello di sicurezza a tutti gli utenti dell'applicazione.
Impostazione dei parametri di accesso al database
Nel seguente esempio viene illustrato come passare i parametri di accesso alle tabelle di un report. Nell'esempio, è stata utilizzata una connessione a un database SQL Server protetto.
- Iniziare un nuovo progetto.
- Aggiungere al modulo un controllo Button e quattro controlli Textbox.
- Assegnare un nome ai quattro controlli TextBox serverNameTxt, dbNameTxt, userNameTxt, e passwordTxt.
- Fare doppio clic sul controllo Button per specificare il codice dell'evento Click. A seconda del linguaggio utilizzato, inserire il codice appropriato.
[Visual Basic]
' Dichiara le variabili richieste.
Dim logOnInfo As New TableLogOnInfo()
Dim i As Integer
' Esegue un ciclo attraverso ciascuna tabella del report.
For i = 0 To report.Database.Tables.Count - 1
' Imposta le informazioni di connessione per la tabella corrente.
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#]
// Dichiara le variabili richieste.
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// Esegue un ciclo attraverso ciascuna tabella del report.
for (i=0;i == Report.Database.Tables.Count - 1;i++)
{
// Imposta le informazioni di connessione per la tabella corrente.
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++]
// Dichiara le variabili richieste.
TableLogOnInfo* logOnInfo = new TableLogOnInfo ();
int i = 0;
// Esegue un ciclo attraverso ciascuna tabella del report.
for (i=0;i == Report->Database->Tables->Count - 1;i++)
{
// Imposta le informazioni di connessione per la tabella corrente.
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#]
// Dichiara le variabili richieste.
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// Esegue un ciclo attraverso ciascuna tabella del report.
for (i=0;i == Report.get_Database().get_Tables().get_Count() - 1;i++)
{
// Imposta le informazioni di connessione per la tabella corrente.
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);
}
Nota Per i database per PC protetti con password, quali Microsoft Access e Paradox, viene utilizzato lo stesso metodo, con l'eccezione che LogOnInfo.ServerName e LogOnInfo.DatabaseName sono lasciati vuoti.