Access - Cerrar formulario con un RecordSource sin registros

   
Vista:

Cerrar formulario con un RecordSource sin registros

Publicado por Jose (15 intervenciones) el 10/09/2015 21:53:43
Hola.

Tengo un formulario al que le asigno en el evento Open el recordsource (es la última instrucción del evento: Me.RecordSource = sql). A veces la sql no devuelve registros, y quisiera que en ese caso, saliera un msgbox avisando de ello y se cerrase el formulario... ¿Sabéis el código que debo poner?

Gracias.
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

Cerrar formulario con un RecordSource sin registros

Publicado por Enrique Heliodoro (1663 intervenciones) el 11/09/2015 01:58:23
Para no hacer algo que no es necesario hacer, lo mejor es preguntarlo antes ...

Un simple DCount sobre ese mismo conjunto de datos dará una respuesta.
.- cero = sin datos
.- diferente de cero = hay datos
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

Cerrar formulario con un RecordSource sin registros

Publicado por Jose (15 intervenciones) el 11/09/2015 10:29:48
Gracias! Parece fácil, pero algo tan simple como:

Me.RecordSource = sql

If DCount("[id]", sql) = 0 Then
MsgBox "No hay datos con los criterios seleccionados"
End If

me da el error en tiempo de ejecución: El campo es demasiado pequeño para aceptar la cantidad de datos que intenta agregar. Intente insertar o pegar menos datos.

¿Sabes qué estoy poniendo mal? Porque me despista eso de intentar insertar menos datos...
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

Cerrar formulario con un RecordSource sin registros

Publicado por Enrique Heliodoro (1663 intervenciones) el 11/09/2015 10:53:48
Si: todo

La SQL por buena o mala que sea, no es un origen valido para una función de dominio
Las funciones de dominio trabajan sobre conjuntos mesurables (las tablas y consultas GUARDADAS)
La función DCount cuenta REGISTROS, asi que el primer campo no se aplica, esta por simple compatibilidad con el resto de las funciones.

Un uso adecuado y lógico de la función consistiría en poder mesurar si existe el elemento mas pequeño (que de lugar a un registro), por ejemplo un Ítem en una factura en la que la factura esta en una tabla y los ítems en una tabla asociada (como líneas de detalle).

En el supuesto anterior (y basándose en el campo de relación entre factura y detalle, que suele ser el numero de factura o similar) ...
Tabla Facturas
Tabla DetFactura
Relación entre ambas ID_Factura

Como conocer si hay ítems en 'DetFctura' para la factura cuyo ID es 123456 mediante DCount

IF DCount("*", "DetFactura", "Id_factura = 123456") Then
... aquí lo que se necesite ejecutar si hay detalles ...
Else
... aquí si no lo hay ¿un mensaje o algo asi?...
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar