Access - A un formulario cerrado

 
Vista:

A un formulario cerrado

Publicado por Patres (11 intervenciones) el 08/07/2010 10:01:02
Hola, solicito de nuevo vuestra ayuda
Tengo una Base de Datos, obviamente, con varias tablas, formularios, informes, etc.

Mi problema:
Necesito que al cerrar un informe me marque una casilla de verificación en un formulario que NO está abierto.

Mi código sería:

If MsgBox(VMensaje, VBotones, VTítulo) = vbYes Then

Forms![Registro de Entrada]!VerificaciónGeneradoInforme = True

End If

Pero no funciona ya que me estoy refiriendo a un formulario distinto con una tabla distinta que pueden estar abiertas o no, según el usuario que esté usando el programa.

¿Como puedo solucionarlo?

Gracias por vuestro tiempo.
Patres.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:A un formulario cerrado

Publicado por Jefferson (11 intervenciones) el 08/07/2010 20:28:11
Hola Patres

Si la casilla de verificacion en ese formulario, es referenciada desde una tabla con la funcion agregada de dominio UpDate y con un pequeño recordset puedes hacer lo que pretendes.......

Ahora

Si la casilla de verificacion NO esta referenciada a una tabla, puedes crearte una variable Global Boolean y hay almacenar el valor para que luego al abrir el formulario ...............


Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A un formulario cerrado

Publicado por Patres (11 intervenciones) el 12/07/2010 11:26:46
Gracias Jefferson por tu respuesta.

(Teniendo en cuenta mis pocos conocimientos...)

El razonamiento lógico que he seguido:

'(Este prodedimiento lo pongo en un Modulo )
Public Sub MarcaChekInforme()

Dim Mensaje, Botones, Título, Respuesta

Título = "Informe de Denuncia - GRABADO SI/NO" 'Define el título.

Mensaje = "¿Desea MARCAR que la Denuncia tiene INFORME asociado?" & vbCrLf & "" & vbCrLf & "Marcar implica poder visualizar el informe desde el Reg. de Entrada."

Botones = vbYesNo + vbExclamation + vbDefaultButton2 'Define los botones.

If MsgBox(Mensaje, Botones, Título) = vbYes Then

'---Proceso
'1º localizar el registroDeLaTtabla: TablaRegistroEntrada Cuyo
'campoRegEntrada = Nº registroX

'2º Situados en ese registro, Cambiar el valor del campoGeneradoInforme = True

'3º Refrescar o actualizar datos
'---Fin del Proceso


CriterioBusqueda = "[RegEntrada]=" & "'" & VregEntradaDenuncias & "'"

If DCount("RegEntrada", "TablaRegistroEntrada (Denuncias)", CriterioBusqueda) > 0 Then

Dim VEstadoChek As Boolean

VEstadoChek = DLookup("[GeneradoInforme]", "[TablaRegistroEntrada (Denuncias)]", CriterioBusqueda)

MsgBox ("La casilla de verificación GeneradoInforme Está marcada como: " & VEstadoChek) '¡OK! funciona

'Si esto funciona. ¿Por Qué no hay una siguiente instrucción para cambiar el valor? (No importa que en ese momento no se actualice el formulario si está abierto)

End If
End If

No se si me explico bién.
Muchas gracias por vuestros consejos (Todos me los grabo. Ya que las ideas me sirven para aprender)

Saludos
Patres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A un formulario cerrado

Publicado por patres (11 intervenciones) el 13/07/2010 12:12:33
Hola jefferson,
Otra vez te pido ayuda.

He intentado seguir tus indicaciones pero me faltan conocimientos. (dos dias llevo dale que dale y no lo consigo)

He encontrado esta otra forma. Pero cometo algún error.

1º hago la prueba con este código y me funciona:

Dim SQL As String

SQL = "UPDATE TablaInspectores " & _
"SET TablaInspectores.Cargo = 'Paseante' " & _
"WHERE TablaInspectores.Nombre = 'Perico Palotes'"

DoCmd.RunSQL SQL

Pero al llevarlo a la práctica con este otro código, me da error. Creo que debe ser un error de sintaxis. Quizás con el Boolean...

Dim CriterioBusquedaAs String ' estas 2 lineas OK
CriterioBusqueda = "[RegEntrada]=" & "'" & VregEntradaDenuncias & "'"

Dim SQL As String

SQL = "UPDATE [TablaRegistroEntrada (Denuncias)] " & _
"SET [TablaRegistroEntrada (Denuncias)].GeneradoInforme = 'True' " & _
"WHERE " & CriterioBusqueda
DoCmd.RunSQL SQL

*Con el código que sí me funciona sale un mensaje avisandome que voy a modificar un registro. ¿Se podría evitar?

Saludos
Patres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A un formulario cerrado

Publicado por Jefferson (135 intervenciones) el 13/07/2010 18:20:06
Hola Patres

Desconozco bien lo que pretendes, me explico :

Mas arriba comentas con otro codigo, donde le indicas al usuario mediante un MsgBox "¿Desea MARCAR que la Denuncia tiene INFORME asociado?"
Bueno si el usuario indica SI corres la consulta de actualizacion

Dim SQL As String
SQL = "UPDATE TablaInspectores " & _
"SET TablaInspectores.Cargo = 'Paseante' " & _
"WHERE TablaInspectores.Nombre = 'Perico Palotes'"
DoCmd.SetWarnings True
DoCmd.RunSQL SQL
DoCmd.SetWarnings False

Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A un formulario cerrado

Publicado por Patres (11 intervenciones) el 14/07/2010 08:28:04
Hola Jefferson,
Disculpa mi torpeza. Aveces intento no hacer demasiado extensa mi pregunta y corro el riesgo de no explicarme bien.
También, esta es la primera vez que hago un programa en ACCESS y Visual Basic (Antes usaba algo el Delphi con Pascal)

Ya he aislado el problema, que como siempre, era un problema de comillas y paréntesis. Así ha quedado:

'Despues de crear un informe, convertirlo a pdf con fotos e imprimirlo aparece un MsgBox preguntando si marcamos la posibilidad de visualizarlo desde el registro de entrada. Si dice sí...

'VregEntradaDenuncias Es una variable pública
'GeneradoInforme Es un campo lógico ( Si/No)

SQL = "UPDATE [TablaRegistroEntrada (Denuncias)] " & _
"SET [TablaRegistroEntrada (Denuncias)].GeneradoInforme = True " & _
"WHERE [TablaRegistroEntrada (Denuncias)].RegEntrada = " & "'" & VregEntradaDenuncias & "'"

DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True

Gracias Jefferson
Patres (desde Barcelona)
¡Ah! Tampoco se SQL. ¿Si no fuera por vosotros...?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar