I have Textbox
where I search for products in my database. It has AutoCompleteMode = SuggestAppend
and AutoCompleteSource = Custom
.
This Textbox
is "populated" once the form is opened through FormLoad
, this form is for adding / changing / deleting products, when adding / changing / deleting a product the form does not close, I need some method to update the data of Textbox
of searches without having to close the form and open again, or to close the form and open again without the client having to do this manually.
Code block to save addition / change
private void tsbSalvar_Click(object sender, EventArgs e)
{
if(novoProduto == true)
{
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand cmd = new SqlCommand("INSERIR_PRODUTOS", conn);
cmd.Parameters.AddWithValue("@CODIGO_PRODUTO", txtCodigoProduto.Text);
cmd.Parameters.AddWithValue("@DESCRICAO", txtDescricao.Text);
cmd.Parameters.AddWithValue("@DATA_ENTRADA", dtpDataEntrada.Text);
cmd.Parameters.AddWithValue("@QUANTIDADE", txtQuantidade.Text);
cmd.Parameters.AddWithValue("@QUANTIDADE_MINIMA", txtQuantidadeMinima.Text);
cmd.Parameters.AddWithValue("@TIPO", cbTipo.Text);
if (decimal.TryParse(txtValorInicial.Text, out var valorInicial) && decimal.TryParse(txtValorFinal.Text, out var valorFinal) && decimal.TryParse(txtLucro.Text, out var lucro))
{
cmd.Parameters.AddWithValue("@VALOR_INICIAL", valorInicial);
cmd.Parameters.AddWithValue("@VALOR_FINAL", valorFinal);
cmd.Parameters.AddWithValue("@LUCRO", lucro);
}
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
try
{
int i = cmd.ExecuteNonQuery();
if (i > 0)
MessageBox.Show("Produto cadastrado com sucesso!", "Cadastrado!", MessageBoxButtons.OK, MessageBoxIcon.None);
}
catch(Exception ex)
{
MessageBox.Show("Erro: " + ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
}
else
{
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand cmd = new SqlCommand("ATUALIZAR_PRODUTOS", conn);
cmd.Parameters.AddWithValue("@CODIGO_PRODUTO", txtCodigoProduto.Text);
cmd.Parameters.AddWithValue("@DESCRICAO", txtDescricao.Text);
cmd.Parameters.AddWithValue("@DATA_ENTRADA", dtpDataEntrada.Text);
cmd.Parameters.AddWithValue("@QUANTIDADE", txtQuantidade.Text);
cmd.Parameters.AddWithValue("@QUANTIDADE_MINIMA", txtQuantidadeMinima.Text);
cmd.Parameters.AddWithValue("@TIPO", cbTipo.Text);
if (decimal.TryParse(txtValorInicial.Text, out var valorInicial) && decimal.TryParse(txtValorFinal.Text, out var valorFinal) && decimal.TryParse(txtLucro.Text, out var lucro))
{
cmd.Parameters.AddWithValue("@VALOR_INICIAL", valorInicial);
cmd.Parameters.AddWithValue("@VALOR_FINAL", valorFinal);
cmd.Parameters.AddWithValue("@LUCRO", lucro);
}
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
try
{
int i = cmd.ExecuteNonQuery();
if (i > 0)
MessageBox.Show("Produto alterado com sucesso!", "Alterado!", MessageBoxButtons.OK, MessageBoxIcon.None);
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
}
}
Code block for deletion
private void tsbExcluir_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand cmd = new SqlCommand("EXCLUIR_PRODUTO", conn);
cmd.Parameters.AddWithValue("@CODIGO_PRODUTO", txtCodigoProduto.Text);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
try
{
int i = cmd.ExecuteNonQuery();
if (i > 0)
MessageBox.Show("Produto apagado com sucesso!", "Apagado!", MessageBoxButtons.OK, MessageBoxIcon.None);
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
tsbNovo.Enabled = true;
tsbSalvar.Enabled = false;
tsbCancelar.Enabled = false;
tsbExcluir.Enabled = false;
tstDescricao.Enabled = true;
txtCodigoProduto.Enabled = false;
txtDescricao.Enabled = false;
dtpDataEntrada.Enabled = false;
txtQuantidade.Enabled = false;
txtQuantidadeMinima.Enabled = false;
cbTipo.Enabled = false;
txtValorInicial.Enabled = false;
txtValorFinal.Enabled = false;
txtCodigoProduto.Text = "";
txtDescricao.Text = "";
txtQuantidade.Text = "";
txtQuantidadeMinima.Text = "";
cbTipo.Text = "";
txtValorInicial.Text = "";
txtValorFinal.Text = "";
txtLucro.Text = "";
}
Code block to Auto complete% search%
public void AutoCompleteText(ToolStripTextBox txtBox)
{
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand cmd = new SqlCommand("SELECT DESCRICAO FROM PRODUTOS", conn);
SqlDataReader reader;
conn.Open();
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
txtBox.AutoCompleteCustomSource.Add(reader["DESCRICAO"].ToString());
}
reader.Close();
}
catch(Exception ex)
{
MessageBox.Show("Erro: " + ex.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
}
Code block for "popular" Textbox
with database data
private void frmProdutoEntrada_Load(object sender, EventArgs e)
{
AutoCompleteText(tstDescricao);
}