Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2012, 10:38
Avatar de jesmi89
jesmi89
 
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Validar datos de que ingrese un usuario sean iguales al de la Base de Datos

Hola, lo que sucede es que estoy realizando un formulario de registro de PQR (Peticiones, Quejas y Reclamos) y ps bueno la informacion que ingresa el usuario es guardada en una base de datos que llamo "PQR", la cual la he creado con la opción de Asp.Net de crear nueva BD. Y pues bueno esta Base tiene a su vez 4 tablas, en la cual se guarda la informacion del usuario dependiendo si en el Formulario escogio que queria radicar una Petición, reclamo, asi sucesivamente.
Por ello cada tabla recibe los datos dependiendo el tipo de solicitud que desea el usuario, no se si sea un problema pero no tengo las tablas relacionadas entre si, y ps cada columna tiene el mismo nombre para cada tabla.

Y bueno ya logro que me guarde la informacion en la tabla que debe ser, es decir dependiendo el tipo de solicitus.

Pero ahora lo que necesito es que tengo una página donde le doy la opcion al usuario de verificar si ya se le soluciono su problema, y para ello debe ingresar su numero de identificación y un codigo que se le dio anteriormente, y si la información es correcta podrá visualizar la informacion. Pero como dije ahi está el problema no logro que cuando el usuario digite esa informacion el programa recorra las 4 tablas buscando a que registro coincide y ahi si le muestre la info.

Para hacer esto googleando encontre una opción que propone la página del guille para validar en el caso cuando alguien se logea y ps indica sus datos, y claro está lo acomodé a mi situación, y para ello hice lo siguiente:

Código:
// Función para comprobar si el acceso es correcto
        private bool comprobarUsuario (string identificacion, string radicado)
        {
            // Conectar a la base de datos
            SqlConnection ccadena = null;
            //
            try
            {
                // Conectar a la base de datos de SQL Server
                // (la cadena debe estar inicializada previamente)
                ccadena = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Documents\\Visual Studio 2010\\Projects\\ProyectoFinal\\ProyectoFinal\\App_Data\\PQR.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
                ccadena.Open();

                // Definir la cadena que vamos a usar para comprobar
                // si el ID y el código son correctos.
                // Utilizo parámetros para evitar inyección de código.
                System.Text.StringBuilder sel = new System.Text.StringBuilder();

                // Usando COUNT(*) nos devuelve el total que coincide
                // con lo indicado en el WHERE,
                // por tanto, si la clave y el usuario son correctos,
                // devolverá 1, sino, devolverá 0
                sel.Append("SELECT COUNT(*) FROM Peticiones, Quejas");
                sel.Append("WHERE Identificacion = @Identificacion AND Radicado = @Radicado");
                // Definir el comando que vamos a ejecutar
                SqlCommand cmd = new SqlCommand(sel.ToString(), ccadena);
                // Creamos los parámetros
                cmd.Parameters.Add("@Identificacion", SqlDbType.NVarChar, 30);
                cmd.Parameters.Add("@Radicado", SqlDbType.NVarChar, 10);
                //
                // Asignamos los valores recibidos como parámetro
                cmd.Parameters["@Identificacion"].Value = identificacion;
                cmd.Parameters["@Radicado"].Value = radicado;
                //
                // Ejecutamos la consulta
                // ExecuteScalar devuelve la primera columna de la primera fila
                // por tanto, devolverá el número de coincidencias halladas,
                // que si es 1, quiere decir que el id y el codigo son correctos.
                int t = Convert.ToInt32(cmd.ExecuteScalar());
                // Cerramos la conexión
                ccadena.Close();
                //
                // Si el valor devuelto es cero
                // es que no es correcto.
                if (t == 0)
                {
                    return false;
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("ERROR al conectar a la base de datos: \n" +
            ex.Message, "Comprobar usuario",
            MessageBoxButtons.OK,
            MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                return false;
            }
            finally
            {
                if (ccadena != null)
                {
                    ccadena.Dispose();
                }
            }
            //
            // Si llega aquí es que todo ha ido bien
            return true;
        }
y luego para que esta función se ejecute en el botón puse esto

Código:
protected void btnEnvio_Click(object sender, EventArgs e)
        {
            if (comprobarUsuario(this.txtID.Text, this.txtCode.Text))
            {
               MessageBox.Show("informacion correcta");
            }
            
        }

Gracias y espero me puedan colaborar a enocontrar una posible solución