Access - Ayuda con Codigo VBA

 
Vista:
sin imagen de perfil

Ayuda con Codigo VBA

Publicado por Martin (17 intervenciones) el 26/05/2012 03:56:11
Hola Gente!! Necesitaría una ayudita con este codigo VBA por favor...

Option Compare Database
Option Explicit

Private dbs As DAO.Database
Private Rst As DAO.Recordset
Private miSql As String
Private encontrado As Boolean
--------------------------------------------------------------------------------------------
Public Sub controlAvisos()
Set dbs = CurrentDb
encontrado = False

Set Rst = dbs.OpenRecordset("TPrincipal", dbOpenForwardOnly)
With Rst
Do Until Rst.EOF
If Rst.Fields("FechaAut").Value < Date - 9 Then
¿¿¿¿¿¿¿¿¿???????????? ("FechaEspTecnicas")
DoCmd.OpenReport "RCEAT", acPreview
encontrado = True
Exit Do
End If
.MoveNext
Loop
End With

Rst.Close
dbs.Close
Set Rst = Nothing
Set dbs = Nothing
End Sub

Las consultas, me funcionan muy bien, pero el codigo...NOP
Lo que estoy buscando hacer (y ya me he quemado el cerebro) es que este Mdl, al verificar la información, ademas de cumplir con el If del Recordset, tambien verifique si un campo "es=Null"para que ejecute el OpenReport, caso contrario, no haga nada.
El campo que necesito agregar se llama "FechaEspTecnicas" y contiene fechas.
Muchas gracias y saludos!!
Martín
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

Ayuda con Codigo VBA

Publicado por marco antonio perez (4 intervenciones) el 26/05/2012 04:55:57
Puedes crear una funcion que te devuelva el valor como boolean, y para el null usar la funcion isnull.

If Rst.Fields("FechaAut").Value < Date - 9 and isnull(campo)=true Then
...

function verificar(...) as boolean
...
end function.
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Codigo VBA

Publicado por Neckkito (1157 intervenciones) el 28/05/2012 23:25:12
Hola!

Prueba con esto (ojo, estas duplicando innecesariamente la llamada a la variable que te recoge el recordset. Si lo escribes como lo has escrito no necesitas el With rst ). Tampoco, en este contexto, tiene sentido el uso de la variable encontrado (a no ser que el código sea sólo un fragmento de un proceso mayor) En el código que te paso yo sí utilizo With...End With y elimino la variable booleana:

Private dbs As DAO.Database
Private Rst As DAO.Recordset
Private miSql As String

--------------------------------------------------------------------------------------------
Public Sub controlAvisos()
Set dbs = CurrentDb
Set Rst = dbs.OpenRecordset("TPrincipal", dbOpenForwardOnly)
With Rst
Do Until .EOF
If .Fields("FechaAut").Value < Date - 9 Then
If isnull(.Fields("NombreCampo").Value) then
DoCmd.OpenReport "RCEAT", acPreview
Exit Do
End If
End If
.MoveNext
Loop
End With

Rst.Close
dbs.Close
Set Rst = Nothing
Set dbs = Nothing
End Sub

A ver si es esto lo que querías.

Saludos,

Neckkito (... http://neckkito.eu5.org ... // ... http://neckkito.16mb.com/Access ...)
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
sin imagen de perfil

Ayuda con Codigo VBA

Publicado por Martín (17 intervenciones) el 29/05/2012 01:43:00
GRACIASS Neckkito, funciono PERFECTAMENTE!!!!
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
sin imagen de perfil

Ayuda con Codigo VBA

Publicado por Martín (17 intervenciones) el 29/05/2012 19:26:02
Hola Neckkito, y a esta consulta donde debería agregarle el "If IsNull" del Campoxxx?

miSql = "SELECT TPrincipal.Sede,TPrincipal.FechaEnvioPByC FROM TPrincipal" _
& " INNER JOIN MSysTSedes ON TPrincipal.Sede=MSysTSedes.Sede" _
& " WHERE TPrincipal.FechaEnvioPByC<#" & Format(Date - 5, "mm/dd/yy") & "#" _
& " AND MSysTSedes.Castellano=TRUE"
Set Rst = dbs.OpenRecordset(miSql)
If Rst.RecordCount = 0 Then

Else
DoCmd.OpenReport "RPubSedeCastellano", acPreview
encontrado = True
End If

Gracias!
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Codigo VBA

Publicado por Neckkito (1157 intervenciones) el 29/05/2012 19:41:45
Hola!
Lo deberías poner en el WHERE, como otro AND.
AND isnull(Tabla.Campo)

Saludos,

Neckkito
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
sin imagen de perfil

Ayuda con Codigo VBA

Publicado por Martín (17 intervenciones) el 29/05/2012 21:00:16
Una vez mas, gracias Maestro Neckkito!!
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