Estoy trabajando con VB6 y tablas de ACCESS 2000. Elaboré una pantalla cuyo destino final es mostrar un informe que esta hecho en CR8. Ahora bien para llegar a mostrar el informe tengo que filtrar cierta información con lo cual utilicé un recordset de ADO y una sentencia SQL que trae dicha información. Como el proceso para traer la información demora unos 2 o 3 minutos, puse un botón para detener el proceso en caso de que sea necesario. Para eso utilicé un ADO asincrónico. Acá pongo parte del código
Option Explicit
Dim Withevents rst as ADODB.Recordset
Dim AbortQRY as boolean
…
…
Private sub cmdAceptar_Click()
Dim strSQL as string
AbortQRY=False
strSQL="Sentencia SQL"
set rst=new adodb.recordset
with rst
.cursorlocation=adUseClient
.open strSQL,cnConexion, , ,
adAsyncExecute + adAsyncFetch
End with
Do While (rst.State And adStateExecuting) = adStateExecuting Or _
(rst.State And adStateFetching) = adStateFetching
DoEvents
If AbortQry Then
rst.Cancel
End If
Loop
End sub
Private sub cmdDetener_Click()
abortQRy=True
end sub
Bueno cnConexion es la conexión en Microsoft.Jet.OLEDB.4.0. El tema es que cuando empieza a realizar el proceso no pasaron ni 10 segundos y me aparece un cuadro de diálogo que dice:
Visual Basic ha detectado un problema y debe cerrarse
Y me da la opción de pulsar 2 botones: "Depurar" o "Cerrar". Al pulsar "Cerrar" automáticamente se cierra el VB.
El VB lo tengo cargado en un equipo con WXP Profesional 2002 SP 2. Este mismo proceso lo realizo en un equipo con W98 y corre perfectamente, incluso responde al pedido de cancelación (El botón detener). ¿ Que puede estar pasando?