none
problema con fecha como parámetro en modo conectado RRS feed

  • Pregunta

  • Buenas tardes a todos/as y antetodo disculpas a las dos personas que me contestaron en posts anteriores y que no he calificado la respuesta hasta hoy.

    Dicho esto les explico:


    Dim connection As New OleDbConnection
     connection.ConnectionString =   "Provider=Microsoft.Jet.OLEDB.4.0;DataSource='C:\*****\****\*****.mdb'"
     connection.Open()
     Dim cmd1 As New OleDbCommand
     cmd1.CommandType = CommandType.Text
     cmd1.CommandText = "SELECT DISTINCT id_Document FROM CRU_DOC_PARA WHERE (Nom_Paraula=@paraclau1 OR Nom_Paraula=@paraclau2)"

    Dim clau1 As New OleDbParameter("@paraclau1", "a%")
                        cmd1.Parameters.Add(clau1)
                        cmd1.Parameters(0).Value = cmbCParaclau.Text

    Dim clau2 As New OleDbParameter("@paraclau2", "a%")
    cmd1.Parameters.Add(clau2)
    cmd1.Parameters(1).Value = cmbCParaClau2.Text
    ....

    Este código me ejecuta la consulta perfectamente, y el datareader enseña el resultado donde y como quiero. Pero si añado otro parámetro a esta query, en forma de fecha:

    Dim connection As New OleDbConnection
     connection.ConnectionString =   "Provider=Microsoft.Jet.OLEDB.4.0;DataSource='C:\*****\****\*****.mdb'"
     connection.Open()
     Dim cmd1 As New OleDbCommand
     cmd1.CommandType = CommandType.Text
     cmd1.CommandText = "SELECT DISTINCT id_Document FROM CRU_DOC_PARA WHERE (Nom_Paraula=@paraclau1 OR Nom_Paraula=@paraclau2) AND data_Edicio <=@dataedicio"


    'aqui van los dos parámetros igual que en el trozo de código anterior
    Dim clau3 As New OleDbParameter("@dataedicio", "a%")
    cmd1.Parameters.Add(clau3)
    Dim parametroFecha As DateTime = cdataEdicio1
    cmd1.Parameters.AddWithValue("@dataedicio", parametroFecha)


    El lector siempre me dice que le falta un parámetro, y si digo siempre es por que he intentado definir este último parámetro de varias maneras pero no encuentro nunca el cómo.

    Mil gracias por la atención


    • Cambiado Enrique M. Montejo lunes, 2 de mayo de 2011 11:53 acceso a datos (De:Lenguaje VB.NET)
    jueves, 21 de febrero de 2008 15:30

Todas las respuestas

  •  

    :-)

    Hola,

    A ver, veo que en tu sentencia SQL tienes 3 parametros:

     

    SELECT DISTINCT id_Document FROM CRU_DOC_PARA WHERE (Nom_Paraula=@paraclau1 OR Nom_Paraula=@paraclau2) AND data_Edicio <=@dataedicio

     

    Tu le creas 2 parametros y le pasas el valor:

     

    Code Snippet

    Dim clau1 As New OleDbParameter("@paraclau1", "a%")

    cmd1.Parameters.Add(clau1)

    cmd1.Parameters(0).Value = cmbCParaclau.Text

    Dim clau2 As New OleDbParameter("@paraclau2", "a%")
    cmd1.Parameters.Add(clau2)
    cmd1.Parameters(1).Value = cmbCParaClau2.Text

     

     

    En cambio con el tercero lo creas dos veces (Add + AddWithValue) y sólo le pasas valor en el 2º caso:

     

    Code Snippet
    Dim clau3 As New OleDbParameter("@dataedicio", "a%")
    cmd1.Parameters.Add(clau3)
    Dim parametroFecha As DateTime = cdataEdicio1
    cmd1.Parameters.AddWithValue("@dataedicio", parametroFecha)

     

     

    O bien le pasas valor en el primero:

     

    Code Snippet
    Dim clau2 As New OleDbParameter("@dataedicio", "a%")
    cmd1.Parameters.Add(clau3)
    cmd1.Parameters(1).Value = CType(
    cdataEdicio1, DateTime)

     

     

    O bien sólo lo creas una vez:

     

    Code Snippet
    cmd1.Parameters.AddWithValue("@dataedicio", parametroFecha)

     

     

    Un saludo,

     

    jueves, 21 de febrero de 2008 16:37
    Moderador
  • Estimado Lluís, bona tarda i moltes gràcies

    El lapsus que comentas me ha sucedido precisamente en la fase del desespero probando varias tentavivas de aproximación al problema.

    Por si acaso lo he generado bien (excluyendo una de las dos inserciones del parámetro de fecha) y me sigue dando el mismo problema al ejecutar el lector: no encuentra parámetro.

    Estaba también indagando que no tuviera la fecha como string y "cosas de estas" pero sigo igual.

    Esperando tu nueva respuesta, gracias una vez mas


    jueves, 21 de febrero de 2008 17:12