Foros del Web » Programación para mayores de 30 ;) » Programación General »

Conexion a Data Report

Estas en el tema de Conexion a Data Report en el foro de Programación General en Foros del Web. Hola. Necesito conectarme a un Data Report y como no puedo meter un Ado en el Data Report no tengo idea de como decirle que ...
  #1 (permalink)  
Antiguo 12/03/2004, 10:23
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Conexion a Data Report

Hola. Necesito conectarme a un Data Report y como no puedo meter un Ado en el Data Report no tengo idea de como decirle que campos pertenecen a cuales en una base de datos.

Alguien sabe algo???
  #2 (permalink)  
Antiguo 15/03/2004, 15:09
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
hola micayael,

Código:
            'Defino la consulta
            Gado_rec_tmp.Source = "SELECT campo1, campo2 FROM tabla"
            'Abro el recordset
            Gado_rec_tmp.Open
            
            'DATAREPORT 1
            DataReport1.Sections("sec4").Controls("Etiqueta2").Caption = "label1"
            DataReport1.Sections("sec4").Controls("Etiqueta3").Caption = "label2"
            
            DataReport1.Sections("sec1").Controls("Texto0").DataField = "campo1"
            DataReport1.Sections("sec1").Controls("Texto1").DataField = "campo2"

            Set DataReport1.DataSource = Gado_rec_tmp
            DataReport1.Show
omito la declaración de los objetos de ADO...

Saludos
Pablo
  #3 (permalink)  
Antiguo 23/03/2004, 05:16
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Hola de nuevo.

La verdad que me resulta un poco extraño este codigo (es que no soy muy bueno en esto).

Segun tenia entendido al DataReport no se la puede asignar directamente un ADO por lo cual una persona me dijo que:

En un formulario con un command Button conecte un ado con mi base de datos y luego en el evento click del boton pornga algo por el estilo:

NombredelDataReport.DataSource = Formulario!Adodc1.RecordSource

De esta manera supuestamente quedaria conectado y podria simplemente completar los DataFields del los Conroles de texto.

Segun entiendo mas o menos es eso lo que haces en el ejemplo, Pero la verdad que no se si va en un formulario aparte o en el DataReport.

(Por cierto, me hablaron del CrystalReport, sabes que es eso???? y, no pregunto de donde conseguirlo como pirata sio de donde se consigue en el sentido de si viene con el Visual o como??? No me malinterpreten por favor...) Gracias Pabli
__________________
http://blog.micayael.com
  #4 (permalink)  
Antiguo 23/03/2004, 05:35
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
micayael,

lo puedes hacer de las dos formas. Con un ADODC o con objetos ado a mano. Yo nunca utilizo ADODC. Dependiendo de con que quieras hacerlo yo te guío.

Cita:
La verdad que me resulta un poco extraño este codigo (es que no soy muy bueno en esto)
Todo resulta extraño hasta que lo conocemos. No es dificil

Con respecto a lo de crystal, tengo un ejemplo que he mandado a otro compañero del foro pero te aseguro que es algo más complicado que con datareport. La decisión es tuya...

Saludos
Pablo
  #5 (permalink)  
Antiguo 23/03/2004, 06:12
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Gracia spor toda tu ayuda Pablo.
La verdad que no se donde poner el codigo que me enviaste, y que significa el Gado_rec_tmp, es como una variable???

Lo pongo en el Datareport bajo que evento

--------------------------------------------------------------------------------
'Defino la consulta
Gado_rec_tmp.Source = "SELECT campo1, campo2 FROM tabla"
'Abro el recordset
Gado_rec_tmp.Open

'DATAREPORT 1
DataReport1.Sections("sec4").Controls("Etiqueta2") .Caption = "label1"
DataReport1.Sections("sec4").Controls("Etiqueta3") .Caption = "label2"

DataReport1.Sections("sec1").Controls("Texto0").Da taField = "campo1"
DataReport1.Sections("sec1").Controls("Texto1").Da taField = "campo2"

Set DataReport1.DataSource = Gado_rec_tmp
DataReport1.Show
--------------------------------------------------------------------------------
  #6 (permalink)  
Antiguo 25/03/2004, 07:08
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
micayael,

