funcion de usuario que lee datos de access

02/12/2003 - 14:23 por j.hernandez | Informe spam
Hola,

Tengo una función de usuario que dado un código indica el stock que
hay en almacén accediendo a un fichero de dBase, para ello añado una
referencia a DAO 3.51.

El problema es que una vez que se ha obtenido es stock, esta función
nunca se recalcula, salvo que me ponga encima de cada celda y pulse F2
y return. ¿Como puedo hacer que recalcule de una manera más comoda?

Muchas gracias por vuestra ayuda, aquí está el código que uso.


Option Explicit
Public db As Database
Public rsPP As Recordset
Public abiertoDbf As Boolean


Public Function dato2(paracodigo As String, campo As String) As
Variant
If Not abiertoDbf Then
Set db = DBEngine.Workspaces(0).OpenDatabase("f:\almacen",
False, True, "dBASE III")
Set rsPP = db.OpenRecordset("PEPE", dbOpenTable)
rsPP.Index = "GR_PE"
abiertoDbf = True

End If

rsPP.Seek "=", paracodigo
If rsPP.NoMatch Then
dato2 = "Cod. err"
Else
If rsPP("n_gr") = paracodigo Then
dato2 = rsPP(campo)
Else
dato2 = "Err. ndx"
End If
End If
End Function
 

Leer las respuestas

#1 Fernando Arroyo
02/12/2003 - 15:48 | Informe spam
Si pones la instrucción

Application.Volatile

dentro de la función (normalmente se pone como primera instrucción), estarás obligando a Excel a actualizarla cada vez que recalcule algo en la hoja. El problema es que quizás esto enlentezca toda la hoja y empeore su rendimiento...
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Juan Hernández" escribió en el mensaje news:
Hola,

Tengo una función de usuario que dado un código indica el stock que
hay en almacén accediendo a un fichero de dBase, para ello añado una
referencia a DAO 3.51.

El problema es que una vez que se ha obtenido es stock, esta función
nunca se recalcula, salvo que me ponga encima de cada celda y pulse F2
y return. ¿Como puedo hacer que recalcule de una manera más comoda?

Muchas gracias por vuestra ayuda, aquí está el código que uso.


Option Explicit
Public db As Database
Public rsPP As Recordset
Public abiertoDbf As Boolean


Public Function dato2(paracodigo As String, campo As String) As
Variant
If Not abiertoDbf Then
Set db = DBEngine.Workspaces(0).OpenDatabase("f:\almacen",
False, True, "dBASE III")
Set rsPP = db.OpenRecordset("PEPE", dbOpenTable)
rsPP.Index = "GR_PE"
abiertoDbf = True

End If

rsPP.Seek "=", paracodigo
If rsPP.NoMatch Then
dato2 = "Cod. err"
Else
If rsPP("n_gr") = paracodigo Then
dato2 = rsPP(campo)
Else
dato2 = "Err. ndx"
End If
End If
End Function


Preguntas similares