canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  136

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
 

Retroceder   Foro > Canal Visual Basic > Crystal Reports
 
LinkBack Herramientas Buscar en Tema Desplegado
  #1 (permalink)  
Antiguo 22-Nov-2009, 14:39
Junior Member
Iniciad@
 
Fecha de Ingreso: 22-November-2009
Mensajes: 4
Unhappy ayuda con un informe rpt

Hola a todos:
soy muy nueva en el mundo de .net e informes .rpt
necesito ayuda, no sé si se puede realizar
os cuento. Tengo una tabla administrador, una tabla cliente (relacionado con administrador) y una tabla futurocliente (también relacionado con administrador) me gustaría sacar en el mismo informe cada administrador en la cabecera y debajo todos sus clientes y sus futurosclientes, pero no me deja hacerlo: si escribo dos section, lo que hace es duplicarme los datos (pone todos los clientes con todos los posiblesclientes, si tengo 3 clientes y 5 futurosclientes, en lugar de sacarme el listado con los 8, me saca 15!!)
el group header lo tengo con administrador (ordenado por apellidos), y dentro tengo un section details, pero no sé donde poner los datos para que no me duplique
espero haberme explicado
por favor, necesito ayuda... tengo que entregar esta parte en breve y estoy desesperada!!
gracias
saludos
ANA
Responder Citando
  #2 (permalink)  
Antiguo 23-Nov-2009, 16:11
Avatar de josel.vi
Senior Member
Veteran@
 
Fecha de Ingreso: 31-August-2009
Ubicación: Houston, TX, USA
Mensajes: 732
Smile

Saludos:

Se dan DOS casos:
1)Asumiendo que tienes una sola tabla con todos los datos, lo que debe hacer es lo siguiente:

En el reporte, crear un Group Name Field (Campo de Grupo), el cual tendra asociado el campo de Administrador. Este lo colocas de encabezado.

Despues, en la seccion de Datalle, colocas los clientes y el reporte te seccionara (dividira) por cada administrador, los clientes asociados.

2) Si tienes varias tablas, debes tener creadas las relaciones entre ellas en el DataSet, y ver que sean consistentes. Aqui solo colocas los campos de la tabla de Administradores en la cabecera (Head) y la tabla de los clientes en el detalle.

Me parece a mi que lo que esta pasando con tu reporte es que no tienes definidas las relaciones, por ello te duplica la informacion.

Si necesitas mas ayuda, postea el codigo, y con gusto te ayudaremos.

Espero te sirva.



JOSE LUIS.
__________________
Exodo 20:1-17 ----> Dios NO los llamo LAS DIEZ RECOMENDACIONES.
Responder Citando
  #3 (permalink)  
Antiguo 24-Nov-2009, 14:47
Junior Member
Iniciad@
 
Fecha de Ingreso: 22-November-2009
Mensajes: 4
Predeterminado

Hola:
muchas gracias por la información...
los clientes están en una tabla, y los futuros clientes están en otra...
ups... te paso el código... espero que sea éste el que me pides... porque sé que tengo varios, que unos se llaman a otros y ya no estoy muy segura de cuál es...
data set? aaaaains que no me suena...
como veis, estoy muy perdida...

a ver, este código por un lado... es el que se llama cuando elijo el filtro (cp del administrador, etc...)
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()

Dim CrRep As New InfClientesyFuturosClientes
CrystalReportViewer1.ReportSource = CrRep

' Parche Service Pack 2 Solucion 1

Dim loginfo As CrystalDecisions.Shared.ConnectionInfo

loginfo = New CrystalDecisions.Shared.ConnectionInfo
loginfo.ServerName = "ANA1"
loginfo.DatabaseName = "GTGServicios"
loginfo.UserID = "sa"
loginfo.Password = ""

Dim crtableLogoninfos As New TableLogOnInfos
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table

crConnectionInfo = loginfo
CrTables = CrRep.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next

' Fin Parche Service Pack 2 Solucion 1

CrystalReportViewer1.DataBind()

CrystalReportViewer1.SeparatePages = True

'Importamos report a WORD para imprimirlo

Dim FileName As String
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As New DiskFileDestinationOptions

'FileName = "C:\temp\inftemporal.pdf"
FileName = System.Configuration.ConfigurationSettings.AppSett ings("C_DirectorioTemporal")

crDiskFileDestinationOptions.DiskFileName = FileName

'Filtro del informe

CrRep.DataDefinition.RecordSelectionFormula = "(1=1)"

If Convert.ToString(Request.QueryString("CodAdministr ador")) <> "" Then
CrRep.DataDefinition.RecordSelectionFormula = CrRep.DataDefinition.RecordSelectionFormula & " And (" & Convert.ToString(Request.QueryString("CodAdministr ador")) & " = {Administrador.CodAdministrador}" & ")"
End If

If Convert.ToString(Request.QueryString("IdConsultor" )) <> "" Then
CrRep.DataDefinition.RecordSelectionFormula = CrRep.DataDefinition.RecordSelectionFormula & " And (" & Convert.ToString(Request.QueryString("IdConsultor" )) & " = {Tecnico_1.CodTecnico}" & ")"
End If

If Convert.ToString(Request.QueryString("IdCaptador") ) <> "" Then
CrRep.DataDefinition.RecordSelectionFormula = CrRep.DataDefinition.RecordSelectionFormula & " And (" & Convert.ToString(Request.QueryString("IdCaptador") ) & " = {Tecnico.CodTecnico}" & ")"
End If

'Fin del Filtro del informe

With CrRep.ExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.WordForWindows
End With

CrRep.Export()

Response.ClearContent()
Response.ClearHeaders()

'Response.ContentType = "application/pdf"
Response.ContentType = "application/msword"

'Response.AddHeader("Content-Disposition", "attachment;filename=informe.pdf")
Response.AddHeader("Content-Disposition", "attachment;filename=informe.doc")

Response.WriteFile(FileName)
Response.Flush()
Response.Close()

System.IO.File.Delete(FileName)


luego, por otro lado, se crea un objeto de esta clase:
Public Class InfClientesyFuturosClientes
Inherits ReportClass

Public Sub New()
MyBase.New()
End Sub

Public Overrides Property ResourceName() As [String]
Get
Return "InfClientesyFuturosClientes.rpt"
End Get
Set(ByVal value As [String])
'Do nothing
End Set
End Property

<Browsable(False), _
DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden)> _
Public ReadOnly Property Section1() As Section
Get
Return Me.ReportDefinition.Sections(0)
End Get
End Property

<Browsable(False), _
DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden)> _
Public ReadOnly Property Section2() As Section
Get
Return Me.ReportDefinition.Sections(1)
End Get
End Property

<Browsable(False), _
DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden)> _
Public ReadOnly Property Section3() As Section
Get
Return Me.ReportDefinition.Sections(2)
End Get
End Property

<Browsable(False), _
DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden)> _
Public ReadOnly Property Section4() As Section
Get
Return Me.ReportDefinition.Sections(3)
End Get
End Property

<Browsable(False), _
DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden)> _
Public ReadOnly Property Section5() As Section
Get
Return Me.ReportDefinition.Sections(4)
End Get
End Property
End Class

<System.Drawing.ToolboxBitmapAttribute(GetType(Cry stalDecisions.Shared.ExportOptions), "report.bmp")> _
Public Class CachedInfClientesyFuturosClientes
Inherits Component
Implements ICachedReport

Public Sub New()
MyBase.New()
End Sub

Public Overridable Property IsCacheable() As [Boolean] Implements CrystalDecisions.ReportSource.ICachedReport.IsCach eable
Get
Return True
End Get
Set(ByVal value As [Boolean])
'
End Set
End Property

Public Overridable Property ShareDBLogonInfo() As [Boolean] Implements CrystalDecisions.ReportSource.ICachedReport.ShareD BLogonInfo
Get
Return False
End Get
Set(ByVal value As [Boolean])
'
End Set
End Property

Public Overridable Property CacheTimeOut() As TimeSpan Implements CrystalDecisions.ReportSource.ICachedReport.CacheT imeOut
Get
Return CachedReportConstants.DEFAULT_TIMEOUT
End Get
Set(ByVal value As TimeSpan)
'
End Set
End Property

Public Overridable Function CreateReport() As ReportDocument Implements CrystalDecisions.ReportSource.ICachedReport.Create Report
Dim rpt As InfFuturosClientes = New InfFuturosClientes
rpt.Site = Me.Site
Return rpt
End Function

Public Overridable Function GetCustomizedCacheKey(ByVal request As RequestContext) As [String] Implements CrystalDecisions.ReportSource.ICachedReport.GetCus tomizedCacheKey
Dim key As [String] = Nothing
'// The following is the code used to generate the default
'// cache key for caching report jobs in the ASP.NET Cache.
'// Feel free to modify this code to suit your needs.
'// Returning key == null causes the default cache key to
'// be generated.
'
'key = RequestContext.BuildCompleteCacheKey(
' request,
' null, // sReportFilename
' this.GetType(),
' this.ShareDBLogonInfo );
Return key
End Function
End Class

y aquí se crea una instancia de un rpt... el cual... ups, cómo pego el código??
No sé si esto será suficiente
mil gracias
ANA
Responder Citando
  #4 (permalink)  
Antiguo 24-Nov-2009, 14:49
Junior Member
Iniciad@
 
Fecha de Ingreso: 22-November-2009
Mensajes: 4
Predeterminado

Por cierto, las relaciones entre la tabla cliente y futurocliente no existen... el administrador es lo que tienen en común...
Saludos
ANA
Responder Citando
  #5 (permalink)  
Antiguo 24-Nov-2009, 16:40
Avatar de josel.vi
Senior Member
Veteran@
 
Fecha de Ingreso: 31-August-2009
Ubicación: Houston, TX, USA
Mensajes: 732
Lightbulb

Saludos:

A mi forma de ver y trabajar, es mas facil desde un DataSet con DataTables, debido a la simplicidad que ello implica. Por el codigo que muestras, y la falta de relaciones (inner Joins y eso), el problema es dificil de encontrar. Tendrias que hacer un debug detallado, e ir mirando los datos y la forma en que se encadenan.

Si quisieras un consejo, usa los DataTables como DataSource del reporte. Existe muchisima informacion de ello que puedes consultar.

Lamento no poder ayudar mas.


JOSE LUIS.
__________________
Exodo 20:1-17 ----> Dios NO los llamo LAS DIEZ RECOMENDACIONES.
Responder Citando
  #6 (permalink)  
Antiguo 29-Nov-2009, 17:12
Junior Member
Iniciad@
 
Fecha de Ingreso: 22-November-2009
Mensajes: 4
Predeterminado

gracias de todas formas
al final decidí volcar los datos a un fichero csv, me resultaba más cómodo
me perdía con los dataset, datatables, etc...
Saludos
ANA
Responder Citando
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado



La franja horaria es GMT +2. Ahora son las 23:06.


Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2010 canalvisualbasic.net. Todos los derechos reservados