Access - Error al cargar subformulario sin datos

 
Vista:

Error al cargar subformulario sin datos

Publicado por Ignacio (34 intervenciones) el 28/11/2006 11:55:33
Buenos dias:

Tengo un problema con una base de datos y no se como solucionarlo.

Desde un formualio en VB intento coger datos de otro formulario aplicando un filtro, si este formulario tienes datos no tengo ningun problema, pero cuando no tiene datos ese formulario me da error. utilizo este codigo, no se si sera muy correcto ya que acabo de empezar en esto del access y del VB

Private Sub Comando576_Click()
Dim Filtro1 As String

Filtro1 = "[DC]=" & Me![DC]

DoCmd.OpenForm "Dias trabajados al mes", , , Filtro1

If Forms![dias trabajados al mes].[Cuentadedtrabajados] = Empty Then
DoCmd.Close acForm, "Dias trabajados al mes"
MsgBox "No hay datos"
Else
Forms![Control].[dias totales trabajo] = Forms![dias trabajados al mes].[Cuentadedtrabajados]
DoCmd.Close acForm, "Dias trabajados al mes"
End If

Como peuedo hacer si el formulario dias trabajados al mes no tenga datos me diga que no tiene datos?

Un saludo y gracias de antemano
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
Imágen de perfil de Alejandro

Manejo de formularios y datos en Visual Basic

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 19:55:25
El código que estás utilizando es un buen comienzo, pero necesita algunos ajustes para manejar el caso en el que el formulario "Dias trabajados al mes" no tenga datos. En lugar de comparar con `Empty`, debes verificar si el formulario tiene algún registro. Puedes hacer esto utilizando el método `.Recordset.RecordCount` para contar los registros del formulario.

Aquí está el código modificado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Comando576_Click()
    Dim Filtro1 As String
    Dim frmDiasTrabajados As Form
 
    Filtro1 = "[DC] = " & Me![DC]
    DoCmd.OpenForm "Dias trabajados al mes", , , Filtro1
 
    Set frmDiasTrabajados = Forms("Dias trabajados al mes")
 
    If frmDiasTrabajados.Recordset.RecordCount = 0 Then
        DoCmd.Close acForm, "Dias trabajados al mes"
        MsgBox "No hay datos"
    Else
        Forms("Control").[dias totales trabajo] = frmDiasTrabajados![Cuentadedtrabajados]
        DoCmd.Close acForm, "Dias trabajados al mes"
    End If
End Sub

Cambios realizados:

1. Utilizamos la variable `frmDiasTrabajados` para hacer referencia al formulario "Dias trabajados al mes".

2. Comprobamos si el formulario tiene registros utilizando `frmDiasTrabajados.Recordset.RecordCount`. Si el valor es 0, significa que el formulario no tiene datos.

3. En lugar de utilizar `Forms![dias trabajados al mes].[Cuentadedtrabajados]`, utilizamos `frmDiasTrabajados![Cuentadedtrabajados]` para obtener el valor del campo "Cuentadedtrabajados" del formulario.

Con estos cambios, el código debería manejar correctamente el caso en el que el formulario "Dias trabajados al mes" no tenga datos y mostrará un mensaje indicando que no hay datos.

Espero que esta solución te sea útil para manejar formularios y datos en Visual Basic en Access. ¡Buena suerte!
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