Visual Basic sobre Macro Excel
Publicado por Armando PAdilla (1 intervención) el 04/06/2010 02:26:21
Buenas tardes, tengo un archivo de excel el cual contiene macros para generar reportes a partir de una conexion de base de datos en MSSQL Server 2000, y tengo estoy teniendo el siguiente problema:
Todas las transacciones de base de datos que realizan los recordet estan super lentos, una consulta que regresa 1 solo registro tarda de 3 a 5 segundos, por lo tanto un reporte que debiera ejecutarce en unos 10 segundos maximos, tarda 30-40 minutosl,a forma en que ejecuto el recordset es la siguinete
(Lento 3-5 segundos)
set RS = db.openrecordset(Select nombre from usuario where usuario = '" + lsuser + "'";")
pero si lo ejecuto de la siguiente manera, la trabnsaccion se realiza en milesimas de segundos
set RS = db.openrecordset(Select nombre from usuario where usuario = '" + lsuser + "'";", DbOpenDynaset, dbsqlpassthrough)
El problema es que no puedo poner dichos parametros debido que los reportes manejan recordsets anidados, osea recorset dentro de recordset y esto genera un error, me marca que hay un recordset abierto y no se puede ejecutar otro hasta que no se cierre el anterior.
Mas complicado aun esto solo sucede en un equipo el cual tiene instalado uns programa para conectarse a un banco, si este programa se desinstala, mi macro excel con visual basic corre a la perfección.
Estoy usando el DAO 3.6 (ya intente con 2.5/3.5 con el mismo resultado), SI a laguien le ha pasado algo parecido o bien tiene alguna idea de cual puede ser el conflicto, le agradeceria su ayuda.
Saludos y gracias de antemano
Todas las transacciones de base de datos que realizan los recordet estan super lentos, una consulta que regresa 1 solo registro tarda de 3 a 5 segundos, por lo tanto un reporte que debiera ejecutarce en unos 10 segundos maximos, tarda 30-40 minutosl,a forma en que ejecuto el recordset es la siguinete
(Lento 3-5 segundos)
set RS = db.openrecordset(Select nombre from usuario where usuario = '" + lsuser + "'";")
pero si lo ejecuto de la siguiente manera, la trabnsaccion se realiza en milesimas de segundos
set RS = db.openrecordset(Select nombre from usuario where usuario = '" + lsuser + "'";", DbOpenDynaset, dbsqlpassthrough)
El problema es que no puedo poner dichos parametros debido que los reportes manejan recordsets anidados, osea recorset dentro de recordset y esto genera un error, me marca que hay un recordset abierto y no se puede ejecutar otro hasta que no se cierre el anterior.
Mas complicado aun esto solo sucede en un equipo el cual tiene instalado uns programa para conectarse a un banco, si este programa se desinstala, mi macro excel con visual basic corre a la perfección.
Estoy usando el DAO 3.6 (ya intente con 2.5/3.5 con el mismo resultado), SI a laguien le ha pasado algo parecido o bien tiene alguna idea de cual puede ser el conflicto, le agradeceria su ayuda.
Saludos y gracias de antemano
Valora esta pregunta
0