** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Error date VBA BBDD Access 2000 convertida a v2007
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoError date VBA BBDD Access 2000 convertida a v2007

 Responder Responder
Autor
Mensaje
CarlosNF Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2019
Localización: 27001, Lugo
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Tema: Error date VBA BBDD Access 2000 convertida a v2007
    Enviado: 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")

......





Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11916
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
CarlosNF Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2019
Localización: 27001, Lugo
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 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


Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11916
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
CarlosNF Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2019
Localización: 27001, Lugo
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11916
Enlace directo a este mensaje Enviado: 08/Marzo/2019 a las 09:57
Probablemente debas cambiar el OnClick por otro evento. AfterUpdate o Change
Xavi, un minyó de Terrassa

Mi web
Arriba
CarlosNF Ver desplegable
Nuevo
Nuevo


Unido: 07/Marzo/2019
Localización: 27001, Lugo
Estado: Sin conexión
Puntos: 7
Enlace directo a este mensaje Enviado: 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.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable