none
Problema con OleDb.OleDbDataReader RRS feed

  • Pregunta

  • Que tal:

    Estoy intentando usar Access 2007 para crear una base de datos que sea leía a través de ADO.Net en mi aplicación VB. Siempre he usado SQL Server, pero es el momento de trabajar con entornos no remotos, así que opté por una base .mdb

    Cree una consulta llamada Buscar, de este modo:

    PARAMETERS [@TipoDeMovimiento] Byte, [@StringBusqueda] Text ( 10 );
    SELECT tblmovimientos.Id_Movimiento, tblmovimientos.fecha, tblmovimientos.nombre, IIf(IsNull(tblmovimientos.concepto),'',tblmovimientos.concepto) AS concepto, IIf(IsNull(tblmovimientos.referencia),'',tblmovimientos.referencia) AS referencia, tblmovimientos.cantidad, tblCuentas.Nombre AS NombreCuenta
    FROM tblmovimientos LEFT JOIN tblCuentas ON tblmovimientos.v_cuenta = tblCuentas.Id_Cuenta
    WHERE (([tblmovimientos].[nombre] & "," & [tblmovimientos].[concepto] & "," & [tblmovimientos].[referencia] & "," & [tblmovimientos].[cantidad] & "," & [tblCuentas].[Nombre]) Like "*" & [@StringBusqueda] & "*") AND ((tblmovimientos.tipoDeMovimiento)=[@TipoDeMovimiento]);

    Y al momento de ejecutarla utilizando Access, con parámetros @TipoDeMovimiento = 1 y @StringBusqueda = est, me devuelve 1 fila.

    Cuando utilizo el siguiente código en mi aplicación VB.Net, no devuelve nada!

            Dim LaConexion As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & RutaBase & ";Jet OLEDB:Database Password=" & "*" & ";")
    
            Dim ElCommand As New OleDb.OleDbCommand()
    
            ElCommand.Connection = LaConexion
    
            ElCommand.CommandType = CommandType.StoredProcedure
    
            ElCommand.CommandText = "Buscar"
    
            Dim Parametro1 As New Data.OleDb.OleDbParameter
    
            Parametro1.ParameterName = "@TipoDeMovimiento"
    
            Parametro1.Direction = ParameterDirection.Input
    
            Parametro1.OleDbType = OleDb.OleDbType.TinyInt
    
            Parametro1.Value = 1
    
            ElCommand.Parameters.Add(Parametro1)
    
            Dim Parametro2 As New Data.OleDb.OleDbParameter
    
            Parametro2.ParameterName = "@StringBusqueda"
    
            Parametro2.Direction = ParameterDirection.Input
    
            Parametro2.OleDbType = OleDb.OleDbType.WChar
    
            Parametro2.Value = RTrim(txtBuscar.Text)
    
            ElCommand.Parameters.Add(Parametro2)
    
            LaConexion.Open()
    
            Dim ElDR As OleDb.OleDbDataReader = ElCommand.ExecuteReader
    
            While ElDR.Read
    
                MessageBox.Show("Hay resultados!")
    
            End While
    
            LaConexion.Close()
    
    
    RTrim(txtBuscar.Text) según una inspección rápida es "est" - String

    ¿Cuál es el problema? Tengo otros procedimientos almacenados que funcionan perfectamente, y la estructura es básicamente la misma.

    Les agradecería su ayuda.
    mbalderas
    martes, 21 de abril de 2009 20:52

Respuestas

  • Al parecer, si se utiliza OLEDB hay que utilizar los estándares de OLEDB, y no los de Access, por lo tanto, basta con reemplazar la wildcard "*" por "%", y funciona.

    Gracias.
    mbalderas
    • Marcado como respuesta mbalderas miércoles, 22 de abril de 2009 20:18
    miércoles, 22 de abril de 2009 20:17