Access - Código funcionaba, Ahora Sale Error

 
Vista:
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Código funcionaba, Ahora Sale Error

Publicado por Osen (81 intervenciones) el 01/07/2024 21:33:40
Estimados amigos de Access
El siguiente código funcionó bien durante varios años, pero ahora y sin motivo aparente, no funciona bien.

No sé si si es que éste código ya no es válido hoy día o no sé qué pasó.
Me ayudan por favor?

Gracias


1
2
3
4
5
6
Private Sub NombreTrabajadorNomina_AfterUpdate()
Me.IdentificacionTrabajadorNomina = Nz(NombreTrabajadorNomina.Column(1), "")
Me.SueldoTrabajadorNomina = Nz(NombreTrabajadorNomina.Column(12), "")
Me.SubsidioTransporteNomina = Nz(NombreTrabajadorNomina.Column(13), "")
Me.SaludNomina = Nz(NombreTrabajadorNomina.Column(15), "")
Me.IncapacidadNomina = Nz(NombreTrabajadorNomina.Column(22), "")
End Sub

Error: -2147352567(80020009)
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
Imágen de perfil de jorge
Val: 1.039
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Código funcionaba, Ahora Sale Error

Publicado por jorge (305 intervenciones) el 01/07/2024 22:07:38
pon una foto por faaa
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 Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Código funcionaba, Ahora Sale Error

Publicado por Osen (81 intervenciones) el 01/07/2024 23:08:00
Error-y-Depurar
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

Código funcionaba, Ahora Sale Error

Publicado por Anonimo (3413 intervenciones) el 01/07/2024 23:50:43
Si 'antes' funcionaba y ahora no, algo puede haber cambiado (una posible adaptación a los cambios del entorno laboral) .

El código publicado hace suponer que hay un combo [NombreTrabajadorNomina] con mas de veinte columnas y de ellas se extraen los datos.

Me llama la atención que siendo un objeto del formulario actual no se le añada el 'Me' como al resto de los objetos (algo se gana a coste muy bajo).

Si el cuadro de texto [SaludNomina] no acepta el dato es muy probable su origen de datos sea numérico (no de texto) y se de la circunstancia de no tener valor (su origen: el combo) y la función Nz devuelve un texto (dato que no es compatible).

Si en la ventana de inmediato (la que se publico y detenido en el error) se escribe:

1
? Me.NombreTrabajadorNomina.Column (15)

Y tras ello un [Enter} ¿Que devuelve 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
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Código funcionaba, Ahora Sale Error

Publicado por Osen (81 intervenciones) el 02/07/2024 15:07:35
Access-Liquidacion-Nomina

Hola, Buenos días.
Como observarás cambié un Nz por Me. y sale Error de compilación.
Revisé los campos y cada uno está como corresponde : Texto a Texto, Fecha a fecha, Moneda a Moneda.
Algo estoy haciendo sin entender..?

Gracias por tu paciencia.
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

Código funcionaba, Ahora Sale Error

Publicado por Anonimo (3413 intervenciones) el 02/07/2024 18:07:17
El código que has publicado ¿Es heredado? .......

Línea original:

1
Me.SaludNomina = Nz(NombreTrabajadorNomina.Column (15),"")

La propuesta = Utilizar 'Me' para referenciar los objetos del formulario:

1
Me.SaludNomina = Nz(Me.NombreTrabajadorNomina.Column (15), "")

Si el tipo de dato de [SaludNomina] fuese numérico (en lugar de un texto)

1
Me.SaludNomina = Nz(Me.NombreTrabajadorNomina.Column (15), 0)

¿Porqué es aconsejable referenciar correctamente a los objetos del formulario? ...

Porque 'Me' le indica al motor de Access que el objeto en cuestión es [un cuadro de texto]/[un ComboBox]/[un Cuadro de lista]/[un Botón] ... etc y no una variable función o cualquier otra posibilidad.

No se tarda lo mismo en localizar [XXX] en toda la vivienda que en el cajón superior del armario de la entrada de la vivienda...

Nota:
Nz es una función que evalúa un dato (el primer parámetro) y si es un NULL, devuelve un valor alternativo (el segundo parámetro)
(el valor alternativo ha de ser adecuado a su destino, normalmente: una cadena vacía si es texto / un cero si se espera un número)
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 Eduardo Pérez Fernández

Código funcionaba, Ahora Sale Error

Publicado por Eduardo Pérez Fernández (362 intervenciones) el 17/07/2024 17:20:48
Esta almacenando texto " " en campo numérico, cambie NZ(combo.colum(x)," ") por NZ(combo.colum(x)) el Me es opcional pero es mejor anteponerlo. Nz() por defecto deja 0 si es null
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

Código funcionaba, Ahora Sale Error

Publicado por Anonimo (3413 intervenciones) el 17/07/2024 22:57:18
Nz es una función integrada de Access, como la gran mayoría de las funciones devuelve un dato de tipo Variant.
Las variables de tipo Variant si son capaces de detectar el tipo de dato del destino se adaptan a el.
(unas veces una virtud, otras el mayor de los pecados cuando el destino admite nulos).

Si no logran detectar el tipo de dato en destino: el resultado es impredecible

Si se le indica el tipo de dato (el programador 'debería' conocerlo: es su criatura) los riesgos se minimizan o simplemente desaparecen.

Al programar en la ventana de VBA, si se delimita con el punto (.) en lugar de la admiración (!) suele aparecer una lista con las posibilidades y (salvo excepciones que aun siendo escasas existen) una vez que aparece marcada en la lista un toque en la tecla 'TAB' y la añade a la línea en curso evitando errores en tiempo real (el método es 'viejo' y se utiliza incluso en los móviles desde sus primeros pasos con los diccionarios)

(Columna se escribe finalizando con 'm' seguida de 'n': Column (xxx) o no reconocerá la 'palabra reservada').
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 Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Código funcionaba, Ahora Sale Error

Publicado por Osen (81 intervenciones) el 25/08/2024 03:21:32
Amigos de Access, Anónimo y Eduardo Pérez.

Comparé una copia de seguridad, que hice hace un año, y están iguales los 2, minuciosamente comparados. La anterior copia de seguridad funciona sin mostrar error, el archivo actual muestra el error en cuestión. Si hago clic en "Finalizar" continúa el proceso exitosamente.

Creo que me resignaré, porque no le veo solución.

Yo no soy programador, sólo sigo las instrucciones que de buena voluntad ustedes me aportan.

Muchas 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

Código funcionaba, Ahora Sale Error

Publicado por Anonimo (3413 intervenciones) el 25/08/2024 04:37:52
Tienes lo necesario para resolver el error dado que dispones de una copia de seguridad.

Si de las comparaciones has deducido que ambas son idénticos, cruza los datos de ambas.

.- Una copia de cada aplicación (la que tiene el error y la copia de seguridad que funciona)
.- Renombra al duplicado de la que da el error como ACTUAL y al duplicado de la copia de seguridad como ANTIGUA
.- A ambas se le borran las tablas -- SOLO LAS TABLAS --
.- Tras ello se IMPORTAN a cada una de ellas las tablas de la otra (los datos se importan de las originales), esto es:
.- ACTUAL importa las tablas de la copia de seguridad
.- ANTIGUA importa las tablas de la que da error

Verifica si es plenamente funcional ANTIGUA y como se comporta ACTUAL.

Si ANTIGUA funciona, el problema esta resuelto, se convierte en la copia de trabajo y el resto se pueden (borrar/almacenar ??)
Si el error persiste en ANTIGUA: el problema esta en los datos.
(verifica las tablas para intentar quedarse con los datos mas actualizados).
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