Access, error 3085 en tiempo de ejecución. La función Nz no está definida en la expresión.

Parece que la Bd no me va a dejar tranquilo.

He estado trasteando en el ordenador en donde he creado la BD y funciona perfectamente. He realizado todo tipo de operativa y consultas, resultando "salvo error", todas correctas. Otra cuestión bien diferente es que he trasladado esa base de datos a un portátil para poder seguir haciendo comprobaciones mientras veo la tv, y, surge el problema que he indicado en el título de la pregunta.

Si no recuerdo mal la función Nz la he utilizado para dos o tres cuestiones pero se en principio solamente se manifiesta cuando solicito me informe del saldo de caja. Si pido movimientos de la cuenta de caja me informa correctamente, cosa diferente es si solamente pido el saldo.

He estado mirando por ahí y he visto poco o nada para intentar solucionar el tema, por lo que nuevamente me dirijo a vosotros para ver si esto tiene solución y si la hay cuál es.

1 Respuesta

Respuesta
2

Vicente: Mira las Referencias que tienes en la BD que no te falla y las instancias en la BD que comentas. Un saludo >> Jacinto

Vicente: Te iba a poner la Referencia y se me ha pasado. Debe ser la >>

Microsoft Office xx.0 Access Database Engine Object Library

El xx lógicamente dependerá de la Versión de Office que tengas. Un saludo >> jacinto

Muchas gracias. Voy a mirar y te comento.

Un saludo

Hola Jacinto, he estado comprobando las librerías en el sobremesa y en el portátil y la versión Microsoft Office 14.0 Access Database Engine Object Library  está em ambos. La única diferencia es que en el que no da problemas está instalado Microsoft scripting Rumtime y en el otro no, por lo que pinchado en esa librería para que aparezca. Cerrada la base de datos y nuevamente abierta veo que el problema persiste.

Vicente: Puedes poer aquí la línea de código que te da el error a ver si me da alguna pista.

Si quieres citar las dos versiones de Office y Sistema operativo, mejor.

Un saludo >> Jacinto

Hola Jacinto. Discúlpame por no haber contestado antes pero había otras prioridades que han hecho imposible poder hacer las consultas que me solicitabas.

                Tengo activado el producto Microsoft Office Professional Plus 2010

  1. La versión instalada tanto en el sobremesa como en el portátil es la 14.0.7229.5000 (32 bits).
  2. Las librerías son las mismas en ambos y son:
  • Visual Basic For Applications
  • Microsoft Access 14.0 Objet Library
  • Ole Automation
  • Microsoft Office 14.0 Access database engine Object Library
  • Microsoft Scripting Runtime

---- La sentencia completa en el “Subformulario Saldo” es:

Private Sub Form_Load()

    Dim rst As DAO.Recordset

    Dim vS_Inic As Currency, vIng As Currency, vDon As Currency, vGto As Currency

    Dim vSaldo As Currency

    Dim miSql As String

    miSql = "SELECT * FROM Saldo ORDER BY Saldo.[Identradas]"

    vSaldo = 0                                    

    Set rst = CurrentDb.OpenRecordset(miSql)

    If rst.RecordCount = 0 Then GoTo Salida

    With rst

        .MoveFirst

        Do Until .EOF

            vS_Inic = Nz(.Fields("Saldo_inicial").Value, 0)

            vIng = Nz(.Fields("Ingresos").Value, 0)

            vDon = Nz(.Fields("Donación").Value, 0)

            vGto = Nz(.Fields("Compras").Value, 0)

            vSaldo = ((vSaldo + vS_Inic + vIng + vDon) - vGto)

            .Edit  (aquí es donde marcaba el error inicialmente)

            .Fields("[Saldo caja]").Value = vSaldo

            .Update

            .MoveNext

        Loop

    End With

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "saldo", , , , acFormReadOnly

    rst.Close

    Set rst = Nothing

End Sub  

Desconozco si he hecho algo, y si lo he hecho que ha sido, pero ahora el error se ha trasladado al menú general de Movimientos, Saldos y modificaciones contables y la línea en que marca el error es la escrita en negrita y cursiva. La instrucción completa es la siguiente:

Private Sub Saldo_Click()

    DoCmd.Close

    DoCmd.OpenForm "Saldo en caja"   (ahora lo marca aquí)

End Sub

Agradezco el tiempo que te hago perder. 

Un saludo

Vicente: No veo que tengas activada la >>

Microsoft Office 14.0 Object Library

Ya me comentarás. Un saludo >> Jacinto

