Modificar Reportes Desde la Aplicacion.

23/07/2007 - 15:47 por Daniel R. Rossnagel | Informe spam
La idea es que cada usuario pueda modificar los reportes predeterminados que
se incluyen en el aplicativo final.
No encuentro la forma de se pueda realizar modificaciones a los reportes
desde la aplicacion que estoy generando,
Alguna idea?

Saludos DRR

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
24/07/2007 - 09:35 | Informe spam
¿Crystal Reports o Reporting Services?
Si es Crystal, la versión de la librería que viene con Visual Studio *NO*
permite la modificación de informes en ejecución; para eso debes comprar al
fabricante (BusinessObjects) la versión XI Developer del producto.

Salu2 - Octavio


"Daniel R. Rossnagel" wrote in message
news:
La idea es que cada usuario pueda modificar los reportes predeterminados
que se incluyen en el aplicativo final.
No encuentro la forma de se pueda realizar modificaciones a los reportes
desde la aplicacion que estoy generando,
Alguna idea?

Saludos DRR

Respuesta Responder a este mensaje
#2 Junior
24/07/2007 - 14:36 | Informe spam
¿Crystal Reports o Reporting Services?
Si es Crystal, la versión de la librería que viene con Visual Studio *NO*
permite la modificación de informes en ejecución; para eso debes comprar
al fabricante (BusinessObjects) la versión XI Developer del producto.

Salu2 - Octavio




Con Reporting Services, se puede?
Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
24/07/2007 - 17:36 | Informe spam
Hola Junior

Para generar dinámicamente en tiempo de ejecución un informe para Reporting
Services
debes establecer una referencia hacia el servicio web correspondiente a
Reporting Services,
el cual ofrece un conjunto de métodos para su manipulación por código.

Si has utilizado los nombres predeterminados en la instalación de Reporting,
la ruta de este servicio web será similar a la siguiente:

http://localhost/ReportServer/Repor...e2005.asmx

A continuación debes echar un vistazo a un archivo .rdl que ya tengas creado
y observar su estructura para poder generar por código uno acorde a tus
necesidades. Ya que el código rdl no es otra cosa que xml, puedes usar la
clase XmlTextWriter para generar este archivo. A continuación te adjunto un
bloque de código como ejemplo de lo que podría ser este proceso. Debes tener
en cuenta que tendrías que completarlo con la generación del resto de
etiquetas y atributos xml para el archivo, pero esto lo puedes ver fácilmente
en cualquier rdl que hayas creado anteriormente. El código está desarrollado
en VB, pero creo que lo podrás adaptar a C# sin mayores dificultades ;-).

'//////////////////////////////
Imports System.IO
Imports System.Xml
Imports System.Text
Imports MiProyecto.WSReportService
Imports System.Net
'
Dim oArchivoStream As FileStream = New
FileStream("c:\pruebasReporting\MiReport1.rdl", FileMode.CreateNew)
Dim oEscritorXML As XmlTextWriter = New XmlTextWriter(oArchivoStream,
Encoding.UTF8)
oEscritorXML.Formatting = Formatting.Indented

