Todo proyecto tiene Sub Main, que quieras arrancar con el es otra cosa. Fijate en el Menu \ Proyecto \ Propiedades de tu proyecto \Objeto Inicial y alli veras el subMain.
Porque haces?
BD.BeginTrans
BD.Execute sqlUsuario(txtusuario, txtcontrasena), adCmdText
BD.CommitTrans
No es necesario que hagas eso sino vas a mover registros. Cambialo por:
rs.Open sqlUsuario(txtusuario, txtcontrasena), dB, 1, 1
¿Porque recorres el recordset?
Basta con que hagas:
If rs!Usuario = txtusuario And rs!Contrasena = txtcontrasena Then 'aunque si ya te dio registro tampoco es necesario pq ya lo filtraste en el Select
MDIFormST.Show
Unload frmIniciarSesion 'matalo, para que lo mantiene en memoria con frmIniciarSesion.Hide
MsgBox ("Bienvenido (a) " & txtusuario & "")
Else
MsgBox ("Datos Incorrectos")
txtusuario.SetFocus
End If
Y porque pones en el Load del formulario
rs.Open sqlUsuario(txtusuario, txtcontrasena), BD, 2, 3
Si al hacer Load aun no has dado tiempo al usuario de escribir en txtUsuario y txtContrasema, eso esta demas.
Conclusión: modifica tu comando cmdEntrar
Private Sub cmdentrar_Click()
If txtusuario <> "" Then
If txtcontrasena <> "" Then
rs.Open sqlUsuario(txtusuario, txtcontrasena), dB, 1, 1 '<-- aqui ya compruebas si existe
if rs.RecordCount > 0 then
MDIFormST.Caption = "Hola " & rs!Usuario 'Si usas el nombre del usuario mejor pinta su nombre
MDIFormST.Show
Unload frmIniciarSesion
MsgBox ("Bienvenido (a) " & txtusuario) '<--- no es necesario que pongas al final & ""
Else
MsgBox ("Datos Incorrectos")
txtusuario.SetFocus
End If
Else: MsgBox ("Introduzca su Contraseña")
txtcontrasena.SetFocus
End If
Else: MsgBox ("Introsuzca su Nombre de Usuario")
txtusuario.SetFocus
End If
End Sub
Saludos