Visual Basic - Demora en consulta

Life is soft - evento anual de software empresarial
 
Vista:

Demora en consulta

Publicado por Carlos T. (7 intervenciones) el 15/05/2013 16:21:15
He buscado por internet y en muchos foros, y no consigo respuesta, mi problema no es de deficiencia del código (creo yo), porque la consulta se realiza, pero se demora mucho.


+++++++++++++++++++++ como lo tenía la primera vez ++++++++++++++++++++++++++++++++
Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open dsnfox

Set myset = New ADODB.Recordset
sql = "SELECT MAX (noexam.examen) maxima FROM examen;"
myset.Open sql, db, adOpenDynamic, adLockOptimistic
If Not myset.EOF Then
newid = CLng(myset!maxima)
reg.noexam(i) = newid + 1
Else
MsgBox "La base examen.dbf devuelve EOF"
End If
myset.Close
Set myset = Nothing



********************************* como lo puse la segunda vez ****************************************
Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open dsnfox

Set myset = New ADODB.Recordset
sql = "SELECT noexam FROM examen;"
' sql = "SELECT * FROM examen;"
myset.Open sql, db, adOpenDynamic, adLockOptimistic
If Not myset.EOF Then
myset.MoveLast
newid = CLng(myset!noexam)
reg.noexam(i) = newid + 1
Else
MsgBox "La base examen.dbf devuelve EOF"
End If
myset.Close
Set myset = Nothing


En codigo de abrir la tabla utilicé adOpenKeyset y adOpenStatic, combinado con adLockReadOnly y tampoco funciona.

Todo lo hace perfecto si la base de datos (que es VFP 9.0) está en la misma máquina donde está el ejecutable y de las 2 maneras, pero todo cambia cuando se realiza desde otra máquina en la red, hace la busqueda pero se demora entre 2 y 5 min, si ven solo necesito el código del último registro y sumarle uno para obtener un nuevo registro, suena tonto pero el progrma corre en win2000, no me pregunten por qué (creo que mi jefe no quiere comprar las licencias de win7 aunque yo mismo lo probe en win7 y winXP), chequee que los ODBC están correctos, y cuando instalo el VFP 9.0 los instala por defecto.

He utilizado estos string conecction
Provider=vfpoledb;Data Source=\\BaseDatos\bd.dbc.dbc;Collating Sequence=machine;
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=\\BaseDatos\bd.dbc.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO;
DSN=Visual FoxPro Database;UID=;SourceDB=\\BaseDatos\bd.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Sí;Collate=Machine;Null=No;Deleted=No;

Tambien utilice Exclusive=Sí para los 2 últimos casos, tambien use en vez de el nombre de la maquina usé la dirección IP.



Anteriormente ya había comentado esto en el foro, y no me respondieron; http://www.lawebdelprogramador.com/foros/Visual_Basic/1376946-Conexion_a_base_de_datos_de_VFP_9.0_lenta.html

Antes que nada, muchas gracias y disculpen las molestias

NOTA: todo esto es realizado en VB 6.0
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