este es código completo, revísalo y lo que no vayas entendiendo me escribes. Utilizamos este post para todas las dudas.

Código:
Option Explicit
Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset

Private Sub Command1_Click()
    
    If rstEmployees.State = adStateOpen Then
        'Cerramos antes de volver a abrir
        rstEmployees.Close
    End If
    'Configuramos la query
    rstEmployees.Source = "SELECT campo1, campo2 FROM tabla"
    rstEmployees.Open

    '***********************************************************************
    'DATAREPORT 1
    '***********************************************************************
    'Damos nombre a las columnas que en realidad son labels
    DataReport1.Sections("sec4").Controls("Etiqueta2").Caption = "nombre_columna1"
    DataReport1.Sections("sec4").Controls("Etiqueta3").Caption = "nombre_columna2"
    
    'Le damos una referencia en los textbox de la sección detalle(que en este caso se llama sec1)
    'a los campos de la SELECT definida anteriormente, en el momento que asignemos el recordset
    'al datareport, éste(el datareport) sabrá de que campos coger la información
    DataReport1.Sections("sec1").Controls("Texto0").DataField = "campo1"
    DataReport1.Sections("sec1").Controls("Texto1").DataField = "campo2"

    Set DataReport1.DataSource = rstEmployees
    DataReport1.Show
    '***********************************************************************
    'No cerramos el recordset porque se irán los datos del report
End Sub

Private Sub Form_Load()
    Dim strCnn As String

    ' Abre una conexión.
    strCnn = "Provider=sqloledb;" & _
    "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
    Set cnn1 = New ADODB.Connection
    cnn1.Open strCnn
    
    ' Configura el recordset
    Set rstEmployees = New ADODB.Recordset
    rstEmployees.ActiveConnection = cnn1
    rstEmployees.CursorType = adOpenKeyset
    rstEmployees.LockType = adLockOptimistic
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'Cierra y libera memoria
    rstEmployees.Close
    Set rstEmployees = Nothing
    cnn1.Close
    Set cnn1 = Nothing
End Sub
  #7 (permalink)  
Antiguo 02/04/2004, 06:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
hola pabli. Gracias hombre ya funca. Eres un genio.

un abrazo
__________________
http://blog.micayael.com
  #8 (permalink)  
Antiguo 02/04/2004, 11:30
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
De nada micayael,

ahora te recomiendo que vayas mirando como va Crystal, porque cuando quieras hacer algo más potente, quizá Datareport no sea suficiente. Practica con los objetos ADO, es importante.

Saludos
Pablo
  #9 (permalink)  
Antiguo 15/04/2004, 05:24
Avatar de sowhat  
Fecha de Ingreso: mayo-2002
Ubicación: España, Valladolid
Mensajes: 152
Antigüedad: 22 años
Puntos: 0
Hola, micayael acabo de ver este post y la verdad que quiero hacer algo parecido pero tp me sale (puse un post, aunke acabo de ver este :S).

Alguien me podria decir que hacen estas lineas??
Código:
DataReport1.Sections("sec4").Controls("Etiqueta2").Caption = "label1"
  #10 (permalink)  
Antiguo 15/04/2004, 14:27
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
claro sowhat,

-DataReport1.Sections("sec4")

hace mención a una sección del datareport, hay 5, que se pueden llamar como tú quieras, en este caso "sec4"

-Controls("Etiqueta2")

de la colección controls de una sección, voy a trabajar con con un control que se llama "Etiqueta2", si no existe, ERROR

-.Caption = "label1"

escribo un texto en el control, pues se trata de un label.

Todo esto en tiempo de ejecución, lo puedes hacer en diseño, pero si necesitas cambiar el texto dependiendo de alguna condición, lo tendrás que hacer así...

Saludos
Pablo
  #11 (permalink)  
Antiguo 16/04/2004, 05:39
Avatar de sowhat  
Fecha de Ingreso: mayo-2002
Ubicación: España, Valladolid
Mensajes: 152
Antigüedad: 22 años
Puntos: 0
Muchas gracias pabli, ya esta todo controlado.

Si tienes un segundo, una preguntilla

