June 2007 - Artículos
Pues eso, que estaba yo viendo mis rss`s cuando me encontré con una noticia del guille diciendo el nuevo codename de Visual Basic. Este lo sacó del blog de Eladio Rincón. En fin, veanlo ustedes mismos, jejeje. Ahí os dejo el enlace:
http://blogs.solidq.com/ES/erincon/Lists/Posts/Post.aspx?ID=38
Un Saludo
Hace unos cuantos de dias, estaba yo con mi aplicación de informes. Fui a imprimir para ver que tal quedaba impreso y me dio un error ya conocido por mí. Este error no es ni nada más y ni nada menos que un reinicio de la máquina cuando esta mandando las páginas a la impresora.
Esto me había pasado en alguna ocasión, pero al imprimir de nuevo no fallaba o lo hacía varias veces seguidas, jeje. Por cuestiones de tiempo, lo he dejado pasar hasta que me dio por investigar un poco acerca del tema. Esto sucede en algunos controladores de impresoras(según información de microsoft, más abajo os dejo el enlace a ella) y se soluciona con un parchecito.
La verdad, es que me alivia saberlo, porque...¿que pasa si le enseñas unos informes a tu cliente y de repente le reinicias la máquina?¿y si casualmente esta es un servidor donde está el directorio activo? [:S], no quiero ni pensarlo.
Aquí os dejo dos enlaces, uno donde viene la información del error en concreto y otro para errores generales relacionados. En el primer enlace viene para descargar dos parches, uno para Windows XP y otra para Windows 2000(SP4). Lo que ya no sé, si para Windows 2003 no existe porque ya está solucionado, porque aún no se probó que de ese error o simplemente que no lo hayan sacado todavía.
Enlaces:
Descripción del problema y parche:
http://support.microsoft.com/kb/935843/es
Errores generales relacionados:
http://support.microsoft.com/kb/137539/
Un Saludo
Hace unos cuantos post ya, escribí uno que explicaba que archivo debíamos intalar, cuando queríamos que nuestro cliente viera un informe desde el ReportViewer. Este consistía en descargar un archivo e instalarlo en la máquina de nuestro cliente. Pues bien, ahora ha salido(ya hace unos meses [:P]) el SP1 de estas dll`s . Este nuevo ejecutable se divide en dos, uno para actualizar al que ya instalamos anteriormente y otro por si no lo hicimos, instalarlo todo.
Aquí os dejo los enlaces y la información general acerca del ReportViewer:
Cuando tenemos listo nuestro informe, tenemos varias formas de visualizarlo. Una de ellas es desde el ReportViewer, el cual tiene dos características para la seguridad, que tendremos que tener en cuenta si queremos que se ejecute nuestro informe. Estas son:
Configuración de la cuenta de usuario. Si queremos acceder a un informe que está en un servidor, al acceder a este siempre nos pide un usuario y password (a menos que tengamos activado recordar contraseña). Cuando lo hacemos desde el ReportViewer, también pasa lo mismo y no queda bien tener que darle al usuario la opción de insertar usuario y password cada vez que ejecute un informe o simplemente que le aparezca un error. Para ello podemos configurarlo desde el ReportViewer en tiempo de ejecución de la siguiente forma:
reportviewer1.ServerReport.ReportServerCredentials.NetworkCredentials = new System.Net.NetworkCredential("Usuario", "passw","dominio[esto es opcional]")
Para ello, este usuario debe de tener los permisos necesarios para el informe en concreto al que va acceder. Configuración de las datasources de nuestro informe. Cuando pretendemos acceder desde nuestro informe que está alojado en un servidor, a una fuente de datos y no tenemos guardada la contraseña (algo lógico) podemos asignárselas nosotros en tiempo de ejecución desde el ReportViewer una vez cargado este. La forma es la siguiente:
// Creo una variable de tipo colección de DataSources para asígnarle luego a cada una las credenciales.
ReportDataSourceInfoCollection coleccDS;
// Me traigo las fuente de datos del Visor de Informes.
//Nota: para que me traiga algo, este debe de tener cargado un informe.
coleccDS = this.ReportViewer1.ServerReport.GetDataSources();
if (coleccDS != null)
{
// Paso de credenciales.
DataSourceCredentials cred = new DataSourceCredentials();
for (int i = 0; i < coleccDS.Count; i++)
{
// Nombre de la fuente de datos(DataSource).
cred.Name = coleccDS[ i ].Name.ToString();
// Usuario con la cuenta con la interactuará con el informe.
cred.UserId = this.Usuario
// Password.
cred.Password = this.Password;
// Paso las credenciales al visor de informes.
this. ReportViewer1.ServerReport.SetDataSourceCredentials(new DataSourceCredentials[1] { cred });
}
}
Básicamente lo que hago es guardar en una colección, las fuentes de datos y luego a estas les paso el nombre del DataSource, el UserId y el Password. Despues le paso al ReportViewer las credenciales y listo.
Espero que os sirva
Un Saludo