Error cuando la consulta no encuentra registros

Tengo un pequeño inconveniente con un código que estoy realizando y es que necesito extraer solo una cantidad de datos de una tabla pero cuando no hay coincidencias me da error 3061, como puedo evitar esto para continuar con la ejecución de código, el código es el siguiente
sqld = "SELECT DISTINCTROW Control_Fecha.Producto, Format$([Control_Proceso].[Fecha],'mmmm') AS [Mes], Sum(Control_Linea.[Doc x Hora]) AS [Total Docenas] " _ & "FROM (([Apertura OP] INNER JOIN Control_Fecha ON [Apertura OP].[Nº OP] = Control_Fecha.[Nº de Orden]) INNER JOIN Control_Proceso ON Control_Fecha.Registro1 = Control_Proceso.Registro1) INNER JOIN Control_Linea ON Control_Proceso.Registro2 = Control_Linea.Registro2a " _ & "GROUP BY Control_Fecha.Producto, Format$([Control_Proceso].[Fecha],'mmmm'), [Apertura OP].PRODUCTO, [Apertura OP].PROCESO, Control_Proceso.Actividad " _ & "HAVING Control_Fecha.Producto =[Apertura OP.Producto] AND Control_Proceso.Actividad=[PROCESO] AND Format$([Control_Proceso].[Fecha],'mmmm')=" 
sqlh = "SELECT DISTINCTROW Control_Fecha.Producto, Format$([Control_Proceso].[Fecha],'mmmm') AS [Mes], Sum(Control_Linea.HH) AS [Total HH] " _ & "FROM (Control_Fecha INNER JOIN Control_Proceso ON Control_Fecha.Registro1 = Control_Proceso.Registro1) INNER JOIN Control_Linea ON Control_Proceso.Registro2 = Control_Linea.Registro2a " _ & "GROUP BY Control_Fecha.Producto, Format$([Control_Proceso].[Fecha],'mmmm') " _ & "HAVING Format$([Control_Proceso].[Fecha],'mmmm')=" 
Set base = CurrentDb
Set tablai = base.OpenRecordset("info_MES") 
For i = 0 To 11         
Set tablad = base.OpenRecordset(sqld & meses(i)) 
Set tablah = base.OpenRecordset(sqlh & meses(i))

1 respuesta

Respuesta
1
Para saber si un recordset devuelve o no registros lo puedes hacer (supongo que el recordset se llama rs:
Con EOF() ---> EOF te dice si es o no final de fichero:
If rs.EOF then -------------> Quiere decir que es final de fichero, por lo que si lo pones inmediatamente después de haber abierto el recordset y como el recordset por defecto se abre en el 1er registro lo que te está diciendo es que no tiene registros.
Con la función IsNull, compruebas si es nulo cualquier campo del recordset que tenga que tener registros... si es que los devuelve, si es nulo ---> recordset vacío:
If IsNull(rs!NombreCampo)= true then
Recordset vacío
También lo puedes hacer con RecordCount() ---> Cuenta los registros del recordset:
If rs.RecordCount=0 then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas