Error de Syntaxis

Iniciado por acura01, 9 Junio 2020, 02:36 AM

0 Miembros y 1 Visitante están viendo este tema.

acura01

 Set rst = New ADODB.Recordset
   rst.Open "SELECT * FROM Password WHERE " & _
       "Password = 'UserName = [Form2.txtuser'] and ['Password = Form2.txtpass]", conn, adOpenForwardOnly, adLockReadOnly
   Do While Not rst.EOF
      Shell "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE C:\Control Equipo\Menu\ControlEquipos.accdb", vbMaximizedFocus
      For Each fld In rst.Fields
          MsgBox ("Usuario no Autorizado")
      Next
   rst.MoveNext
   Loop
   

Serapis

#1
tu fallo está en en
Código (vbnet) [Seleccionar]

"Password = 'UserName = [Form2.txtuser'] and ['Password = Form2.txtpass]"


Una expresión en la forma: 'a = b = c' VB lo interpreta como un buleano: 'a = (b=c)' y obviamente como se evalua a TRUE/FALSE...
De todos modos, es un cacao. por ejemplo, parece ser que hay una tabla llamada "Password"... si existe una tabla así, es preferible llamarla "tblPassword", de hecho es buena práctica llamar a las tablas con un prefijo, que te permita saber de un vistazo, que esa tabla tiene posibilidades de existir...

No queda claro qué es cada cosa... pero voy a arriesgarme a intentar interpretar lo que podría ser que tienes:
Código (vbnet) [Seleccionar]

dim cnStr  ' es buena practica usar una variable de cadena para separar errores de cadena
      ' de errores con la bd... al menos hasta que aprendas a formar correctamente las cadenas.

cnStr = "SELECT * FROM Password " & _
         "WHERE Username = " & Form2.txtuser.text & _
         " and  Password = " & form2.txtpass.text
Set rst = New ADODB.Recordset
rst.Open cnStr
'...

Asegúrate que los textboxes no tienen espacios en blanco a uno u otro lado del texto, que no forman parte de la cadena precisa... es decir quizás debas usar una función 'Trim' para eliminar espacios a ambos lados. De hecho es recomendable cuando el dato es entrado por un usuario manualmente...

En Net, todavía podría valer algo parecido a lo que intentas hacer...
Código (vbnet) [Seleccionar]

dim cnStr  ' es buena practica usar una variable de cadena para separar errores de cadena
' de errores con la bd... al menos hasta que aprendas a formar correctamente las cadenas.

cnStr = "SELECT * FROM Password" & _
         " Where [Username]= '" & Form2.txtuser.text & _
         " 'And  [Password]= '" & form2.txtpass.text & "'"
Set rst = New ADODB.Recordset
rst.Open cnStr
'...

Hay varias maneras válidas, pero siempre se requerirá una cadena de texto válida, al menos para que no cante error de sintaxis, luego si te sigue fallando sería porque no logra abrir la conexión si parte del contenido no es correcto.