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,
| |||
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, |
| |||
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 |
| ||||
![]() 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:
ahora si necesitas elaborar un reporte con parametros, es decir dinámico es practicamente igual, creas en Command con una consulta generica, algo asi:DataReport1.Show DataEnvironment1.rsCommand1.Close 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:
sentencia - es una variable string q almacena la consultaPrivate 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 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. |
| |||
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 |
| |||
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. |
| ||||
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 |