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

AYUDA: Actualizar reportes

Estas en el tema de AYUDA: Actualizar reportes en el foro de Visual Basic clásico en Foros del Web. Hola amigos, bueno aqui les tengo una gran duda que no se como hacer para solucionarlo, resulta que antes para mostrar los reportes tenia enlazarlos ...
  #1 (permalink)  
Antiguo 08/08/2008, 11:08
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo AYUDA: Actualizar reportes

Hola amigos, bueno aqui les tengo una gran duda que no se como hacer para solucionarlo, resulta que antes para mostrar los reportes tenia enlazarlos al dataenviroment pero se tenia que refresacar y no refrescaba inmediatamente. entonces loque hice fue enlazar el reporte directamente a la base de datos en acces. pero resulata que cuando abro el reporte para que me muestre la consulta acuual tengo que abrir dos veces el reporte y no se porque.

bueno aqui les muestro el codigo que estoy empleando:


Código:
vnumero = Trim(Label4.Caption)
rancho = Trim(predio)

Set rst = dbs.OpenRecordset("select * from fertilizacion where numero like '" & vnumero & "'")
If rst.RecordCount = 0 Then
    
   dbs.Execute "INSERT INTO fertilizacion(numero,prom1parto,predio) values('" & Trim(vnumero) & "','" & Trim(total) & "','" & Trim(rancho) & "')"
    
    
ElseIf rst.RecordCount = 1 Then

    dbs.Execute "UPDATE fertilizacion set numero='" & Trim(vnumero) & "',prom1parto='" & Trim(total) & "',predio='" & Trim(rancho) & "'where numero= '" & vnumero & "'"


End If

base.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "\bdrancho.mdb", , "fertilizacion"


Set rs = base.Execute("select * from fertilizacion where numero='1'")

With DataReport51
    With DataReport51.Sections("Sección2")
     ' Encabezado de Informe
      Set .Controls("Image2").Picture = LoadPicture(App.Path & "\logo.jpg")
    .Controls.Item("Etiqueta14").Caption = frmPrincipal.Label4.Caption
    .Controls.Item("Etiqueta15").Caption = frmPrincipal.Label5.Caption
    .Controls.Item("Etiqueta20").Caption = predio
    .Controls.Item("Etiqueta22").Caption = Combo2.Text
    .Controls.Item("Etiqueta10").Caption = Combo1.Text
    End With
        
      With DataReport51.Sections("Sección1").Controls
        .Item("txttasa").DataField = rs("tasa").Name
        .Item("txtvacas").DataField = rs("vacas").Name
        .Item("txtvaquillas").DataField = rs("vaquillas").Name
        .Item("txttotal").DataField = rs("total").Name
           End With
     Set .DataSource = rs
       .Refresh
       .Show
        
  End With
bueno cabe destacar que antes de mostrar el reporte y al realizar la consulta esta seguarda en una tabla temporal y de ahi se va al reporte.

alguien podria ayudarme a como hacer que me muestre los datos consultados sin necesidad de abir 2 veces el reporte. es como refrescar la base de datos?? espero puedan ayudarme y les agradezco de antemano y les envio un cordial saludo..
  #2 (permalink)  
Antiguo 08/08/2008, 11:41
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: AYUDA: Actualizar reportes

Cita:
Iniciado por rishart Ver Mensaje
Hola amigos, bueno aqui les tengo una gran duda que no se como hacer para solucionarlo, resulta que antes para mostrar los reportes tenia enlazarlos al dataenviroment pero se tenia que refresacar y no refrescaba inmediatamente. entonces loque hice fue enlazar el reporte directamente a la base de datos en acces. pero resulata que cuando abro el reporte para que me muestre la consulta acuual tengo que abrir dos veces el reporte y no se porque.

bueno aqui les muestro el codigo que estoy empleando:


Código:
vnumero = Trim(Label4.Caption)
rancho = Trim(predio)

Set rst = dbs.OpenRecordset("select * from fertilizacion where numero like '" & vnumero & "'")
If rst.RecordCount = 0 Then
    
   dbs.Execute "INSERT INTO fertilizacion(numero,prom1parto,predio) values('" & Trim(vnumero) & "','" & Trim(total) & "','" & Trim(rancho) & "')"
    
    
ElseIf rst.RecordCount = 1 Then

    dbs.Execute "UPDATE fertilizacion set numero='" & Trim(vnumero) & "',prom1parto='" & Trim(total) & "',predio='" & Trim(rancho) & "'where numero= '" & vnumero & "'"


End If

base.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "\bdrancho.mdb", , "fertilizacion"


Set rs = base.Execute("select * from fertilizacion where numero='1'")

With DataReport51
    With DataReport51.Sections("Sección2")
     ' Encabezado de Informe
      Set .Controls("Image2").Picture = LoadPicture(App.Path & "\logo.jpg")
    .Controls.Item("Etiqueta14").Caption = frmPrincipal.Label4.Caption
    .Controls.Item("Etiqueta15").Caption = frmPrincipal.Label5.Caption
    .Controls.Item("Etiqueta20").Caption = predio
    .Controls.Item("Etiqueta22").Caption = Combo2.Text
    .Controls.Item("Etiqueta10").Caption = Combo1.Text
    End With
        
      With DataReport51.Sections("Sección1").Controls
        .Item("txttasa").DataField = rs("tasa").Name
        .Item("txtvacas").DataField = rs("vacas").Name
        .Item("txtvaquillas").DataField = rs("vaquillas").Name
        .Item("txttotal").DataField = rs("total").Name
           End With
     Set .DataSource = rs
       .Refresh
       .Show
        
  End With