En el datareport tengo un encabezado de informe, encabezado de pagina y el detalle.
Todo bien, pero si da la casualidad de que todos los detalles del registro (los registros) ocupan una hoja exacta, me sale en la siguiente hoja el encabezado de pagina(sin detalle) por lo que estropea una hoja de impresion (suponiendo ke se imprima todo)para nada. Sabes como puedo solucionarlo??

Saludos!
  #12 (permalink)  
Antiguo 17/04/2004, 07:27
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 6 meses
Puntos: 0
Pues mira, el Datareport no es muy potente, pero algunas veces aunque lo fuera no podremos hacer nada.

-Si el detalle no es fijo, puede variar, tan pronto tiene 20 registros como 25 y mañana 33, nada podrás hacer.
-Si es fijo, o sea que sabes que te va ocupar exactamente una hoja, ajusta todo lo que puedas el encabezado/pie de informe y página, el detalle, el alto de los label y textbox, etc, hasta que te quepa.

Poco más te puedo decir.
Saludos
Pablo
  #13 (permalink)  
Antiguo 17/04/2004, 10:38
Avatar de sowhat  
Fecha de Ingreso: mayo-2002
Ubicación: España, Valladolid
Mensajes: 152
Antigüedad: 22 años
Puntos: 0
Vaya, el detalle es fijo, da la casualidad de que al hacer una consulta d una tabla tendra x registros que es cuando pasa eso, cambiare un poco d tamaño el detalle a ver si con suerte sale menos.

Gracias!
  #14 (permalink)  
Antiguo 03/05/2004, 02:27
 
Fecha de Ingreso: mayo-2004
Ubicación: Colmenar Viejo
Mensajes: 6
Antigüedad: 20 años
Puntos: 0
Pregunta Ayuda en este tema

Buenos dias:

Leyendo este post he visto cosas interesantes y que son tal cual las estoy programando en un proyecto que necesito hacer para el "curro". Pero tengo una duda y es la siguiente:

La linea de codigo:

DataReport1.Sections(1).Controls(i + 1).DataField = (List2.List(i))

me da un error de que el control no admite esa propiedad o metodo (datafield) y no consigo saber xq es. Ya he visto que ustedes han utilizado tb esa misma linea de codigo y les ha funcionado. A ver si me pueden hechar una mano para conseguir sacarlo. Muchas gracias
  #15 (permalink)  
Antiguo 03/05/2004, 03:06
Avatar de sowhat  
Fecha de Ingreso: mayo-2002
Ubicación: España, Valladolid
Mensajes: 152
Antigüedad: 22 años
Puntos: 0
¿Que quieres hacer con esa linea?

Yo tengo por ej:

DataReport1.Sections("sec4").Controls("modelo").Ca ption = rst.Fields("modelo").Value

La seccion4(encabezado), control modelo(un label).caption igual al valor del registro del campo modelo (en este caso me da igual ke registro sea pq son todos con el mismo valor).

Has añadido la referencia de microsoft activex daba objects 2.6 y todo eso,no?
  #16 (permalink)  
Antiguo 03/05/2004, 04:03
 
Fecha de Ingreso: mayo-2004
Ubicación: Colmenar Viejo
Mensajes: 6
Antigüedad: 20 años
Puntos: 0
Sigo sin resolver mi duda

Pues lo que intento hacer es asignar la propiedad datafield de un rpttextbox del datareport llamado texto1 a un valor que tengo en una lista de mi formulario, al igual que tu asignas el caption en el ejemplo que me as puesto.

Si estan agregadas todas las librerias y componentes necesarios.

Bueno a ver si alguien mas sabe responder a mi duda xq me estoy comiendo la cabeza y necesito sacarlo.
  #17 (permalink)  
Antiguo 13/02/2005, 13:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 1
Antigüedad: 19 años, 2 meses
Puntos: 0
Ayuda con el datareport

Hola necesito ayuda con el datareport, estoy haciendo un progrma de facturacion y tengo el siguiente problema, necesito que en la seccion donde van los articulos sea siempre del mismo tamaño aunque sean 1 o 10 articulos para que en la seccion donde va el total este siempre en el mismo lugar, si no me explico muy bien preguntenme por favor, me urge solucionar este problema, de antemano gracias.

Tonov
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




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