Imprimir en accces 2010

Quiseraa saber si me puedes ayudar con algo tengo una base de datos que se llama antticipos y planillas y un formulario que se llama pago de anticipos, lo que quiero hacer es que cuando termine de llenar el formulario el me pregunte si quiero imprimir el pago o no, si lle digo que si me impprima lla información que acabo de ingresar en un informe que diseñe que se llama pagos y si digo que no me permita seguir con el ingreso del siguiente pago.
Lo otro que e intntando hacer es una consulta de la tabla donde me permita ingresar la fecha inicial del pago y la fecha final del pago y me muestre en la pantalla dicha información

1 Respuesta

Respuesta
1
Como diría Jack el Destripador, vayamos por partes.
En tu formulario debes tener un campo que identifique inequívocamente el registro que estás metiendo (un Id). Tienes que coger el nombre de ese campo (propiedades->Pestaña Otras->Nombre). Voy a suponer que es un campo numérico o autonumérico y lo voy a llamar Id
1.- Sacas las propiedades del formulario->Pestaña Otras-> Ciclo y le seleccionas "Registro activo"
2.- Te vas al último campo del formulario en el que introduces los datos. Sacas sus propiedades->Pestaña Eventos->Después de actualizar. Te sitúas en el espacio en blanco que hay a la derecha de ese evento y verás que te aparece un pequeño botón con unos puntos suspensivos. Haces click sobre él y en la ventana que te sale le dices que quieres generar código.
3.- Se te abrirá el editor de VBA. Ahí, entre las dos líneas que te aparecen por defecto, tienes que escribir el siguiente código:
---
Private Sub ...
Dim vId As Integer
    vId = Me.Id.Value
        'Aparece el mensaje pidiendo la impresión
    Dim resp As Integer
    resp = MsgBox("¿Quiere imprimir el registro activo?", vbQuestion + vbYesNo, "¿IMPRIMIR?")
    If resp = vbNo Then
        DoCmd.RunCommand acCmdRecordsGoToNew
    Else
        DoCmd.RunCommand acCmdSaveRecord
        DoCmd.OpenReport "Informe", acViewPreview, , "[Id] =" & vId
        DoCmd.RunCommand acCmdRecordsGoToNew
    End If
End Sub
----
Recuerda que debes cambiar Id (en negrita) por el nombre tu campo identificador. También debes cambiar Informe por el nombre de tu informe.
Si tu identificador no fuera un dato tipo numérico, sino que fuera un dato tipo texto, debes cambiar esta línea:
DoCmd.OpenReport "Informe", acViewPreview, , "[Id] =" & vId
Por esta otra
DoCmd.OpenReport "Informe", acViewPreview, , "[Id] = '" & vId & "'"
Y ya lo tienes listo.
La segunda parte:
1.- Creas la consulta con los datos de la tabla y, evidentemente incluyes el campo donde se recoge la fecha de pago (voy a suponer que sólo tienes un campo para este cometido). Supongamos que ese campo se llama FechaPago.
2.- Una vez tengas la consulta hecha te vas a la columna donde esté FechaPago y te sitúas sobre la línea que pone Criterio. En esa línea escribes lo siguiente:
>=["¿Fecha inicial?"] Y <= ["¿Fecha final?"]
Ojo! Para que te funcione debes tener en cuenta que:
- El campo FechaPago, en la tabla, debe estar definido como de tipo Fecha/Hora
- Cuando ejecutas la consulta te saldrán dos mensajes pidiéndote la fecha inicial y la final. El formato de fecha que debes introducir como input es dd/mm/aa.
Para ser más claros, cuando te pida ¿Fecha inicio? escribes 01/01/01
Cuando te pida ¿Fecha final? escribes 31/12/01
Y ya está. Si tienes algún problemilla o duda me lo comentas.
Primero te quiero agradecer por toda la yuda que me has brindado
ya efectúe la primer parte la de imprimir un formulario pero estoy teniendo el siguiente problema
este es la forma como que quedo el código
Private Sub CANCELACION_PLANILLA_AfterUpdate()
Dim vId As Integer
    vId = Me.PLANILLA.Value
             'Aparece el mensaje pidiendo la impresión
    Dim resp As Integer
    resp = MsgBox("¿Quiere imprimir el comprobante de egreso?", vbQuestion + vbYesNo, "¿IMPRIMIR?")
    If resp = vbNo Then
        DoCmd.RunCommand acCmdRecordsGoToNew
    Else
        DoCmd.RunCommand acCmdSaveRecord
        DoCmd.OpenReport "PAGOS PLANILLAS", acViewPreview, , "[planilla] =" & vId
        DoCmd.RunCommand acCmdRecordsGoToNew
    End If
End Sub
Cuando le doy me sale el cuadro imprimir si o no al darle si me nuestra la pantalla del informe pero me dice lo siguiente.
Se produce el error 2046 en tiempo de ejecución
la acción o comando 'registroirnuevo' no esta disponible ahorra
continuar finalizar depurar ayuda
al darle depurar me muestra en código resaltado en amarillo lo siguiente
DoCmd.RunCommand acCmdRecordsGoToNew
Y el informe que se ve en pantalla me muestra el registro que introducí pero varias veces como 3 páginas casi
que pena molestarte pero me encanta aprender y que más con ustedes las personas que saben
Ok... Con un Access rebotón hemos topado... (je, je...).
Cambia el código por este otro, igual que el que tienes pero ligeramente modificado:
---
Private Sub ...
Dim vId As Integer
    vId = Me.Planilla.Value
        'Aparece el mensaje pidiendo la impresión
    Dim resp As Integer
    esp = MsgBox("¿Quiere imprimir el comprobante de egreso?", vbQuestion + vbYesNo, "¿IMPRIMIR?")
    If resp = vbNo Then
        DoCmd.RunCommand acCmdRecordsGoToNew
    Else
        DoCmd.RunCommand acCmdSaveRecord
        DoCmd.OpenReport "PAGOS PLANILLAS", acViewNormal, , "[planilla] =" & vId
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "Form1", , , , acFormAdd
    End If
End Sub
---
Piensa que tendrás que cambiar Form1 (en negrita) por el nombre de tu formulario de trabajo.
Ahora, en la línea de código DoCmd. OpenReport... verás que el argumento acViewPreview te lo he cambiado a acViewNormal. El primero te saca una vista previa del informe, el segundo te lo saca directamente a la impresora.
Respecto a lo que me comentas del tema del informe, que se te abre tres veces, la verdad es que no sé por qué te hace eso. Si tuviera que apostar diría que hay algo en el propio informe que anda mal, pero no se me ocurre qué puede ser, porque el código está testeado. De hecho, he creado una miniBD para comprobar su funcionamiento. Si le quieres echar un vistazo para comparar puedes bajártela aquí.
Comprueba bien tu informe. Si no hubiera manera de que lo pudieras arreglar pásame una copia de tu BD en zip (si hay algo "confidencial" elimina los registros de las tablas, pero déjame algunos, inventados, para poder hacer pruebas).
Mi correo es [email protected]
Ya me dirás cosas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas