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