oEscritorXML.WriteProcessingInstruction("xml", "version=""1.0""
encoding=""utf-8""")
oEscritorXML.WriteStartElement("Report")
oEscritorXML.WriteAttributeString("xmlns",
"http://schemas.microsoft.com/sqlser...i...")

oEscritorXML.WriteElementString("Width", "10.50cm")
oEscritorXML.WriteElementString("PageWidth", "20cm")
oEscritorXML.WriteElementString("PageHeight", "28.5cm")

oEscritorXML.WriteStartElement("DataSources")
oEscritorXML.WriteStartElement("DataSource")
oEscritorXML.WriteAttributeString("Name", "dsNorthwind")
oEscritorXML.WriteStartElement("ConnectionProperties")
oEscritorXML.WriteElementString("DataProvider", "SQL")
oEscritorXML.WriteElementString("ConnectString", "Data
Source=localhost;Initial Catalog=Northwind")
oEscritorXML.WriteElementString("IntegratedSecurity", "true")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()

oEscritorXML.WriteStartElement("DataSets")
oEscritorXML.WriteStartElement("DataSet")
oEscritorXML.WriteAttributeString("Name", "dsDatos")
oEscritorXML.WriteStartElement("Fields")
oEscritorXML.WriteStartElement("Field")
oEscritorXML.WriteAttributeString("Name", "LastName")
oEscritorXML.WriteElementString("DataField", "LastName")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteStartElement("Field")
oEscritorXML.WriteAttributeString("Name", "FirstName")
oEscritorXML.WriteElementString("DataField", "FirstName")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteStartElement("Query")
oEscritorXML.WriteElementString("DataSourceName", "dsNorthwind")
oEscritorXML.WriteElementString("CommandType", "Text")
oEscritorXML.WriteElementString("CommandText", "SELECT LastName,FirstName
FROM Employees")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()

oEscritorXML.WriteStartElement("Body")
oEscritorXML.WriteElementString("Height", "1.85cm")
oEscritorXML.WriteStartElement("ReportItems")
oEscritorXML.WriteStartElement("Table")
oEscritorXML.WriteAttributeString("Name", "tblInforme")
oEscritorXML.WriteElementString("Top", "0.5cm")
oEscritorXML.WriteElementString("Left", "0.3cm")
oEscritorXML.WriteElementString("DataSetName", "dsDatos")
'
'
' volcar el buffer de escritura en el stream asociado
oEscritorXML.Flush()
oArchivoStream.Close()
oArchivoStream.Dispose()
oArchivoStream = Nothing
'//////////////////////////////

Por último abres el archivo .rdl y lo pasas a un array de bytes; instancias
un objeto del servicio web de Reporting Services y ejecutas su método
CreateReport(), pasándole como parámetro el array que contiene la definición
de tu informe, y si todo ha ido bien, ya podrías ver en la consola de SQL
Server 2005, en la parte correspondiente a Reporting tu nuevo informe.

'//////////////////////////////
oArchivoStream = New FileStream("c:\pruebasReporting\MiReport1.rdl",
FileMode.Open)
Dim aInforme() As Byte = New Byte(oArchivoStream.Length) {}
oArchivoStream.Read(aInforme, 0, oArchivoStream.Length)
oArchivoStream.Close()

Dim oWSReporting As ReportingService2005 = New ReportingService2005()
oWSReporting.Credentials = CredentialCache.DefaultCredentials

Dim aAvisos() As Warning
aAvisos = oWSReporting.CreateReport(Me.txtNombreInforme.Text,
"/ReportPropio", True, aInforme, Nothing)

If aAvisos IsNot Nothing Then
For Each oAviso As Warning In aAvisos
MessageBox.Show(oAviso.Message)
Next
End If
'//////////////////////////////

Y esto sería todo, espero que te sea de utilidad

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Junior" wrote:

> ¿Crystal Reports o Reporting Services?
> Si es Crystal, la versión de la librería que viene con Visual Studio *NO*
> permite la modificación de informes en ejecución; para eso debes comprar
> al fabricante (BusinessObjects) la versión XI Developer del producto.
>
> Salu2 - Octavio
>

Con Reporting Services, se puede?




Respuesta Responder a este mensaje
#4 Junior
25/07/2007 - 02:09 | Informe spam
Gracias, muy amable.
Lo voy a revisar.





"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Junior

Para generar dinámicamente en tiempo de ejecución un informe para
Reporting
Services
debes establecer una referencia hacia el servicio web correspondiente a
Reporting Services,
el cual ofrece un conjunto de métodos para su manipulación por código.

Si has utilizado los nombres predeterminados en la instalación de
Reporting,
la ruta de este servicio web será similar a la siguiente:

http://localhost/ReportServer/Repor...e2005.asmx

A continuación debes echar un vistazo a un archivo .rdl que ya tengas
creado
y observar su estructura para poder generar por código uno acorde a tus
necesidades. Ya que el código rdl no es otra cosa que xml, puedes usar la
clase XmlTextWriter para generar este archivo. A continuación te adjunto
un
bloque de código como ejemplo de lo que podría ser este proceso. Debes
tener
en cuenta que tendrías que completarlo con la generación del resto de
etiquetas y atributos xml para el archivo, pero esto lo puedes ver
fácilmente
en cualquier rdl que hayas creado anteriormente. El código está
desarrollado
en VB, pero creo que lo podrás adaptar a C# sin mayores dificultades ;-).

'//////////////////////////////
Imports System.IO
Imports System.Xml
Imports System.Text
Imports MiProyecto.WSReportService
Imports System.Net
'
Dim oArchivoStream As FileStream = New
FileStream("c:\pruebasReporting\MiReport1.rdl", FileMode.CreateNew)
Dim oEscritorXML As XmlTextWriter = New XmlTextWriter(oArchivoStream,
Encoding.UTF8)
oEscritorXML.Formatting = Formatting.Indented

oEscritorXML.WriteProcessingInstruction("xml", "version=""1.0""
encoding=""utf-8""")
oEscritorXML.WriteStartElement("Report")
oEscritorXML.WriteAttributeString("xmlns",
"http://schemas.microsoft.com/sqlser...i...")

