Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/11/2010, 10:09
Avatar de moniqa25
moniqa25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 10
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Error: La operación no está permitida si el objeto está cerrado.

Hola, V.

Bueno, si no he comprendido mal lo que quieres hacer, sería más o menos esto. Lo he hecho en ADO por optimizar rendimiento.

Espero que te sirva.

Lo primero que necesitas (y que no veo) es abrir la conexión a la BD:
Public Function ConectarBDAccess_ADO(ByRef ctnConexion As ADODB.Connection, strBaseDatos As String, Optional varPassword As Variant) As Boolean

Dim strBDAccessADO As String

On Error GoTo ControlErrores

ConectarBDAccess_ADO = True

strBDAccessADO = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strBaseDatos
If Not IsMissing(varPassword) Then
strBDAccessADO = strBDAccessADO & ";Jet OLEDB:Database Password=" & varPassword
End If
If ctnConexion.State = adStateOpen Then
ctnConexion.Close
End If
ctnConexion.ConnectionTimeout = 60
ctnConexion.Open (strBDAccessADO)

Exit Function

ControlErrores:
ConectarBDAccess_ADO = False
Call MostrarError("ConectarBDAccess_ADO", Err.Number, Err.Description)

End Function






Dim cedtrue As Boolean = False
Dim contrue As Boolean = False
Dim registro As New frmRegistro
Dim ced As String
Dim con As String

' ***** Nuevo *****
Dim strSQL As String
Dim ctnBDEjemplo As New ADODB.Connection
Dim rfoDatos As New ADODB.Recordset



ced = txtDI.Text
con = txtContrasena.Text




'Aqui es donde debe ir una consulta
if not ConectarBDAccess_ADO(ctnBDEjemplo, "Ruta y nombre del fichero Access", "Password (opcional) si la tienes) then
'Error en la conexión a BD
'Tratar error
exit sub
endif

'Ya estamos conectados. Abrimos un recordset (entiendo, por tu código, que sólo te va a devolver un registro)
strSQL = "SELECT NombreTabla1.Campo1, NombreTabla1.Campo2, NombreTabla2.Campo1 " & _
"FROM NombreTabla1 " & _
"INNER JOIN NombreTabla2 ON NombreTabla1.IDClave = NombreTabla2.IDClave
rfoDatos.CursorLocation = adUseClient
rfoDatos.Open strSQL, ctnBDIntercambio, adOpenForwardOnly, adLockOptimistic, adCmdText
If Not rfoDatos.EOF And cedtrue And NOT contrue Then
do while not rfodatos.eof
If (ced = rfodatos("Campo1")) Then
cedtrue = True
If (con = rfodatos("Campo2").Value) Then
contrue = True
Else
MsgBox("Contraseña incorrecta")
End If
End If
rfoDatos.movenext
loop
end if

If cedtrue And contrue Then
frmRegistro.Show()
ElseIf not cedtrue And not contrue Then
MsgBox("Documento incorrecto")
End If