¡Hola a [email protected]!

[email protected] al nuevo foro de coches.net. ¡Esperamos que os guste! :)

Si tenéis algún problema o sugerencia podéis comentarlo en este post

Una de Visual Basic: ¡¡Ayuda!!

luisjaluisja Forero ✭✭
Necesito ayuda de los informaticos: a ver si hay algo que me solucione rapdio el problema.

Tengo en el curro una bases de datos access.

He de acceder a una de las consultas de la base de datos desde Visual Basic. Hasta aqui todo claro y aparentemente evidente.

El problema es que es una cosulta bastante complicada que hace referencia a otras consultas,y estas a otras... y hay una de ellas que utiliza una funcion publica definida en un modulo de access.

Y aqui llega el problema, no puedo abrir un recordset porque no me reconoce dicha funcion al intentar abrir la consulta desde visual.

La consulta desde access funciona correctamente.

¿¿Alguien sabe porque pasa y como solucionarlo??

Gracias de antemano

Comentarios

  • rubiconnerubiconne Forero Senior ✭✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Es decir, que cuando haces doble click en la consulta desde la pestaña de consultas funciona bien, pero cuando haces:

    set rs = currentdb.openrecordset("Consulta1")

    falla?? qué error da? la función de access a la que llama la consulta es pública?

    Yo lo acabo de hacer sobre access 97 y funciona, claro que sólo he hecho una consulta, no una que lea de otra.
  • JusteriniJusterini Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    si no funciona lo de Rubiconne porque no haces la consulta desde visual basic?

    Saludos.Justerini
  • luisjaluisja Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Exactamente rubiconne, lo que pasa es lo que comentas.
    El error ahora exactamente no te lo puedo decir porque el tema lo lleva otro compañero pero al examinar "err.description" obteniamos algo asi como que "no se encuentra nombre_funcion"

    La funcion es publica.

    Supongo que la solucion pasa por ahi: crear la consulta en access, pero no queriamos tocar desde visual mas de lo necesario.

    Alguna sugerencia mas??
  • rubiconnerubiconne Forero Senior ✭✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Iterando en la coleccion de consultas puedes crearte un objecto consulta, pasarle el código sql por código vb y luego borrarla después de haber recorrido el recordset.

    De todas formas dime que error te da, porque no lo termino de entender.

    Yo he creado una función que tiene un parámetro de entrada y me devuelve la misma cadena en minúsculas.
    He creado un objeto consulta de Access que llama a esa función, así que todos los registros que pasan por la función me los devuelve en letras minúsculas.
    He creado un segundo objeto que limita el número de registros que obtengo del primero.

    Y a este segundo lo llamo desde VB. No me da ningún error. ¿Estoy haciendo lo mismo que vosotros?
  • luisjaluisja Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Hola de nuevo:

    A ver si hoy tenemos mas mas suerte.

    El codigo:

    Dim rsC As Recordset
    Set rsC = mi_base_de_datos.OpenRecordset("Consulta1")

    El error:

    Error '3085' en tiempo de ejecucion.
    La funcion "IncrementaValor" no esta definida en la expresión

    "Consulta1" es una consulta sobre otras tablas y consultas que a us vez llaman a otras.
    "Consulta1" pero no llama directamente a la funcion "IncrementaValor". Esta funcion es llamada por alguna de las "subconsultas".


    Como curiosidad decir que en otra parte de la aplicacion se realiza esto y funciona perfectamente:

    MSAccess.DoCmd.OpenReport "Informe", acViewPreview, , WSql

    y que este informe utiliza la consulta que pretendemos utilizar por lo que no le veo ninguna logica

  • luisjaluisja Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Me podeis decir tambien que referencias teneis marcadas en el proyecto y en que orden estan.

    Gracias de nuevo
  • luisjaluisja Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Up

    ¿¿Me podeis decir tambien que referencias teneis marcadas en el proyecto y en que orden estan??

    Y la version de visual y de access con la que esta hecho el mdb.

    Solo he conseguido que funcione con bases de datos creadas con Access 2000, pero necesitaria que funcionase con Aceess 97

    Gracias de nuevo
  • rubiconnerubiconne Forero Senior ✭✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    otia, me había olvidado de este tema compañero.

    Vamos a ver, yo la prueba la hice con Access 97 y con VBA de access. No he utilizado un proyecto VB que llame a Access.

    Ese debe ser tu problema..... la función IncrementaValor pertenece al VBA de Access y cuando es llamada desde el informe (el informe esta en la base de datos) no hay problema. El error te viene dado cuando haces la llamada a la consulta desde un proyecto VB.

    No se si habrá alguna manera de referenciar desde VB el código VBA de la base de datos, pero lo dudo mucho.

    Creo que la solución mas fácil sería duplicar esa función adaptándola dentro del proyecto.

  • luisjaluisja Forero ✭✭
    Una de Visual Basic: ¡¡Ayuda!!

    Help

Deja un comentario

NegritaCursivaTacharOrdered listLista sin ordenar
Emoticonos
Imagen
Alinear a la izquierdaCentrarAlinear a la derechaEnciende/apaga vista HTMLActivar/desactivar la página enteraEncender/apagar las luces
Sube imagen o archivo