Vicente: además de lo que te comento, la línea del OpenForm que tienes como >>

DoCmd.OpenForm "Saldo en caja" >> Ha deser >> DoCmd.OpenForm "[Saldo en caja]"

Un saludo >> Jacinto

Hola Jacinto. 

He puesto entre corchetes el nombre del formulario (creo que es lo que me indicabas) y ahora el error es "se ha producido el error 2102 en tiempo de ejecución: El nombre del formulario "[Saldo en caja]" está mal escrito o hace referencia a un formulario que no existe.

Quedo a la espera de tus comentarios. 

Un saludo.

Otra cosa, me dices que no tengo activada la librería Microsoft Office 14.0 Object Library y salvo error, he entrado y he visto que está pinchada la librería.

¿Hay otra manera de tener la certeza de que esté o no activada la librería?

Lo primero que has de mirar es el Nombre del Formulario, porque cuando Access lanza este mensaje suele ser justo por eso. Mira que no falle ni un espacio ni letra etc.

En cuanto a saber si una librería está dada de alta, la mejor manera es lo que has hecho, es decir simplemente mirarlo en Referencias del Editor.

El comentario te lo hice porque no la vi en tu texto.

Lo que encuentro muy extraño es que en un PC te detecte bien el Nombre del Formulario y en otro no. Ya me contarás, aunque . Un saludo >> Jacinto

Hola Jacinto. Yo, tampoco lo comprendo, y, más te digo, o te cuento. Si abro la base de datos y me dirijo directamente al formulario "saldo en caja", resulta que no da ningún error y muestra el saldo correctamente; si sigo navegando y vuelvo a consultar esta vez desde el botón comando del menú, digamos general, y seguidamente pincho en el botón "saldo", va y muestra correctamente el saldo no ocurriendo ningún error; otra cosa distinta es si vuelvo a cerrar el programa y vuelvo a abrirlo, entonces vuelve a darme el error.

No entiendo nada

Vicente: Sin ver el Fenómeno de forma directa, cualquier respuesta que pueda darte no dejaría de ser un brindis al sol.

Por tus noas veo que es una BD de gestión y por tanto nos cierra la puerta a examinarla, porque pefiero no tener datos confidenciales y/o personales.

Si es que quieres desnudarla de de esos datos y poner algunos inventados, le podría dar una ojeada. Un saludo >> Jacinto

Hola Jacinto.

He aligerado bastante la base de datos que manejo y la he subido a la nube para si deseas echarle un vistazo.

La dirección es la siguiente:

https://drive.google.com/open?id=1h0KpNuQuPDpnUylM80GrGfDqy2pcRmnA 

Acabo de comprobar la BD en el portátil, que es desde donde subo el archivo, y sigue el error.

Me gustaría que inicialmente entraras por el formulario utilizando como usuario Vicente Moliner y como clave 1a, después te diriges al menú saldo, movimientos y modificaciones contables y después pinchas en el botón saldo, ahí es donde en el portátil me da el error.

Un saludo

Vicente: He probado lo que me comentas y a mi no me da ningún fallo, pero puede ser que Access responda de forma distinta a la esperada en ocasiones.

Cuando haces la llamada de apertura del Formulario >>

Private Sub Saldo_Click() 'JTJ >> Probar con las líneas al revés

DoCmd. Close 'Poner Segunda
DoCmd. OpenForm "Saldo en caja" 'Poner Primera
End Sub

No tiene que representar ningún problema, pero prueba como te digo poniendo primero la Apertura y después el cierre.

En cuanto a los fallos que tenías con el Nz, puede que vengan de una línea que tienes en el SubFormulario Saldo >> vDon = Nz(.Fields("Donación").Value, 0) en la que se aprecia un acento y que yo pondría como >>vDon = Nz(.Fields("[Donación]").Value, 0)

En general y aunque no nada que lo impida los Nombres de los Objetos con >> Espacios, Acentos, Dieresis, y ... suelen ser un quebradero de cabeza( o al menos para mi lo es), a la hora de escribir código. Salvo que reciba na BBD para ayudar nunca usé ese tipo de nomenclatura, pero si la persona que lo hace se encuentra cómodo, nada que objetar.

Prueba lo que te sugiero y me comentas, para seguir ahondando si persiste el Fallo.

Un saludo >> Jacinto

Muchas gracias Jacinto.

A ver si en estos días de "cuaresma", "mi penitencia", (soy agnóstico), es trastear como me indicas. Muchas gracias. Ya te cuento.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas