No consigo el resultado deseado si el formulario no tiene datos.

Tengo un formulario de Inicio y otro General desde Inicio abro el General en el general tengo esta instrucción

If Me.RecordsetClone.RecordCount = 0 Then
MsgBox "No hay datos que mostrar"
Cancel = True
End If

Donde no se abre si no tiene datos lo malo es que me cierra el de Inicio y quiero que siga abierto si no abre el General.

Si algún experto me puede decir la solución.

Respuesta
1

El formulario Inicio debe estar configurado como Emergente SÍ. En el formulario General evento Al abrir ingrese este código

Private Sub Form_Open(Cancel As Integer)
  If Me.RecordsetClone.RecordCount = 0 Then
     MsgBox "No hay datos", vbInformation, "Le informo"
     DoCmd.Close acForm, Me.Name
     Cancel = True
  End If
End Sub

2 respuestas más de otros expertos

Respuesta
1

Esta 'orden' " Cancel = True " es la que aplicara si se dan las circunstancias e impedirá la apertura del formulario.

Si se ha de abrir (y normalmente en un registro nuevo si lo permite), lo que habría que hacer es presentar el mensaje de aviso mediante (por ejemplo) un MSGBOX, se informa de que no hay datos y se abre el formulario (en blanco o en un registro nuevo para que alguno sea el primero).

Gracias por contestar.

Lo entiendo pero lo que quisiera al ser posible es que no me cerrara el formulario Inicio para poder seleccionar otra opción de dicho formulario.

No me cuadran los números ...

Asumí que ese era el evento OPEN del formulario que se abría desde el de inicio.

En el se verificaba que el/su origen de datos tenia contenido y de no tenerlo .. mensaje y cierre (CANCEL = parámetro que por defecto es FALSE y que si se le pone a TRUE cancela el evento).
Como el evento consistía en 'abrir algo', y se cancela (= no se abre) y fin de la fiesta.

Si se cierra el de inicio, será por algo diferente a lo que esta publicado.

Respuesta
1

Si tengo un formulario con un botón de comando, aunque la instrucción podría estar en cualquier otro evento

En el botón tengo puesto

Y en las propiedades del formulario Carpetas, en el evento Al cargar le tengo puesto

Private Sub Form_Load()
If Me.RecordsetClone.RecordCount = 0 Then
MsgBox "No hay datos que mostrar"
DoCmd.Close
End If
End Sub

Como, en el ejemplo, el formulario Carpetas está vacío, al pulsar el botón

Cuando pulso Aceptar, no muestra nada y "sigue" en el formulario 6

Me había olvidado, en el botón le tengo puesto simplemente

DoCmd. OpenForm "carpetas",,,,, acDialog

Y no necesitas para nada que el formulario sea emergente. Eperezfer, deja de decir tonterías.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas