Pregunta: | 2988 - DATAREPORT |
Autor: | Victor Valencia |
Estoy intentando conectar un recordset a un datareport de forma dinámica. Para ello me he creado un control data (ADO) en un formulario. Lo conecto a mi base de datos (Access 97) y funciona correctamente. Escribo el siguiente código al hacer click en un botón del formulario Private Sub Command1_Click() ´Conecto el DataReport a la fuente de datos Set DataReport1.DataSource = Adodc1.Recordset ´ Asigno los campos correspondientes a cada uno de los controles del informe With DataReport1.Sections("sccDetalle") .Controls("rptCodigo").DataField = "ProductID" End With DataReport1.Show End Sub Cuando intenta abrir el datareport obtengo el error de que el origen de datos no es válido. ¿Se puede hacer lo que pretendo?, si es así, ¿qué estoy haciendo mal? Gracias |
Respuesta: | Andres Jua |
hola, es mas facil utilizar Ado asi
Ej dim rs as adodb.recodrset set rs = new adodb.recordeset rs.open " select * from clientes",con(conexionen), adopenddinam(completar) whit datareport1 set .datasource = rs .section("encadezado").controls("txtnumero").datafields = "cod_cliente" .refresh .show rs.close set rs = nothing end with "y asi voy cargando cada control que cree en cualquiera de las secciones del informe "cod_cliente" es igual a el nombre de un campo de la consulta donde abro el recordset , "encabezado" es el nombre que le doy a una seccion del report y "txtnuemero" es un control de datareport, que se encuentra debajo de las herramientas comunes, que tiene la propiedad datafields, si el control no tiene esta propiedad se debe usar .Caption en vez de .DataFields . Discupa mi redaccion. culaquier problema. enviame un mail [email protected] |
Respuesta: | ROMAN NAVAS |
esto es lo malo:
Set DataReport1.DataSource = Adodc1.Recordset en lugar de asignar la propiedad datasource de esta manera, si estas usando un control grafico como: " Adodc1" no lo asignes la propiedad datasource en tiempo de ejecucion, hazlo en modo de diseño solo ve a las propiedades del datareport y busca la propiedad datasource y ahi elije ADODC1 ESO ES TODO |
Respuesta: | Paco Benito |
Desconozco si puedes hacerlo como dices, pero yo siempre que uso un DataReport me obliga a tener enlazado un Dataenvironment que tenga un objeto comand con la sentencia SQL. El Datareport debe tener sus propiedades .DataSource enlazado al Dataenvironmet y .Datamember al objeto comand de ese dataenvironment.
Espero que te ayude. |
Respuesta: | El |
El problema es que estás utilizando DAO en lugar de ADO. Prueba a crear una conexion Dim vd As Boolean, conexion As New ADODB.Connection Dim comando As New ADODB.Command, resultado As New ADODB.Recordset ´abrimos la conexion With conexion .Provider = "Microsoft.Jet.OLEDB.3.51" .ConnectionString = "Data Source=" & CurDir & "\molsandb.mdb" .Open End With With comando .CommandType = adCmdUnknown .CommandText = "SELECT Clientes.razon_social, AlbaranesxCliente.cli_codigo, AlbaranesxCliente.numero_albaran, Sum(AlbaranesxCliente.importe_neto) AS im, AlbaranesxCliente.desde, AlbaranesxCliente.hasta, AlbaranesxCliente.cobrado FROM Clientes INNER JOIN AlbaranesxCliente ON Clientes.codigo = AlbaranesxCliente.cli_codigo GROUP BY Clientes.razon_social, AlbaranesxCliente.cli_codigo, AlbaranesxCliente.numero_albaran, AlbaranesxCliente.desde, AlbaranesxCliente.hasta, AlbaranesxCliente.cobrado ORDER BY AlbaranesxCliente.numero_albaran;" .ActiveConnection = conexion End With resultado.Open comando Set rpt_albaranes_a.DataSource = resultado rpt_albaranes_a.Caption = "Albaranes A" With rpt_albaranes_a.Sections("secc_encabezado") .Controls("txt_desde").Caption = resultado!desde .Controls("txt_hasta").Caption = resultado!hasta .Controls("e_titulo").Caption = "Albaranes A" End With With rpt_albaranes_a.Sections("secc_detail") .Controls("txt_numero").DataField = "numero_albaran" .Controls("txt_codigo").DataField = "cli_codigo" .Controls("txt_razon").DataField = " |