none
Problema con vba de access en informe al imprimir me 'duplica' campos RRS feed

  • Pregunta

  • Hola compañeros,

    tengo una aplicación con access 2007 donde hago un uso 'generoso' del vba para poder analizar/comparar campos de la consulta

    que carga el informe  com muchos bucles if.....

    Muy por encima... lo que pretendo es que mi aplicación  me cargue las variables de una fabricación 'saliente' y una fabricación 'entrante'..me las compare y me genere un resultado (que me diga lo que ya me vale y lo que necesito cambiar). También en un texbox me escribe a lineas lo que necesito para  cubrir el cambio de fabricación.

    El problema me surge cuando en la vista preliminar lo encuentro correcto... pero al imprimir se me 'duplican' los  campos. Un ejemplo de resultado puede ser:

             1-tope estación 1 medida xx

             2- anillo estación 3

             3- arandela estación 5

             1-tope estación 1 medida xx

             2- anillo estación 3

             3- arandela estación 5

    la función que me escribe en el texbox es:

    Private nlinia As Integer (la tengo declarada fuera del codigo sino me genera error)
    
    Public Sub prepara(ByVal entrada As String) 
    
    Dim vtexte As String 
    nlinia = nlinia + 1 
    If nlinia >= 1 Then 
    Me.txt_ent = Me.txt_ent '& vbCrLf 
    vtexte = entrada 
    'escribimos en el txt 
             Me.txt_ent.Value = Me.txt_ent & nlinia & " - " & vtexte & vbCrLf
    End If 
    End Sub


    ¿Que hago mal?  me han sugerido que no inicio correctamente las variables pero no 'entiendo' porque al imprimir me lo vuelve a cargar todo...

    Gracias por adelantado


    Spandau

    • Editado Spandau martes, 27 de diciembre de 2011 9:05
    martes, 27 de diciembre de 2011 9:03

Respuestas

  • Imagino que la duplicidad de la que hablas es la consecuencia de la concatenación:

    Me.txt_ent = Me.txt_ent '& vbCrLf

    Aquí pueden pasar dos cosas. Si haces una vista preliminar y después una impresión no se "reinician" correctamente los recordsets del report. No entiendo muy bien la razón de por qué lo hace, pero es posible si es un subinforme. ¿Qué ocurre si imprimes sin hacer una vista preliminar?.

     me han sugerido que no inicio correctamente las variables

    Realmente creo que es este el problema. Intenta inicializar las variables en el Report_Load.

     

    • Marcado como respuesta Spandau jueves, 29 de diciembre de 2011 8:16
    martes, 27 de diciembre de 2011 17:34

Todas las respuestas

  • No lo tengo claro. Se duplican los valores en el cuadro de texto?
    martes, 27 de diciembre de 2011 17:12
  • si,

    después de la vista preliminar (que el resultado es el correcto),

    le doy a imprimir.... me vuelve a ejecutar el vba y me duplica los valores cargados en el texbox  Txt_ent.

    alguien me sugiere alguna idea??

    Gracias por adelantado
    Spandau
    martes, 27 de diciembre de 2011 17:21
  • Imagino que la duplicidad de la que hablas es la consecuencia de la concatenación:

    Me.txt_ent = Me.txt_ent '& vbCrLf

    Aquí pueden pasar dos cosas. Si haces una vista preliminar y después una impresión no se "reinician" correctamente los recordsets del report. No entiendo muy bien la razón de por qué lo hace, pero es posible si es un subinforme. ¿Qué ocurre si imprimes sin hacer una vista preliminar?.

     me han sugerido que no inicio correctamente las variables

    Realmente creo que es este el problema. Intenta inicializar las variables en el Report_Load.

     

    • Marcado como respuesta Spandau jueves, 29 de diciembre de 2011 8:16
    martes, 27 de diciembre de 2011 17:34
  • ¿En cual evento llamas al sub prepara?
    martes, 27 de diciembre de 2011 17:57
  • Lo tengo todo en el format:

                  Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

     

    tengo todo el vba dentro del Format anteriormente mencionado (excepto las funciones), y me va muy lento... ¿donde és el mejor lugar para ubicar el código?

     


    Spandau
    • Editado Spandau martes, 27 de diciembre de 2011 23:36
    martes, 27 de diciembre de 2011 23:00
  • Esta es la explicación del sitio oficial de Microsoft.: http://msdn.microsoft.com/en-us/library/aa159637%28v=office.10%29.aspx

     

    Puedes hacer varias cosas:una es crear una variable en el reporte, en la seccion principal y en el evento format, le das valor. variable que usarás como bandera (flag). Otra es que al imprimir si tu text es diferente de '', salta el procedimiento que lo llena.

    miércoles, 28 de diciembre de 2011 1:15
  • Gracias por vuestras aportaciones,

    al final he optado por seguir el consejo de Jesús Velasco,

    he creado un boton con vista previa y otro para imprimir,

    todos los informes los imprimo después de la vista previa menos este....pero és la solución más facil.

    Gracias


    Spandau
    jueves, 29 de diciembre de 2011 8:18