Prevent user from saving information in bank

1
Hello, I'm using Windows Form C # Visual Studio , how do I prevent the user from saving the information in the database without filling in the required fields, ie those% in> C # . I tried with (NOT NUL) as below, but it did not work.

    void IMPEDIRSALVAR()//Método impedi que o usuário salve as informações
    {
        if (txtNomeAluno.Text == "")
        {
            MessageBox.Show("Não é possivel criar um aluno sem o nome do aluno", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
            txtNomeAluno.Focus();
            if (mtbNascimentoAluno.Text == "")
            {
                MessageBox.Show("Não é possivel criar um aluno sem a Data de nascimento", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
                mtbNascimentoAluno.Focus();
            }

            if (mkb_Cpf.Text == "")
            {
                MessageBox.Show("Não é possivel criar um aluno sem O CPF do Responsável", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
                mkb_Cpf.Focus();
            }
            if (txtRG.Text == "")
            {
                MessageBox.Show("Não é possivel criar um aluno sem o RG do Responsável", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtRG.Focus();
            }
            if (mkb_fone_contato.Text == "")
            {
                MessageBox.Show("Não é possivel criar um aluno sem o Fone de contato", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
                mkb_fone_contato.Focus();
            }
        }
        else
        {
            MessageBox.Show("Salvando");
        }

    }
    
asked by anonymous 26.07.2014 / 23:33

4 answers

3

What you can do to simplify validation is always to use return within each IF .

It's more or less what's suggested here: Replace Nested Condition with Guard Clauses .

Of course, this also depends on your logic. Here's a code hint:

void IMPEDIRSALVAR()//Método impedi que o usuário salve as informações
{
    if (txtNomeAluno.Text.Equals(string.Empty))
    {
        MessageBox.Show("Não é possivel criar um aluno sem o nome do aluno", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
       txtNomeAluno.Focus();
       return;
    }
    if (mtbNascimentoAluno.Text.Equals(string.Empty))
    {
        MessageBox.Show("Não é possivel criar um aluno sem a Data de nascimento", "Cadastrando Aluno", MessageBoxButtons.OK, MessageBoxIcon.Information);
        mtbNascimentoAluno.Focus();
        return;
    }

    // Nenhum erro...
    MessageBox.Show("Salvando");
}
    
27.07.2014 / 22:51
3

The logic is wrong. Currently, to display "Saving", just fill in the student's name - all other fields are optional.

if(nomeAluno  == ""){
    //...

    if(campo2  == "")
        //..
    if(campo3 == "")
        //...
}
else {
    //salvar
}

To make all fields mandatory, * if * s have to be chained instead of nested :

if(nomeAluno == "")
    //...
else if(campo2  == "")
    //..
else if(campo3 == "")
    //...
else {
    //salvar
}
    
27.07.2014 / 12:06
2

Use the IsNullOrEmpty method. (although the check for null is irrelevant as comment @dcastro ) .

In addition, keep a flat structure of ifs . If you will actually validate everything by displaying MessageBox , else ifs prevent multiple errors from being displayed at once.

Finally, if you also want to validate if the text is not a blank string, take a look at the

27.07.2014 / 00:20
1

Hello friends I was able to solve my problems with this method

public bool VerificarCamposEmBranco(Control ctrl)
{
    bool retorno = false;
    foreach (Control c in ctrl.Controls)
    {
        if (c is TextBox)
        {
            if (((TextBox)c).Text.Length <= 2)
            {
                //Campo ta em branco
                retorno = true;
                //((TextBox)c).BackColor = System.Drawing.Color.Red;
                MessageBox.Show("Preencha o campo" + c.Name);
            }
        }
    }

    return retorno;
}

Thanks a lot for the help ....

    
28.07.2014 / 21:34