border
VB 6
 
 
/

Retroceder   VB-MUNDO - Visual Basic, y mucho mas > Programacion - Utilitarios > DataReports
Olvidó Password? Registrarse!
Registrarse FAQDonate Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

El Mejor Hosting .NET Framework 4.0

En VB-MUNDO usamos el increible servicio de SmarterASP

Respuesta
 
LinkBack Herramientas
  #1 (permalink)  
Antiguo 16-02-2006, 16:14:52
Nuevo Amigo
 
Registrado: feb 2006
Posts: 3
Créditos: 289
cobox Valoración +2
Predeterminado DataReport y Encabezado de Grupo sin DataEnviroment

Hola, necesito vuestra ayuda. Tengo problemas al realizar un datareport cuando necesito agregar un encabezado de grupo. Primero os enseño como intento cargar el report:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Private Sub BImprimir_Click()
Dim rst As ADODB.Recordset
Dim sql As String

Set rst = New ADODB.Recordset
sql = "SELECT Usuarios.Usuario, Usuarios.Contrasena, Usuarios.Nivel, PlantasGeograficas.Descripcion FROM PlantasGeograficas INNER JOIN Usuarios ON PlantasGeograficas.PlantaGeografica = Usuarios.Planta;"
rst.Open sql, BD, adOpenForwardOnly, adLockReadOnly
Set iUsuarios.DataSource = rst
With iUsuarios.Sections("Detalle").Controls
.Item("txtUsuario").DataField = rst.Fields.Item(0).Name
.Item("txtContrasena").DataField = rst.Fields.Item(1).Name
.Item("txtNivel").DataField = rst.Fields.Item(2).Name
End With
iUsuarios.Sections("GPlanta").Controls.Item("txtDe scripcion").DataField = rst.Fields.Item(3).Name
Load iUsuarios
iUsuarios.Show
End Sub
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Os explico un poco, deseo poner en el encabezado de grupo "PlantasGeograficas.Descripcion" pero no se como hacerlo, no se si hago mal la SQL y no utilizo GROUP BY . Suele darme el mensaje de error:
"Las secciones del informe no coinciden con el origen de datos"

Por favor, ayudadme y gracias de antemano.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 16-02-2006, 17:42:25
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.483
J_M_Movilla ha deshabilitado la reputación
Predeterminado

Supongo que tengas experiencia con el Debug (pulsa [F9] sobre la línea Set rst = New ADODB.Recordset y ejecuta el programa con [F5])

Dinos al menos en qué línea te aparece el error, porque sin saber cómo tienes definido el DataReport... no es fácil decirte qué sección te falla...
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 16-02-2006, 21:00:06
Nuevo Amigo
 
Registrado: feb 2006
Posts: 3
Créditos: 289
cobox Valoración +2
Predeterminado Respuesta a la pregunta

Lo primero gracias por contestar, el único mensage de error que me sale es el q aparece al visualizar el informe, este aparece en blanco y sobre él un mensage q dice:
"Las secciones del informe no coinciden con el origende datos"

Pra concretar un poco lo que busco es poder hacer un DataReport a traves de un recordset pero lo que no consigo es que me acepte poner algún campo como encabezado de grupo. Un ejemplo claro de este tipo de informes sería el que nos sacaría un Pedido con todas sus líneas de pedido debajo de él.
Lo que no kiero es tener q utilizar un DataEnviroment.
Espero vuestra ayuda, gracias de antemano.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 16-02-2006, 22:18:33
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.483
J_M_Movilla ha deshabilitado la reputación
Predeterminado

Un truco que suele dar resultados satisfactorios: ¿Por qué no preparas todo con un DataEnvironment, y cuando ya todo funcione perfectamente sustituyes el DataEnvironment por las correspondientes líneas de código con ADO?
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 16-02-2006, 23:34:59
Nuevo Amigo
 
Registrado: feb 2006
Posts: 3
Créditos: 289
cobox Valoración +2
Predeterminado Respuesta....

Realmente no se muy bien como sustituir el dataenviroment mediante código, necesitaría un poco de ayuda, ver algún ejemplo, no soy un experto en esto por lo que tengo bastantes dudas.
Espero no ser muy pesado pero me parece raro q nadie haya intentado lo mismo que yo, hacer un datareport con un recordset y que ademas haya tenido la necesidad de poner un encabezado de grupo.
Gracias por atenderme.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 17-02-2006, 11:39:45
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.483
J_M_Movilla ha deshabilitado la reputación
Predeterminado

Bueno... Yo nunca había trabajado con DataReport sin DataEnvironment... Es más, mi idea era que ambos controles estaban emparejados... Pero como tú al parecer estás presentando informes con DataReport SIN DATAENVIRONMENT... (que no sé cómo lo haces, la verdad...) pues he intentado hacerte un ejemplo de cómo prepararlo con DataEnvironment y luego cambiarlo a código directo... Pero por más vueltas que lo doy... NO CONSIGO hacer un DataReport sin el DataEnvironment... Lo siento, pero se me acabaron las pilas para ayudarte...
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 21-12-2006, 15:41:00
Gran Participación en el Foro
 
Registrado: nov 2006
Posts: 116
Créditos: 1.096
zape Valoración +2
Contactar con zape a través de MSN
Predeterminado

Hasta donde van mis conocimientos en relación con Visual Basic 6.0 para el tema de los Reportes, siempre se requiere un DataReport :smt005
__________________

Zape

El Límite de la Programación... Es el Límite de la Imaginación...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #8 (permalink)  
Antiguo 25-01-2007, 16:01:07
Nuevo Amigo
 
Registrado: ene 2007
Ubicación: Cordoba
Posts: 4
Créditos: 228
flex Valoración +2
Predeterminado DataReport sin DataEnvironment

Antes que nada les paso mi codigo, otra salvedad, cuando un bloque de codigo este anidado (for dentro de otro for, etc), eviten usar la sentencia With ya que hace ilegible el codigo (particularmente me molesta sobremanera).
1) para alimentar bien a un reporte, hay que crearse un recordset jerarquico ej: Cliente-Cotizacion-DetalleCotizacion, usando el comando Shape.
2) Cree dos variables, Seccion y Control de tipo variant para entrar a la coleccion Section del datareport y manipularla
3) hay que asignar ese recordset jerarquico al datareport:

'ponemos a nothing el DR.datasource
Set drCotizacion.DataSource = Nothing
drCotizacion.DataMember = ""

'Luego le asignamos el recordset jerarquico
Set drCotizacion.DataSource = rsJCotizacion 'con esta sentencia, el reporte ya conoce la estruct del Recordset jerarquico

'Ahora viene lo mas lindo: ciclar por la estrucura que ustedes definieron en tiempo de diseño y alimentar cada parte con datos:
'En mi caso, en cada seccion, pregunto por su nombre y entro a esa seccion:

For Each Seccion In drCotizacion.Sections
Select Case Seccion.Name
Case "EncabezadoCotizacion" 'encabezado de grupo llamado Encabezado de Cotizacion
For Each Control In Seccion.Controls
'en este if() pregunto si el control actual es un rptTextBox, si lo es, lo lleno de datos
If (TypeOf Control Is RptTextBox) Then

'Para las jerarquias superiores, no hace falta que los
'controles tengan definido el DataMember (ej:el Rs Padre)

Control.DataMember = ""
Select Case Control.Name
Case "rptRazonSocial"
Control.DataField = "RazonSocial"
Case "rptNombreResp"
Control.DataField = "NombreResponsable"
Case "rptDireccion"
Control.DataField = "Direccion"
Case "rptTelefono"
Control.DataField = "Telefono"
Case "rptCondicionIva"
Control.DataField = "CondicionIva"
Case "rptFormaPago"
Control.DataField = "FormaPago"
End Select
End If
Next
Case "Detalles" 'Si el nombre de la seccion1 (Detalle de Grupo) es Detalles:
'En cada Control de la coleccion controles de la seccion Detalles
'accedemos a sus propiedades para alimentar el reporte
For Each Control In Seccion.Controls
If (TypeOf Control Is RptTextBox) Then
'Para poder acceder al recorset de nivel inferior (en este
'caso, rsDetalleCotizacion), como el datareport ya conoce la
'jerarquia de datos, solo ponemos en los DataMembers de
'cada control el nombre del recordset de nivel inferior (en
'este caso es rsDetalleCotizacion, que debe coincidir con
'el nombre que le pusimos a cada parte de la jerarquia
'al crear dicha jerarquia con Shape):

Control.DataMember = "rsDetalleCotizacion" 'en la jerarquia Shape, rsDetalleCotizacion es hijo de rsCotizacion
Select Case Control.Name
' Case "rptCodPresupuesto"
' Control.DataField = "CodPresupuesto" 'Recordemos que codPresupuesto es el campo de tabla rsDetalleCotiz
' Case "rptCodRepuesto"
' Control.DataField = CodRepuesto
' Case "rptCodFabricante"
' Control.DataField = "CodFabricante"
Case "rptNombreRepuesto"
Control.DataField = "NombreRepuesto"
Case "rptPrecio"
Control.DataField = "PrecioHistorico"
Case "rptCantidad"
Control.DataField = "Cantidad"
Case "rptSubtotal"
Control.DataField = "Subtotal"
End Select
End If
Next Control
end Select
Next Seccion

'Mostramos el reporte:
drCotizacion.show

y asi por cada seccion y controles por seccion tengan, la mecanica de llenado es la misma. Para crear un recordset jerarquico usen shape que en mi caso lo hice asi:

Dim rsJCotizacion as ADODB.Recorset

SQL = "SELECT c.CodCliente, c.RazonSocial, c.NombreResponsable," & _
" c.Direccion, c.Telefono, ci.Nombre AS CondicionIva, cot.CodCotizacion," & _
" fp.Descripcion as FormaPago, cot.FechaEmision, cot.FechaVto, cot.Monto," & _
" cot.Estado, cot.DescuentoXCantidad" & _
" FROM Clientes c, Cotizacion cot, CondicionIva ci, FormaPago fp" & _
" WHERE cot.CodCliente = c.CodCliente AND c.CondicionIva = ci.CodIVA AND" & _
" cot.CodFormaPago = fp.CodFormaPago AND" & _
" cot.CodCotizacion =" & CodCotizacion & " AND cot.CodCliente = " & CodCliente

SQLItems = "SELECT dc.CodCotizacion, dc.CodRepuesto, r.CodFabricante," & _
" r.NombreRepuesto, dc.PrecioHistorico, dc.Cantidad, dc.Subtotal" & _
" FROM DetalleCotizacion dc, Repuestos r" & _
" WHERE dc.CodRepuesto = r.CodRepuesto AND dc.CodFabricante = r.CodFabricante"

Set rsJCotizacion = New ADODB.Recordset

SHQL = "SHAPE {" & SQL & "} AS rsCotizacion APPEND" & _
"({" & SQLItems & "} AS rsDetalleCotizacion" & _
" RELATE 'CodCotizacion' TO 'CodCotizacion') AS rsDetalleCotizacion"

SQL y SQLItems, son dos cadenas que uso para separar la consulta de encabezado y la consulta de detalles, solo por legibilidad, ahora bien, cuando uso shape, alli relaciono dichas consultas separadas y obtengo el RS jerarquico.
Entonces, visualmente la jerarquia queda asi
rsCotizacion
|
|------rsDetalleCotizacion

Este codigo me anda a la perfeccion, espero que se entienda.
Otra cosa, al escribir este post, lo hice con sangrias y todo para que se entienda bien, espero que lo lean asi.
Saludos
Flex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #9 (permalink)  
Antiguo 16-01-2010, 07:25:37
Avatar de YvanB
Gran Participación en el Foro
 
Registrado: dic 2007
Posts: 290
Créditos: 5.702
YvanB Valoración +2
Contactar con YvanB a través de MSN
Predeterminado Re: DataReport sin DataEnvironment

Aunque hayan pasado casi 3 años y viendo que Cobox no te dio el agradecimiento oportuno quiero hacerlo yo porque hiciste que terminara mi busqueda agobiante de 3 horas para resolver el mismo problema que se me acaba de presentar. Muchas Gracias.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Dos líneas en encabezado en MSFlexGrid Medardo Visual Basic 6.00 1 28-12-2007 19:19:09
como totalizar en un datareport valores por grupo Black_devil Visual Basic 6.00 1 29-05-2007 23:11:06
Pregunta de DataReport y DataEnviroment jhanluigui Visual Basic 6.00 2 16-03-2007 19:11:49
ERROR AL INSERTAR ENCABEZADO DE GRUPO Rmatcar DataReports 5 20-07-2006 18:52:19
Problema con el DataReport sin DataEnviroment mexican Visual Basic 6.00 0 03-05-2006 23:20:40


La franja horaria es GMT. Ahora son las 22:05:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios


right
Inactive Reminders By Icora Web Design