bueno cabe destacar que antes de mostrar el reporte y al realizar la consulta esta seguarda en una tabla temporal y de ahi se va al reporte.

alguien podria ayudarme a como hacer que me muestre los datos consultados sin necesidad de abir 2 veces el reporte. es como refrescar la base de datos?? espero puedan ayudarme y les agradezco de antemano y les envio un cordial saludo..
Bueno, hay algunas cosas que no entiendo de ése código:

Set rs = base.Execute("select * from fertilizacion where numero='1'")

¿Y porqué no

Set rs = base.OpenRecordset("select * from fertilizacion where numero='1'") ??


With DataReport51
With DataReport51.Sections("Sección2")

Un With dentro del mismo With? no sería mejor así:

With DataReport51
.Sections("Sección2")
....
No digo que salte error, pero parece mas lógico y evitamos redundancias.

y la instrucción .Refresh no es necesaria.

  #3 (permalink)  
Antiguo 08/08/2008, 13:10
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: AYUDA: Actualizar reportes

Cita:
Iniciado por Avellaneda Ver Mensaje
Bueno, hay algunas cosas que no entiendo de ése código:

Set rs = base.Execute("select * from fertilizacion where numero='1'")

¿Y porqué no

Set rs = base.OpenRecordset("select * from fertilizacion where numero='1'") ??


With DataReport51
With DataReport51.Sections("Sección2")

Un With dentro del mismo With? no sería mejor así:

With DataReport51
.Sections("Sección2")
....
No digo que salte error, pero parece mas lógico y evitamos redundancias.

y la instrucción .Refresh no es necesaria.

hola Avellenade, discula el porque utilizo base.execute y no openrecordset, se debe a que es funcion lo tengo con ado y pues despues de poner base. ahi en la lista de las opciones no aparece la opción de openrecordset, por eso puse la instruccion execute, disculpa la molestia eh insistencia pero me pidrias o alguien podria ayudarme a que se debe que tengo que abrir 2 veces el reporte para que me muestre el reporte de la consulta actualizada....

es decir. en el boton para mostrar el reporte antes de eso realizo la consulta, depues ya teniendo los valores necesarios para la consulta entonces realizo la actualizacion en la base de datos y depsues de eso hago la operacion para mandarlo al reporte.

porfavor alguien podria ayudarme. les doy las gracias de antemano y les envio un cordial saludo.
  #4 (permalink)  
Antiguo 08/08/2008, 14:05
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: AYUDA: Actualizar reportes

Cita:
Iniciado por rishart Ver Mensaje
hola Avellenade, discula el porque utilizo base.execute y no openrecordset, se debe a que es funcion lo tengo con ado y pues despues de poner base. ahi en la lista de las opciones no aparece la opción de openrecordset, por eso puse la instruccion execute, disculpa la molestia eh insistencia pero me pidrias o alguien podria ayudarme a que se debe que tengo que abrir 2 veces el reporte para que me muestre el reporte de la consulta actualizada....

es decir. en el boton para mostrar el reporte antes de eso realizo la consulta, depues ya teniendo los valores necesarios para la consulta entonces realizo la actualizacion en la base de datos y depsues de eso hago la operacion para mandarlo al reporte.

porfavor alguien podria ayudarme. les doy las gracias de antemano y les envio un cordial saludo.
el porque utilizo base.execute y no openrecordset, se debe a que es funcion lo tengo con ado

¿seguro que es con ado y no con dao? El método OpenRecordset no existe en ADO

Y porqué si te funciona aquÍ
Set rst = dbs.OpenRecordset("select * from fertilizacion where numero like '" & vnumero & "'")

¿probaste con las respuestas que te dí?

  #5 (permalink)  
Antiguo 09/08/2008, 08:53
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Respuesta: AYUDA: Actualizar reportes

Cita:
Iniciado por Avellaneda Ver Mensaje
el porque utilizo base.execute y no openrecordset, se debe a que es funcion lo tengo con ado

¿seguro que es con ado y no con dao? El método OpenRecordset no existe en ADO

Y porqué si te funciona aquÍ
Set rst = dbs.OpenRecordset("select * from fertilizacion where numero like '" & vnumero & "'")

¿probaste con las respuestas que te dí?

Muchas Gracias Avellaneda, bueno te comento que ya estoy tratando de conectar el reporte pormedio de dao consultas solo que en el momentos de hacer esta operacion me marca un error donde dice que no coinciden los tipos???

Código:
           End With
     Set .DataSource = rs
       .Show
creo que aqui donde conecta la consulta del recordset a la base de datos, pero no acepta la expresion "Set .DataSource = rs" que puedo hacer, porque si lo quio el datareport aparece en blanco y dice que no hay datos.. me prodias ayudar, te agrasdeco de antemano y te envio un cordial saludo
  #6 (permalink)  
Antiguo 09/08/2008, 10:16
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: AYUDA: Actualizar reportes

A ver,

creo que estás mezclando ADO y DAO, con lo cual debes tener algún conflicto de librerías.

¿Porqué no pones el código completo que estás utilizando y cómo declaras las variables de conexión a la base de datos?

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 02:56.