Obtener acceso a bases de datos seguras
El procedimiento para obtener acceso a bases de datos seguras mediante Crystal Reports para Visual Studio .NET difiere entre Web Forms y Windows Forms. En Windows Form, un cuadro de diálogo le pide automáticamente al usuario que escriba su nombre de usuario y su contraseña. En Web Form, sin embargo, debe diseñar un formulario que recupere esta información del usuario. En ambos casos, puede utilizar código para especificar el nombre de usuario y la contraseña, otorgando así el mismo nivel de seguridad a todos los usuarios de la aplicación.
Establecer los parámetros de conexión a la base de datos
El siguiente ejemplo muestra el procedimiento para pasar los parámetros de conexión a las tablas de un informe. Para este ejemplo, se utiliza una conexión a una base de datos segura de SQL Server.
- Inicie un nuevo proyecto.
- Agregue un control Button y cuatro controles Textbox al formulario.
- Asigne los nombres serverNameTxt, dbNameTxt, userNameTxt y passwordTxt a los controles TextBox.
- Haga doble clic en el control Button para especificar el código del evento Click. En función del lenguaje que esté utilizando, inserte el adecuado.
[Visual Basic]
' Declarar las variables necesarias.
Dim logOnInfo As New TableLogOnInfo()
Dim i As Integer
' Realizar ciclos en todas las tablas del informe.
For i = 0 To report.Database.Tables.Count - 1
' Establecer la información de conexión de la tabla actual.
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#]
// Declarar las variables necesarias.
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// Realizar ciclos en todas las tablas del informe.
for (i=0;i == Report.Database.Tables.Count - 1;i++)
{
// Establecer la información de conexión de la tabla actual.
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++]
// Declarar las variables necesarias.
TableLogOnInfo* logOnInfo = new TableLogOnInfo ();
int i = 0;
// Realizar ciclos en todas las tablas del informe.
for (i=0;i == Report->Database->Tables->Count - 1;i++)
{
// Establecer la información de conexión de la tabla actual.
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#]
// Declarar las variables necesarias.
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// Realizar ciclos en todas las tablas del informe.
for (i=0;i == Report.get_Database().get_Tables().get_Count() - 1;i++)
{
// Establecer la información de conexión de la tabla actual.
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 Para bases de datos de PC protegidas por contraseña, como Microsoft Access y Paradox, se utiliza el mismo método, salvo que se dejan en blanco LogOnInfo.ServerName y LogOnInfo.DatabaseName.