Я пытаюсь не повторять запись из поля Act_ID "Active" с пустым полем F_Return, но пока она не может ее решить. Как я могу сделать, чтобы эта запись уже находилась в БД, если она должна подтвердить, что актив уже назначен.
//Query para validar datos repetidos
string validarDatos = @"SELECT * FROM Prestamo WHERE Id_act=Id_act AND F_retorno IS NULL";
private void btnInsertar_Click(object sender, EventArgs e)
{
//Revisar si uno o mas campos estan vacios
if (String.IsNullOrEmpty(txtId_emp.Text) || String.IsNullOrEmpty(txtId_act.Text)/* || String.IsNullOrEmpty(txtEstado.Text)*/)
{
MessageBox.Show("Uno o mas campos estan vacios.. Asegurese de ingresar todos los campos");
}
else
{
//Validar que el registro no este asignado
OleDbCommand validarDataCommand;
validarDataCommand = new OleDbCommand(validarDatos, OledbCon);
validarDataCommand.Parameters.AddWithValue("@Id_act", OleDbType.VarChar).Value = txtId_act.Text;
//validarDataCommand.Parameters.AddWithValue("@Id_emp", OleDbType.VarChar).Value = txtId_emp.Text;
validarDataCommand.Parameters.AddWithValue("@F_retorno", OleDbType.VarChar);
//Abrir conexion de BD
AbrirCon();
OleDbDataReader dr = validarDataCommand.ExecuteReader();
while (dr.Read())
{
if (dr.HasRows == true)
{
MessageBox.Show("Registro duplicado", "Access Denied");
}
else if (dr.HasRows == false)
{
try
{
//Asignar el texto "Activo" a campo de Estado en el registro nuevo
string estado = "Activo";
txtEstado.Text = estado;
//Insertar registro en la BD
OleDbCommand insertDataCommand;
insertDataCommand = new OleDbCommand(insertDataBD, OledbCon);
insertDataCommand.Parameters.AddWithValue("Id_emp", OleDbType.VarChar).Value = txtId_emp.Text;
insertDataCommand.Parameters.AddWithValue("Id_act", OleDbType.VarChar).Value = txtId_act.Text;
insertDataCommand.Parameters.AddWithValue("F_entrega", DateTime.Now.ToString());
insertDataCommand.Parameters.AddWithValue("Estado", OleDbType.VarChar).Value = txtEstado.Text;
////Abrir conexion de BD
AbrirCon();
int dataInserted = insertDataCommand.ExecuteNonQuery();
if (dataInserted > 0)
{
MessageBox.Show("El registro se a ingresado satisfactoriaente...");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//Borrar los datos de los textboxs
txtId_emp.Text = "";
txtId_act.Text = "";
txtEstado.Text = "";
//Cerrar la conexion de la BD
CerrarCon();
}
}
}
}
}
После проверки того, что актив не дублируется, следующий шаг y для вставки данные в БД.