oEscritorXML.WriteElementString("Width", "10.50cm")
oEscritorXML.WriteElementString("PageWidth", "20cm")
oEscritorXML.WriteElementString("PageHeight", "28.5cm")

oEscritorXML.WriteStartElement("DataSources")
oEscritorXML.WriteStartElement("DataSource")
oEscritorXML.WriteAttributeString("Name", "dsNorthwind")
oEscritorXML.WriteStartElement("ConnectionProperties")
oEscritorXML.WriteElementString("DataProvider", "SQL")
oEscritorXML.WriteElementString("ConnectString", "Data
Source=localhost;Initial Catalog=Northwind")
oEscritorXML.WriteElementString("IntegratedSecurity", "true")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()

oEscritorXML.WriteStartElement("DataSets")
oEscritorXML.WriteStartElement("DataSet")
oEscritorXML.WriteAttributeString("Name", "dsDatos")
oEscritorXML.WriteStartElement("Fields")
oEscritorXML.WriteStartElement("Field")
oEscritorXML.WriteAttributeString("Name", "LastName")
oEscritorXML.WriteElementString("DataField", "LastName")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteStartElement("Field")
oEscritorXML.WriteAttributeString("Name", "FirstName")
oEscritorXML.WriteElementString("DataField", "FirstName")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteStartElement("Query")
oEscritorXML.WriteElementString("DataSourceName", "dsNorthwind")
oEscritorXML.WriteElementString("CommandType", "Text")
oEscritorXML.WriteElementString("CommandText", "SELECT LastName,FirstName
FROM Employees")
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()
oEscritorXML.WriteEndElement()

oEscritorXML.WriteStartElement("Body")
oEscritorXML.WriteElementString("Height", "1.85cm")
oEscritorXML.WriteStartElement("ReportItems")
oEscritorXML.WriteStartElement("Table")
oEscritorXML.WriteAttributeString("Name", "tblInforme")
oEscritorXML.WriteElementString("Top", "0.5cm")
oEscritorXML.WriteElementString("Left", "0.3cm")
oEscritorXML.WriteElementString("DataSetName", "dsDatos")
'
'
' volcar el buffer de escritura en el stream asociado
oEscritorXML.Flush()
oArchivoStream.Close()
oArchivoStream.Dispose()
oArchivoStream = Nothing
'//////////////////////////////

Por último abres el archivo .rdl y lo pasas a un array de bytes;
instancias
un objeto del servicio web de Reporting Services y ejecutas su método
CreateReport(), pasándole como parámetro el array que contiene la
definición
de tu informe, y si todo ha ido bien, ya podrías ver en la consola de SQL
Server 2005, en la parte correspondiente a Reporting tu nuevo informe.

'//////////////////////////////
oArchivoStream = New FileStream("c:\pruebasReporting\MiReport1.rdl",
FileMode.Open)
Dim aInforme() As Byte = New Byte(oArchivoStream.Length) {}
oArchivoStream.Read(aInforme, 0, oArchivoStream.Length)
oArchivoStream.Close()

Dim oWSReporting As ReportingService2005 = New ReportingService2005()
oWSReporting.Credentials = CredentialCache.DefaultCredentials

Dim aAvisos() As Warning
aAvisos = oWSReporting.CreateReport(Me.txtNombreInforme.Text,
"/ReportPropio", True, aInforme, Nothing)

If aAvisos IsNot Nothing Then
For Each oAviso As Warning In aAvisos
MessageBox.Show(oAviso.Message)
Next
End If
'//////////////////////////////

Y esto sería todo, espero que te sea de utilidad

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Junior" wrote:

> ¿Crystal Reports o Reporting Services?
> Si es Crystal, la versión de la librería que viene con Visual Studio
> *NO*
> permite la modificación de informes en ejecución; para eso debes
> comprar
> al fabricante (BusinessObjects) la versión XI Developer del producto.
>
> Salu2 - Octavio
>

Con Reporting Services, se puede?




Respuesta Responder a este mensaje
#5 CrAsH-DMX
26/07/2007 - 03:28 | Informe spam
Generar el reporte en una hoja de exel y dejarsela al usuario para que haga
lo que quiera con ella no es mas facil ?????

Saludos

CrAsH-DMX

"Daniel R. Rossnagel" escribió en el mensaje
news:
La idea es que cada usuario pueda modificar los reportes predeterminados
que se incluyen en el aplicativo final.
No encuentro la forma de se pueda realizar modificaciones a los reportes
desde la aplicacion que estoy generando,
Alguna idea?

Saludos DRR

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida