Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Data Report

Estas en el tema de Data Report en el foro de Visual Basic clásico en Foros del Web. Buenass... hace mucho calor, ¿e? Estoy enfrascado en un proyecto que a traves de una consulta, me salga un report que me permita imprimir y ...
  #1 (permalink)  
Antiguo 26/07/2005, 10:41
 
Fecha de Ingreso: abril-2002
Ubicación: Euskal Herria
Mensajes: 95
Antigüedad: 22 años
Puntos: 0
Data Report

Buenass... hace mucho calor, ¿e?

Estoy enfrascado en un proyecto que a traves de una consulta, me salga un report que me permita imprimir y guardar en formato .doc. ¿Me podríais indicar como lo debería hacer?
Salludos,
  #2 (permalink)  
Antiguo 27/07/2005, 08:39
Avatar de IGNIS  
Fecha de Ingreso: junio-2003
Mensajes: 70
Antigüedad: 20 años, 10 meses
Puntos: 0
con tienes problema?

especificamente con que tienes el problema con la generacion del report o con la exportación a .doc? yo te puedo ayudar con la generación de reportes.
__________________
La verdad es la llave, no la puerta.
  #3 (permalink)  
Antiguo 27/07/2005, 10:01
 
Fecha de Ingreso: abril-2002
Ubicación: Euskal Herria
Mensajes: 95
Antigüedad: 22 años
Puntos: 0
Hola de nuevo..
precisamente con los dos.. ¿puedo crear reportes sin el DataEnvironment?De todos modos, te estaría agradecido si me indicarias como se crear reportes.. y el resto ya lo haría..

Gracias de antemano
  #4 (permalink)  
Antiguo 27/07/2005, 11:35
Avatar de IGNIS  
Fecha de Ingreso: junio-2003
Mensajes: 70
Antigüedad: 20 años, 10 meses
Puntos: 0
Busqueda te ayudo con los reportes

hace tiempo que hice reportes, y pues yo los genere solo con el dataenvironment y funcionaron bien.

lo primero que tienes que hacer es crear una conexion en el environment y la configuras con tu DB, depues creas un Command, el command es una consulta a la DB.

puedes generar dos tipos de reportes, estaticos y dinámicos en cuanto a los parametros, por ejemplo si necesitas saber todos los clientes que tienes dados de alta, seria una consulta estatica y no necesitas parametros, pero si necesitas tal vez los clientes que se registraron en una fecha especifica o en un rango de fechas, tendrias que pasar parametros al reporte para que este muestre los datos filtrados.

ya que tienes el Dataenvironment listo, agregas un DataReport y enlazas este al DataEnvironment y al Command en las propiedades en tiempo de diseño:

Datasource=Dataenvironment1
Datamember=Command1

Ya en el Datareport te toca a ti diseñar tu reporte, tienes varias secciones:
Encabezado de Informe - aparece al inicio del informe, en la primer pagina
Encabezado de Página - al inicio de cada página util para nombre de columnas
Detalle - esta es la más importante, en esta situas el cuerpo del reporte, es decir la información, aqui situas los RptTextBox que sirven para mostrar la informacion de un campo de la consulta y los enlazas de la misma forma:

Datamember=Command1
Datafield=nombre_campo

Pie de Página - Puedes incluir hora en q se genero, pagina, etc.
Pie del Informe - Ahi generalmente se situan totales calculados a partir de ciertos campos, o el conteo de los registros q generó el reporte y aqui se utiliza el RptFunction, que no es más q un calculador de diferentes funciones como la suma de determinado campo, la media, etc...

el resto es cuestión de diseño y que al generarlo verifiques que los espacios, líneas, imágenes, etc cuadren con la hoja y los datos correctamente.

el siguiente paso es la generación del reporte, solo lo mandas llamar como cualquier formulario:

Código:
DataReport1.Show
DataEnvironment1.rsCommand1.Close
ahora si necesitas elaborar un reporte con parametros, es decir dinámico es practicamente igual, creas en Command con una consulta generica, algo asi:

select * from Clientes

lo importante es que incluyas ahi todos los campos q se utilizaran para q crees el DataReport en tiempo de diseño

ahora si necesitaras mostrar los datos de una consulta pero con un rango de fechas por ejemplo tendrias que hacer lo siguiente:

Código:
Private Sub Command1_Click()
Dim sentecia As String
If Text1.Text <> "" And Text2.Text <> "" Then
    sentencia = "select * from FACTURADAS where fecha between #" & Text1.Text & "# and #" & Text2.Text & "# order by hora"
    DataEnvironment1.rsCommand1.Open sentencia
    DataReport1.Show 1
    DataEnvironment1.rsCommand1.Close
Else
    sentencia = "select * from FACTURADAS where fecha=#" & Text1.Text & "# order by hora"
    DataEnvironment1.rsCommand1.Open sentencia
    DataReport1.Show 1
    DataEnvironment1.rsCommand1.Close
End If
End Sub
sentencia - es una variable string q almacena la consulta
FACTURADAS - es la tabla
fecha - campo de la tabla FACTURADAS
hora - campo de la tabla FACTURADAS

en el evento Command1_Click mandamos llamar al reporte, tomando en cuenta que ingrsen una sola fecha o un rango, en el primer caso se contempla que ingresen dos fechas en dos cajas de texto, generamos la consulta con las fechas dentro, y abrimos el recordset del Command1 del DataEnvironment, enseguida mostramos el Reporte precedido de un 1 que indica que el formulario sera Modal, es decir, se tiene que cerrar antes de regresar a la aplicación. y por ultimo dejamos cerrado el Recordset del Command1 del DataEnvironment, para volver a generar el reporte con diferentes parametros.

el segundo caso solo modifica la consulta por si solo se ingresara una fecha, la primera.
__________________
La verdad es la llave, no la puerta.
  #5 (permalink)  
Antiguo 28/07/2005, 10:35
 
Fecha de Ingreso: abril-2002
Ubicación: Euskal Herria
Mensajes: 95
Antigüedad: 22 años
Puntos: 0
De acuerdo.. ya lo intentare.. aunque no creo que tenga problemas, por las explicaciones que me has indicado..
De todos modos, te digo como me va.


Saludos
  #6 (permalink)  
Antiguo 31/01/2006, 07:37
 
Fecha de Ingreso: enero-2006
Mensajes: 11
Antigüedad: 18 años, 3 meses
Puntos: 0
Como paso un parametro desde VB al DR

Hola necesito sabes como pasar un parametro al data report, mas especificamente lo q necesito es pasar la fecha que ingresa el usuario en el formulario, al data report pero como dato en la cabezera del reporte. Te agradeceria si me podes ayudar con esto
  #7 (permalink)  
Antiguo 05/02/2006, 18:28
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
La Coneccion En El Dataenvoronment Como La Creo, ? Como Cualq Conex A Db?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #8 (permalink)  
Antiguo 16/10/2007, 15:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Data Report

Una pregunta estoy, ejecutando este procedimiento almacenado, esta funcionado bien pero POR FAVOR!!! como lo asocio al reporte. Gracias
  #9 (permalink)  
Antiguo 16/10/2007, 15:25
 
Fecha de Ingreso: octubre-2007
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Data Report

Dim proy As Integer
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = "PROVIDER=SQLOLEDB.1;user id=javigail;initial catalog=Calculo;data source=calculo;password=calculo;"
'proy = 1720001
cmd.CommandText = "exec dbo.s_babero"

cmd.Execute
Load babero
Screen.MousePointer = vbDefault
babero.Show vbModal

Ya esta diseñado el reporte y todo perfecto, pero en las propiedasdes del reporte le tengo un data environment. Necesito asociarlo pero no por ahi sino por código.
  #10 (permalink)  
Antiguo 29/10/2007, 22:36
Avatar de shadowGT  
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Data Report

Bueno todas sus repuestas son muy buenas pero prueba con este

Pones esto en un MODULO.

Option Explicit
Public conex As ADODB.Connection
Public record As ADODB.Recordset

Luego en los comentarios del FORM_LOAD pones lo siguiente
'LAS VARIABLES CONEX Y RECORD ESTAN DECLARADAS EN EL MODULO
'COMO VARIABLES PUBLICAS
Private Sub obtener_reporte()
Dim cadena, sql, path As String
path = App.path & "\Inventario.mdb"
'LA VARIABLE PATH ES LA DIRECCION FISICA DE LA BASE DE DATOS
'DE ACCESS O SEA KE DEBERAS CAMBIARLA SI TIENES OTRA BASE DE
'DATOS O DIRECCION FISICA DE LA MISMA
Set conex = New ADODB.Connection
Set record = New ADODB.Recordset
cadena = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Persist Security Info=False"
conex.ConnectionString = cadena
conex.Open cadena
sql = "Select codigo,descripcion,precio,marca,fecha From Productos"
'SI DESEAS OBTENER UN REGISTRO EN ESPECIAL DEBES CAMBIAR EL COMANDO SQL
record.LockType = adLockOptimistic
record.CursorLocation = adUseClient
record.CursorType = adOpenDynamic
record.Open sql, conex
'AQUI SE ASIGNA EL DATA SOURCE DEL RECORDSET AL DATA SOURCE DEL DATAREPORT
With DataReport2
Set .DataSource = Nothing
.DataMember = ""
Set .DataSource = record.DataSource
'AQUI SE HACE REFERENCIA A LAS CASILLAS DE TEXTO DEL DATAREPORT
'Y SE LES ASIGNA UN CAMPO A CADA UNA PROVENIENTE DEL RECORDSET
For i = 1 To 5
.Sections("Sección1").Controls.Item(i).DataMember = ""
.Sections("Sección1").Controls.Item(i).DataField = record.Fields(i - 1).Name
Next i
End With
DataReport2.Show

End Sub


Luego en el boton imprimir lo siguiente

Private Sub Command1_Click()
obtener_reporte
End Sub

solo tienes que asegurarate que i = al numero de columnas de tu tabla y que en el diseño del data report haya un numero igual te etiquetas no enlazadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:36.