none
Crear Incio De Sesion Con Access Y Visual Studio

    Pregunta

  • Mis saludos a todos y muchas gracias por las respuestas que hagan referente a este tema .

    Bueno lo que pasa es que estoy haciendo un incio de sesion y aun no entiendo bien y nose como usar access con visual studio el codigo que tengo en este momento es este que corresponde al el boton de inicio de sesion:

                             

     protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {
            if (txtlogin.Text == "")
            {
                lbl_error.Text = "Ingrese un Nombre de Usuario";
            }
            else
            {
                if (txtpasword.Text == "")
                {
                    lbl_error.Text = "Ingrese la contraseña";
                }
                else
                {
                    BDrutinas BD = new BDrutinas();
                    int user = BD.Usuarios(txtlogin.Text, txtpasword.Text);

                    if (user == 0)
                    {
                        lbl_error.Text = "Usuario o Contraseña Inconrrectos";
                    }
                    else
                    {
                        if (user == 1)
                        {
                            Response.Redirect("\\PaginaPrincipal.aspx?Usuario=" + txtlogin.Text + "");
                            Response.Redirect("\\Default.aspx");
                        }


                    }
                }
            }
        }

    luego de esto tengo el .cs y es aqui donde me esta dando el error

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Data;
    using System.Data.OleDb;
    using System.Text;


    public class BDrutinas
    {

        private OleDbConnection oConn = null;

        public OleDbConnection Conectar()
        {
            string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Gin\DI_G.mdb";
            OleDbConnection conectaBd = new OleDbConnection(conexion);
            try
            {
                conectaBd.Open();
            }
            catch (OleDbException eX)
            {
                throw new ArgumentException(eX.Message);
            }
            return (conectaBd);
        }

        public void CloseAll()
        {
            if (!((oConn == null)) && (oConn.State != ConnectionState.Closed))
            {
                oConn.Close();
                oConn = null;
            }
        }

        public DataTable popDTable(string Qry)   //devuelve datatable desde consulta
        {
            OleDbConnection oConn = Conectar();
            OleDbCommand oldCmd = new OleDbCommand(Qry, oConn);

            oldCmd.CommandType = CommandType.Text;

            DataTable dt = new DataTable();

            try
            {
                OleDbDataAdapter daD = new OleDbDataAdapter(oldCmd);
                daD.Fill(dt);
                daD.Dispose();
            }
            catch (OleDbException eX)
            {
                throw new ArgumentException(eX.Message);
            }

            finally
            {
                oConn.Close();
                oldCmd.Dispose();
            }
            return dt;
        }


        public Boolean execSqlQry(string Qry)                                                    //ejecuta sql directo a BD
        {
            bool result = false;
            OleDbConnection oConn = Conectar();
            OleDbCommand sqlCmd = new OleDbCommand(Qry, oConn);
            sqlCmd.CommandType = CommandType.Text;

            try
            {
                sqlCmd.ExecuteNonQuery();
                result = true;
            }
            catch (OleDbException eX)
            {
                throw new ArgumentException(eX.Message);
            }
            finally
            {
                oConn.Close();
                sqlCmd.Dispose();
            }

            return result;
        }
        public int Usuarios(string usuario, string contraseña)
        {
            OleDbConnection cnn = Conectar();
            using (cnn)
            {
                OleDbCommand cmd = new OleDbCommand(@"SELECT Usuarios (@NombreUsuario, @Clave)", cnn);
                cmd.Parameters.Add("@NombreUsuario", OleDbType.VarChar, 35);
                cmd.Parameters.Add("@Clave", OleDbType.VarChar, 10);
                cmd.Parameters["@NombreUsuario"].Value = usuario;
                cmd.Parameters["@Clave"].Value = contraseña;
                int user = Convert.ToInt32(cmd.ExecuteScalar());
                return (user);
            }
        }

     

    El error me lo marca donde e selecionado con negrita

    int user = Convert.ToInt32(cmd.ExecuteScalar());

    Y el error me que da es el siguiente:

    La función 'Usuarios' no está definida en la expresión.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código. 

    Detalles de la excepción: System.Data.OleDb.OleDbException: La función 'Usuarios' no está definida en la expresión.

    Trate de explicar lo mas detalladamente, solo necesito poder entrar al inicio de sesion, desde ya muchas gracias saludos.


    Sebastian Peralta

    miércoles, 06 de febrero de 2013 15:45

Todas las respuestas

  • este query es incorrecto

    SELECT Usuarios (@NombreUsuario, @Clave)

    deberia ser

    SELECT COUNT(*) FROM Usuarios WHERE  nombre = @NombreUsuario AND clave = @Clave

    de esa forma devolvera la cantidad de registros

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 06 de febrero de 2013 16:08
  • consulta y en la query que me menciona

     nombre = @NombreUsuario AND clave = @Clave

    ese nombre y esa clave que vendria siendo por lo que entiendo debe quedar asi o noo?

      public int Usuarios(string usuario, string contraseña)
        {
            OleDbConnection cnn = Conectar();
            using (cnn)
            {
                OleDbCommand cmd = new OleDbCommand(@"SELECT COUNT(*) FROM Usuarios WHERE  nombre = @NombreUsuario AND clave = @Clave)", cnn);
                cmd.Parameters.Add("@NombreUsuario", OleDbType.VarChar, 35);
                cmd.Parameters.Add("@Clave", OleDbType.VarChar, 10);
                cmd.Parameters["@NombreUsuario"].Value = usuario;
                cmd.Parameters["@Clave"].Value = contraseña;
                int user = Convert.ToInt32(cmd.ExecuteScalar());
                return (user);
            }
        }


    Sebastian Peralta

    miércoles, 06 de febrero de 2013 18:25