none
Sentencia SQL en Visual Studio RRS feed

  • Pregunta

  • Hola mi consulta es porque al aplicar esta sentencia me da este Error y no logro desifrar lo que esta mal.

    Desde ya muchas gracias

    Saludos

                Dim Fecha_Inicial As String

                Dim Fecha_Final As String

                'Intervalo para las fechas  
                Fecha_Inicial = Format(diaentrada.Value, "MM/dd/yyyy")
                Fecha_Final = Format(diasalida.Value, "MM/dd/yyyy")

                Dim consulta As String

                consulta = "SELECT habitacion,fechaE,fechaS,comodidades from rg1 where habitacion= '" + txtHabitacion.Text + "' AND fechaE >= '" + Fecha_Inicial + "' AND fechaE <= '" + Fecha_Final + "' OR habitacion = '" + txtHabitacion.Text + "' AND '" + Fecha_Inicial + "' >= fechaE AND fechaE <= '" + Fecha_Inicial + "'"

                Dim Mov As New OleDbConnection()
                Mov.ConnectionString = ("PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & Ruta)
                'Consulta
                Dim M As New DataTable()
                Dim ObjDataSet As New DataSet()
                Dim objAdap As New OleDbDataAdapter(consulta, Mov)
                Mov.Open()
                objAdap.Fill(M)
                DataDisponible.DataSource = M
                Mov.Close()

           !!!LOS TIPOS DE DTOS NO COINCIDEN CON LA EXPRESION DE CRITERIO!!


    • Editado fede555 sábado, 19 de mayo de 2012 16:23
    sábado, 19 de mayo de 2012 16:12

Respuestas

  • solo olvide el new

     Dim cmd As New SqlCommand (consulta, Mov)

    ---

    tambien olvide cambiar esta linea

    Dim objAdap As New OleDbDataAdapter(consulta, Mov)

    para que sea

    Dim objAdap As New OleDbDataAdapter(cmd)


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta fede555 sábado, 19 de mayo de 2012 21:58
    • Desmarcado como respuesta fede555 sábado, 19 de mayo de 2012 21:59
    • Marcado como respuesta fede555 sábado, 19 de mayo de 2012 22:01
    sábado, 19 de mayo de 2012 21:28

Todas las respuestas

  • lo que esta mal es que no usas parametros, concatenar un string con los valores un un error

    Dim connstring As String = "PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & Ruta
    Dim Mov As New OleDbConnection(connstring)
    
    Dim consulta As String  = "SELECT habitacion,fechaE,fechaS,comodidades from rg1 where habitacion= @habitacion AND fechaE >= @fechainicio AND fechaE <= @fechafinal ..."
    Dim cmd As SqlCommand(consulta, Mov)
    cmd.Parameters.AddwithValue("@habitacion", txtHabitacion.Text)
    cmd.Parameters.AddwithValue("@fechainicio", Convert.ToDatetime(Fecha_Inicial))
    cmd.Parameters.AddwithValue("@fechafinal", Convert.ToDatetime(Fecha_Final ))
    .
    .
    
    Dim objAdap As New OleDbDataAdapter(consulta, Mov)
    Dim M As New DataTable()
    objAdap.Fill(M)

    completa los ... con los parametros faltantes

    pero de esta forma es que debes armar la query con parametros

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 19 de mayo de 2012 17:24
  • Gracias por la respueta. Me sale otro Error

    Error    1    Los límites de matriz no pueden aparecer en los especificadores de tipo
    Error    2    No se ha declarado el nombre 'cmd

                Dim connstring As String = "PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & Ruta
                Dim Mov As New OleDbConnection(connstring)
    
                Dim Fecha_Inicial As String
                Dim Fecha_Final As String
    
                Dim consulta As String = "SELECT habitacion,fechaE,fechaS,comodidades from rg1 where habitacion= @habitacion AND fechaE >= @fechainicio AND fechaE <= @fechafinal OR habitacion= @habitacion AND fechaE >= @fechainicio AND fechaS <= @fechafinal"
                Dim cmd As SqlCommand (consulta, Mov)
                cmd.Parameters.AddwithValue("@habitacion", txtHabitacion.Text)
                cmd.Parameters.AddwithValue("@fechainicio", Convert.ToDateTime(Fecha_Inicial))
                cmd.Parameters.AddwithValue("@fechafinal", Convert.ToDateTime(Fecha_Final))
    
                Dim objAdap As New OleDbDataAdapter(consulta, Mov)
                Dim M As New DataTable()
                objAdap.Fill(M)
                DataDisponible.DataSource = M



    • Editado fede555 sábado, 19 de mayo de 2012 18:32
    sábado, 19 de mayo de 2012 18:31
  • solo olvide el new

     Dim cmd As New SqlCommand (consulta, Mov)

    ---

    tambien olvide cambiar esta linea

    Dim objAdap As New OleDbDataAdapter(consulta, Mov)

    para que sea

    Dim objAdap As New OleDbDataAdapter(cmd)


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta fede555 sábado, 19 de mayo de 2012 21:58
    • Desmarcado como respuesta fede555 sábado, 19 de mayo de 2012 21:59
    • Marcado como respuesta fede555 sábado, 19 de mayo de 2012 22:01
    sábado, 19 de mayo de 2012 21:28
  • Muchas Gracias Leandro, funciona correctamente

    Saludos!!

    sábado, 19 de mayo de 2012 22:01