Problema con ADO

Tengo el siguiente commandtext:
.CommandText = "SELECT a.articulo, a.descripcion, l.fechaapertura, l.fechacierre, l.turno, l.kilosfabricados FROM articulos a, lotes l WHERE a.articulo =" & TextoArticulo.Text & " AND l.turno=" & List1.Text & " AND l.fechacierre between " & TextoFechaInicio.Text & " AND " & TextoFechaFinal.Text & ""
Donde a.articulo es un entero, l.turno un string, y l.fechacierre es una fecha. Al ejecutar la sentencia visual me dice "sintaxi incorrecta cerca de la palabra and". ¿Me puedes decir que es lo que hago mal en esta consulta? Muchas gracias
Antonio

2 respuestas

Respuesta
1
Rápido y fácil de corregir, acuérdate que en tu sentencia SQL los Strings llevan la comilla simple cuando no se trata de un Stored Procedure tienes que concatenar antes de un String o una fecha este carácter ' que si bien tu sentencia quedaría más o menos así.
.CommandText = "SELECT a.articulo, a.descripcion, l.fechaapertura, l.fechacierre, l.turno, l.kilosfabricados FROM articulos a, lotes l WHERE a.articulo = " & cint(TextoArticulo.Text) & " AND l.turno= " & "'" & List1.Text & "'" & " AND l.fechacierre between " & "'" & TextoFechaInicio.Text & "'" & " AND " & "'" & TextoFechaFinal.Text & "'"
También Recuerda que SQL maneja un formato de Fecha, hay que aplicarle formato a tus campos fecha, otra cosa que te recomiendo es que no pases como tal el value o text de un objeto, maneja variables aunque se haga un poco de más código, otra cosa es que manejes Stored Procedures, cuando es una aplicación Windows no tienes muchos problemas pero aguas si esto es para el Web con VbScript, por que si un hacker lo toma adiós bases de datos.
Respuesta
1
Bueno tu escribes a.articulo y después del form pones "artículos a"; no entiendo eso, pues debería ser solo "a".. pero bueno...
Lo que pasa en la sintaxis es que cuando escribes:
a.articulo =" & TextoArticulo.Text --> esta ok
pero cuando escribes:
l.turno=" & List1.Text & "
deberia ser asi:
l.turno='" & List1.Text & "'"
Si te das cuenta lo que escribo es para que quede entre apostrofes ('), eso se hace con las variables de tipo string, cuando es numero no hay problema y cuando es fecha debería ser entre grillas (#) así:
fechacierre between #" & TextoFechaInicio.Text & "# AND #" & TextoFechaFinal.Text & "#"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas