Imprimir página | Cerrar ventana

Error date VBA BBDD Access 2000 convertida a v2007

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84352
Fecha de impresión: 18/Junio/2019 a las 05:10


Tema: Error date VBA BBDD Access 2000 convertida a v2007
Publicado por: CarlosNF
Asunto: Error date VBA BBDD Access 2000 convertida a v2007
Fecha de publicación: 07/Marzo/2019 a las 01:24
Hola a todos

Tengo un problema con una BBDD creada con ACCESS 2000 con sus macros y sus modulillos que funciona correctamente en el 2000 pero que tras convertirla a la version 2007 muestra el siguiente error VBA al pulsar en algunos botones relacionados con formularios que contienen fechas:

"Se ha producido el error 2683 en tiempo de ejecucución
No hay ningun objeto en ese control"

Al ir a Depurar me muestra error en esta linea

Private Sub Form_Current()
Me.cal1.Value = Date
End Sub

El campo de formulario que falla tiene como origen del control lo siguiente =CFecha([factual])

Os copio también parte del resto del procedimiento, ya que yo de VBA lo justo... Cualquier ayuda es bienvenida. Muchas gracias a todos

Option Compare Database
Dim seleccion As Date

Private Sub cal1_Click()
Dim base As Database, registros  As Recordset
Dim FINAL, inicio As Currency
Me.factual = Me.cal1.Value

t19 = "": t1930 = "": t110 = "": t11030 = "": t111 = "": t11130 = "": t112 = "": t11230 = ""
t113 = "": t11330 = "": t114 = "": t11430 = "": t115 = "": t11530 = "": t116 = "": t11630 = ""
t117 = "": t11730 = "": t118 = "": t11830 = "": t119 = "": t11930 = "": t120 = ""
t
...............

Set base = CurrentDb

Set registros = base.OpenRecordset("select * from planing where codigo= " & Me.CODIGO & ";", dbOpenDynaset, dbReadOnly)
If Not registros.BOF Then
    registros.MoveFirst
End If

Do While Not registros.EOF
FINAL = registros.Fields("fechafin")
inicio = registros.Fields("fechainicio")
If CDate(Texto0 & " " & nueve.Caption) >= inicio And CDate(Texto0 & " " & nueve.Caption) < FINAL Then
    t19 = registros.Fields("domicilio")
    t19.ControlTipText = registros.Fields("nºexpediente")
End If
If CDate(Texto0 & " " & NUEVE30.Caption) >= inicio And CDate(Texto0 & " " & NUEVE30.Caption) < FINAL Then
    t1930 = registros.Fields("domicilio")
    t1930.ControlTipText = registros.Fields("nºexpediente")
End If
If CDate(Texto0 & " " & DIEZ.Caption) >= inicio And CDate(Texto0 & " " & DIEZ.Caption) < FINAL Then
    t110 = registros.Fields("domicilio")
    t110.ControlTipText = registros.Fields("nºexpediente")
End If
If CDate(Texto0 & " " & DIEZ30.Caption) >= inicio And CDate(Texto0 & " " & DIEZ30.Caption) < FINAL Then
    t11030 = registros.Fields("domicilio")
    t11030.ControlTipText = registros.Fields("nºexpediente")
End If
If CDate(Texto0 & " " & ONCE.Caption) >= inicio And CDate(Texto0 & " " & ONCE.Caption) < FINAL Then
    t111 = registros.Fields("domicilio")

......








Respuestas:
Publicado por: xavi
Fecha de publicación: 07/Marzo/2019 a las 01:33
Hola Carlos y bienvenido al foro,

¿Que tipo de control es ca1? porque tiene toda la pinta de ser un control Calendar. En algún momento Access dejó de incluido... no se si en 2007 o 2010

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: CarlosNF
Fecha de publicación: 07/Marzo/2019 a las 11:34
Hola Xavi

Muchas gracias por tu rápida respuesta motivo por el que esta noche he dormido realmente poco...

Efectivamente, CAL1 es un control de esos antiguos OLE que despliegas año, mes y pulsas día. Si lo elimino ya no da error. Lo he sustituido por un control ActiveX denominado Microsoft Date and Time Control 6.0 y le he denominado CAL1 y parece que va pero no actualiza bien la fecha introducida en los otros controles relacionados con ese. No se si voy bien... También cuando elijo una fecha y vuelvo a hacer click en el control me dice "Se ha producido el error "3075" en tiempo de ejecución. Error de sintaxis (falta operador) en la expresion de la consulta 'codigo=' y al depurar  marca este error

Set base = CurrentDb

Set registros = base.OpenRecordset("select * from planing where codigo= " & Me.CODIGO & ";", dbOpenDynaset, dbReadOnly)
If Not registros.BOF Then
    registros.MoveFirst
End If


¿No sería suficiente ingresar un control independiente llamado Cal1 y listo.? Funcionaria la orden que fallaba de inicializar el campo con la fecha actual, que aparece en varios sitios? (cal1.value=date) 

Un saludo




Publicado por: xavi
Fecha de publicación: 07/Marzo/2019 a las 11:51
La verdad es que poco te podré decir porque acostumbro a huir de los ActiveX. Por la naturaleza de mis clientes es verdaderamente difícil salirse de los controles estándar. Incluso algunos tan "inocuos" como una ProgressBar me han dado problemas.

Para las fechas simplemente utilizo un cuadro de texto con formato fecha y la propiedad "selector de fechas" activada.

En cuanto al error que mencionas, probablemente se deba a que codigo está vacío o es alfanumérico y no lo has delimitado.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: CarlosNF
Fecha de publicación: 07/Marzo/2019 a las 20:05
Hola Xavi

Pasa 1 cosa. Con el control de calendario antiguo, el usuario pulsaba una fecha e iban cambiando los datos del formulario con respecto a esa fecha. Con el nuevo control o con el campo de fecha puedo elegir la fecha, pero para que se desencadene el evento onclick de antes, tengo que volver a hacer click dentro del campo de fecha, para que entienda que tiene que reescribir el formulario. Eso con el ActiveX que con el de texto tendría que cambiar el evento a onChange o similar digo yo. ¿Sabes como puedo hacer para que Access haga ese último click en el control y desencadene el evento onclick original?

Un saludo


Publicado por: xavi
Fecha de publicación: 08/Marzo/2019 a las 09:57
Probablemente debas cambiar el OnClick por otro evento. AfterUpdate o Change

-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: CarlosNF
Fecha de publicación: 08/Marzo/2019 a las 11:04
Estimado Javi

Le he dejado el onclik para que si se hace click en la fecha actual desencadene el evento y añadido un change para el resto de los casos de cambio de fecha y en principio lo veo bien.

Muchas gracias por todo.



Imprimir página | Cerrar ventana