Error consulta campo fecha en visual basic 6.0

Los programas que manejo son "visual basic 6.0" y "SQL server 2000"
Realizo una consulta en visual basic con la siguiente información:
sql= "select campos from tabla where tabla.campofecha Between "%" & fechainicial & "% And %" & fechafinal & "%""
Mi problema consiste en el siguiente error:
Error-'2147217913(80040e07' en tiempo de ejecución:
[microsoft][ODBC SQL Server] syntax error converting datatime fromcharacter string.
En visual basic puse las dos variables tipo "strimg" y en SQL están como tipo "datetime"
Ensaye las siguientes maneras de expresiones:
# " + fechainicial + " # And # " + fechafinal + " #
 " & fechainicial & "  And  " & fechafinal & "
Pero ninguna de ellas con los resultados esperados.
Por favor ayudenme con alguna sintaxis que le sea correcta
muchas gracias si me llegasen a colaborar.

2 Respuestas

Respuesta
1
Si le colocas los # va a dar error pues esto es exclusivo de access.
Prueba con una fecha ANSI, esto se logra dándole formato a tu fechas como YYYYMMDD y encerradas entre comillas sencillas.
Hola, nuevammente:
Gracias por la sugerencia, te copiare lo siguiente y depende de esa información y de seguro que te resultara más fácil encontrar la respuesta:
en query analyzer realizo el codigo "select campos from tabla where (tabla.campofecha Between '08/22/2004'  And % '08/22/2004')"
Y me da perfecto
Intento pasarlo a visual y vez de los datos exactos, pongo las variables las cuales te mencione anteriormente, aplique tu sugerencia pero no me arroja ningún resultado. "es decir no me lanza ningún error sino que me aparece la consulta sin datos"
Solo necesito una sintaxis la cual visual la lea como un datatime para que así sql server pueda hacer la consulta correctamente.
Bueno, segure esperando y gracias por ayudarme !
Lo que sucede es que posiblemente en VB la fecha no va como mes/dia/año sino como dia/mes/año, esto lo recibe el servidor de base de datos y por ende la consulta no arroja datos.
Buenos Días:
Gracias de antemano por colaborarme, si entendiste la base de mi problema y me alegro mucho por ello; solo que tengo este problema:
Error'-21472179000 (80040e14)' en tiempo de ejecución:
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: incorrect syntax near '22'
Más o menos como entiendo el problemas que reconoce los dos primeros dígitos pero no reconoce los otros dos; aquí te paso el código que realizo, solo mostrare la parte de la cadena sql y las variables que uso ya que no tengo problemas con la conexión:
Dim fecha_inicial As String
Dim fecha_final As String
    ' Intervalo para las fechas
    DTPicker1.Value = Format(DTPicker1, "mm/dd/yyyy")
    fecha_inicial = DTPicker1.Value
    DTPicker2.Value = Format(DTPicker2, "mm/dd/yyyy")
    fecha_final = DTPicker2.Value
    ' Cadena Sql
    sql = "SELECT DISTINCT  clientes.cod as Código, " & _
            "clientes.primnom as Nombre, clientes.primap as Primer_Apellido, " & _
            "clientes.segap as Segundo_Apellido,  Convert(varchar(10), vacaciones.fechasa, 103) As Fecha_Salida, " & _
            "Convert(varchar(10), vacaciones.fechaen, 103) As Fecha_Entrada, " & _
            "FROM clientes, vacaciones" & _
            " Where vacaciones.fechasa between %" & fecha_inicial & "% And  %" & fecha_final & "%"
    ' Carga el FlexGRid
    Set MSHFlexGrid1.DataSource = Cargar_Registros(sql, Cn)
Sabemos que perfectamente en query analizer podemos ingresar los capos de fecha de esta manera '22/08/2004' y hace la consulta perfectamente, en visual basic la cadena sql no acpta campos de texto ya que me aparece el primer error que te mencione en la primera pregunta, si le quito las comillas simples me aparece la tabla vacía, y si le añado los % me aparece el error que te copie hace poco.
Solo quiero una sintaxis, la pueda reconocer visual y que en la base de datos la lea correctamente
Gracias nuevamente por colaborarme.
Espero Tu respuesta.
Eso depende del Collation con este instalada la base de datos de SQL.
Sin embargo prueba con un formato ANSi para la fecha que es: AAAAMMDD encerrado en comillas sencillas, por ejemplo '20091127'
Buenos Días:
Disculpa por las molestias que te he ocasionado pero esta vez estamos cerca de la solución, ya veras el porque te l copio;me aparece el siguiente error:
Error'-2147217913 (80040e07)' en tiempo de ejecución:
[Microsoft][ODBC SQL Server Driver][SQL Server]the conversion of a char data type to a datatime data type resulted in an out-range datatime value
Si me explicas el problema, de seguro que lo solucionare al instante.
Observa como realize la conversión
DTPicker1.Value = Format(DTPicker1, "yyyy-mm-dd")
    fecha_inicial = DTPicker1.Value
DTPicker2.Value = Format(DTPicker2, "yyyy-mm-dd")
    fecha_final = DTPicker2.Value
Gracias por tu generosa ayuda.
Espero con ansias tu respuesta
Ya no te preocupes
Ya solucione el problema
Muchísimas gracias por ayudarme, si tenias la razón
Era el código ansi
Copie en un text box el numero 20040622 y puse el campo como tipo texto y dio perfecto, de verdad, muchas gracias
Respuesta
La instrucción Between parece que nunca funciona.
Lo que normalmente hago es restarle 1 día a la fecha inicial y sumarle 1 a la fecha final y luego realizo la consulta por mayor a inicial y menor a final, de la siguiente forma :
fechainicial= DateAdd("d", -1, fechainicial)
fechafinal = DateAdd("d", 1, fechafinal)
sql= "select campos from tabla where tabla.campofecha > #" & fechainicial & "# And tabla.campofecha < #" & fechafinal & "#" 
Si no funciona es posible que necesite colocarle formato a las fechas inicial y final tal como estén en la base de datos.
Suerte !
Buenos Días:
Gracias de antemano por ayudarme, aplique tu recomendación pero me aparece el siguiente error:
Error'-2147217900 (80040e14)' en tiempo de ejecución:
[Microsoft][ODBC SQL Server Driver]Invalid column name '##'
Le quito los símbolos y no me arroja ningún resultado; en query analizer me da la consulta perfectamente y en visual es algo difícil acomodar el formato adecualdo para que sql server lo lea a la perfección.
Solo necesito la sintaxis correcta para la cadena sql sea la adecuada en visual basic.
Nota: a la hora de realizar la cadena sql las copio como tipo numérico ya que en tipo texto me lanza error.
Gracias nuevamente.
Espero con gusto y paciencia tu respuesta.
Veo que ya solucionó el problema, según una respuesta de otro experto.
Suerte !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas