Buenas tardes, el código se ve bien pero ... no veo Que cierres e sql1, lo tienes declarado a nivel global? si Es Así y has realizado Alguna consulta o Inserción y no lo cierras al volver una usarlo podría generarte Problemas te digo lo que yo suelo hacer (Que Seguro que no es lo mejor, Pero a mi me Funciona; - ))
yo creo una clase para todo Lo relaccionado con la BASE DE DATOS.
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim sql1 As SQL
End Sub
Sub consulta(textosql As String)As Cursor
If sql1.IsInitialized = False Then
sql1.Initialize(File.DirRootExternal, "/nombrecarpeta/nombrebd", True)
End If
Dim Cursor As Cursor
Cursor = sql1.ExecQuery(textosql)
Return Cursor
'sql1.Close
End Sub
Sub anadirnuevoregistro (textosql As String) As Boolean
If sql1.IsInitialized = False Then
sql1.Initialize(File.DirRootExternal, "/nombrecarpeta/nombrebd", True)
End If
Try
Dim Cursor As Cursor
'Cursor = sql1.ExecNonQuery(textosql)
Return True
Catch
Return False
End Try
End Sub
y la llamo cunado la necesito desde cualquier parte del código.
Dim cur As Cursor
cur= tareas.consulta("select nombre from Clientes")
If cur.RowCount>0 Then
Spinner1.Add("Seleccione el cliente")
End If
cur.Close
Así me aseguro siempre de cerrar el sql, puedes incluir transacciones, control de errores etc. en una sola parte del código ... innumerables las Ventajas. espero haberme explicado.