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:
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

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

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

y por ultimo notese que me duplica el articulo
como hago para que no me duplique el registro de la tabla articulos
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

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

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

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


0