Visual Basic.NET - Error con DataSet Tipado y reporte en crystal report

 
Vista:
sin imagen de perfil
Val: 10
Ha disminuido su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error con DataSet Tipado y reporte en crystal report

Publicado por Luis Gonzalez (10 intervenciones) el 26/07/2016 22:15:24
Hola amigos de toda la comunidad recurro a ustedes por lo siguiente me encuentro desarrollando un sistema administrativo pero a la hora de elaborar la factura en el reporte me duplica los articulos de esa factura en el reporte. Explico un poco mejor lo acontecido.

1) Estoy utilizando VB.Net 2010 con Mysql.
2) El reporte lo estoy elaborando con Crystal Report
3) Para el reporte de la factura estoy utilizando 2 tablas: tabla "articulosvendidos" (que almacena los articulos que se vendieron en esa factura) y una tabla "pagosclientes" (donde se almacena los pagos realizados en esa factura, que pueden ser en efectivo, tarjeta de debito, tarjeta de credito, transferencias o combinados).
4) Para el reporte utilizo un dataset tipado, que contiene dos datatable cada uno con el nombre de las tablas arriba mencionadas el cual lleno de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Private Sub vrRptFactura_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sbConsultar, sbPagos As New StringBuilder 'consultas a la base de datos
        Dim dsFactura As New dsArtiFactu 'dataset tipado
 
        Dim documento As String = facturacion.lblFactura.Text 'condicion para la busqueda de registros
        Dim tipo As String = "FACT" 'tipo de documento en este caso factura
 
        Me.Location = Screen.PrimaryScreen.WorkingArea.Location
        Me.Size = Screen.PrimaryScreen.WorkingArea.Size
 
        Dim server As String
        Dim database As String
        Dim user As String
        Dim pass As String
        Dim port As String
        Dim dirCfg As String = Application.StartupPath & "\config.cfg"
        Try
            If File.Exists(dirCfg) = True Then
                Dim srCfg As New System.IO.StreamReader(dirCfg)
                server = srCfg.ReadLine
                database = srCfg.ReadLine
                user = srCfg.ReadLine
                pass = srCfg.ReadLine
                port = srCfg.ReadLine
                conexion = New MySqlConnection
                conexion.ConnectionString = "Server=" + server + ";Database=" + database + " ;user=" + user + ";password=" + pass + ";port=" + port + ""
                srCfg.Close()
 
                sbConsultar.Append("SELECT")
                sbConsultar.Append("    codigoArticulo")
                sbConsultar.Append("    ,descripcion")
                sbConsultar.Append("    ,pvp")
                sbConsultar.Append("    ,cantidad")
                sbConsultar.Append("    ,totalLinea")
                sbConsultar.Append("        FROM articulosvendidos")
                sbConsultar.Append("            WHERE idVenta= '" + documento + "'")
                sbConsultar.Append("                ORDER BY codigoArticulo")
 
                sbPagos.Append("SELECT")
                sbPagos.Append("    monto")
                sbPagos.Append("    ,tipopago")
                sbPagos.Append("    ,referencia")
                sbPagos.Append("    ,tipotarjeta")
                sbPagos.Append("    ,banco")
                sbPagos.Append("        FROM pagosclientes")
                sbPagos.Append("            WHERE idventa= '" + documento + "'")
                sbPagos.Append("                AND origen= '" + tipo + "'")
 
                Dim daArticulos As New MySqlDataAdapter(sbConsultar.ToString, conexion) 'adaptador para realizar la consulta de los ariculos
 
                Dim daPagos As New MySqlDataAdapter(sbPagos.ToString, conexion) 'adaptador para hacer la consulta de los pagos
 
                daArticulos.Fill(dsFactura, "articulosvendidos")'
                daPagos.Fill(dsFactura, "pagosclientes")
 
 
                Dim rpt As New rptFactura
 
                rpt.SetDataSource(dsFactura) ' asignacion del data set al reporte
                viewer_rpt_factura.ReportSource = rpt ' muestro el reporte

El detalle esta en lo siguiente cuando muestro el reporte me duplica el contenido de la tabla articulos vendidos con la cantidad de registros que tiene la tabla pagosclientes y viceversa. Me explico:

La tabla ariticulosvendidos tiene 1 registro y la tabla pagosclientes tiene 3 registros de pago de esa factura entonces en el reporte me muestra:
3 veces el articulo
1 registro de pagos

Les adjunto unas imagenes para que se pueda ver mejor

articulo
aca pueden ver que ingreso un articulo por ende un solo registro en la tabla

pago
Registro dos pagos para esa factura. 2 registro en la tabla pagosclientes

reporte
y por ultimo notese que me duplica el articulo

como hago para que no me duplique el registro de la tabla articulos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error con DataSet Tipado y reporte en crystal report

Publicado por Diego (190 intervenciones) el 29/07/2016 03:17:48
Hola Luis, yo no utilizo Crystal, sin embargo con el report nativo de .net me ha ocurrido algo similar cuando agrupo por filas o por columnas la información. Me llama la atención que casualmente 3 veces se repita tu articulo. Si creas un nuevo registro de pago? Aparecería una 4ta repetición? Yo creo que el error está mas en el diseño del reporte, que en el llenado de datos de los datasets. Pero no es nada seguro lo que te digo. Fijate.

Saludos y +bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar