CLR: .Net / Mono / Boo / Otros CLR > C#
Consultas sql en C#
Laxair:
Gracias chenech, y tenes idea de la segunda pregunta que hice para mostrar todos los registros de la bd?
EDIT: Ya esta solucionado :D
Necesito ayuda con este codigo:
--- Código: ---while (lector.Read())
{
if (lector["Legajo"].ToString() == txtLeg.Text && txtLeg.Text.Substring(0, 1) == "6" || txtLeg.Text.Substring(0, 1) == "3")
{
//if (lector["Cargo"].ToString() == Cargo.Text.ToString())
cmd.Parameters.AddWithValue("@Legajo", Convert.ToInt32(txtLeg.Text.ToString()));
cmd.Parameters.AddWithValue("@Estado", txtEstado.Text.ToString());
cmd.Parameters.AddWithValue("@Fecha", Convert.ToDateTime(txtFecha.Text.ToString()));
cmd.Parameters.AddWithValue("@Cargo", Cargo.Text.ToString());
cmd.Parameters.AddWithValue("@Turno", txtTurno.Text.ToString());
cmd.Parameters.AddWithValue("@Aviso", txtAviso.Text.ToString());
cmd.ExecuteNonQuery();
}
}
--- Fin del código ---
el if que esta comentado tiene problemas si lo pongo no entra nunca, Cargo en la bd es texto y Cargo en windows forms es un combobox, como hago?
EDIT:
--- Código: --- private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =\"C:\\Users\\AsusB85M-G\\Desktop\\Personal.accdb\"";
OleDbCommand cmdA;
OleDbCommand cmdB;
OleDbDataReader lector;
string consultaSQLA = "INSERT INTO InasistenciasJefatura (Legajo, Estado, Fecha, Cargo, Turno, Aviso) VALUES (@Legajo, @Estado, @Fecha, @Cargo, @Turno, @Aviso)";
string consultaSQLB = "SELECT Legajo,Cargo FROM Personal WHERE Legajo = @Legajo AND Cargo = @Cargo ";
cmdA = new OleDbCommand(consultaSQLA, conn);
cmdB = new OleDbCommand(consultaSQLB, conn);
cmdA.Connection = conn;
try
{
conn.Open();
}
catch (Exception excepcion)
{
MessageBox.Show(excepcion.Message);
}
if (conn.State == ConnectionState.Open)
{
try
{
cmdB.Parameters.AddWithValue("@Legajo", Convert.ToInt32(txtLeg.Text.ToString()));
cmdB.Parameters.AddWithValue("@Cargo", Cargo.Text.ToString());
lector = cmdB.ExecuteReader();
while (lector.Read())
{
// Si el lector tiene valores significa que el legajo de la BD es == al del textBox y los cargos también son iguales
cmdA.Parameters.AddWithValue("@Legajo", Convert.ToInt32(txtLeg.Text.ToString()));
cmdA.Parameters.AddWithValue("@Estado", txtEstado.Text.ToString());
cmdA.Parameters.AddWithValue("@Fecha", Convert.ToDateTime(txtFecha.Text.ToString()));
cmdA.Parameters.AddWithValue("@Cargo", Cargo.Text.ToString());
cmdA.Parameters.AddWithValue("@Turno", txtTurno.Text.ToString());
cmdA.Parameters.AddWithValue("@Aviso", txtAviso.Text.ToString());
cmdA.ExecuteNonQuery();
}
}
catch (Exception excepcion)
{
MessageBox.Show(excepcion.Message);
}
conn.Close();
this.Close();
}
}
--- Fin del código ---
Ahí esta la solución a lo que pregunte :D
Si alguien me puede decir como contar los registros de un determinado legajo en la base de datos para sacar una estadística estaría muy agradecido :D
Hola denuevo se me ocurrio el siguiente codigo pero al parecer esta mal :
--- Código: --- string consultaSQLA = "SELECT Legajo FROM InasistenciasSecretario, InasistenciasJefatura, InasistenciasDirector, InasistenciasBedel WHERE Legajo = " + txtLegajo.Text + "";
--- Fin del código ---
Quiero que comparar que el legajo de esas tablas (InasistenciasSecretario, InasistenciasJefatura, InasistenciasDirector, InasistenciasBedel) sea igual al del textbox pero me dice esto: Puede que el campo 'Legajo' especificado haga referencia a más de una tabla de las mostradas en la cláusula FROM de la instrucción SQL.
chenech:
Hola, cuando un campo es igual en mas de una tabla tienes que usar alias.
Esta consulta no tiene sentido:
string consultaSQLA = "SELECT Legajo FROM InasistenciasSecretario, InasistenciasJefatura, InasistenciasDirector, InasistenciasBedel WHERE Legajo = " + txtLegajo.Text + "";
No haces JOIN de las tablas.
Para contar los registros usa SELECT COUNT(LEGAJO) FROM TABLA WHERE ...
Un saludo.
Navegación
[*] Página Anterior
Ir a la versión completa