Usuário com melhor resposta
Gerar código automático no TextBox

Pergunta
-
Bom dia..
Estou criando uma aplicação no C#, sou iniciante ainda, tenho um campo no meu cadastro de cliente, o campo txtCodigo, e preciso que este campo gere um numero sequencial automático, toda vez que eu clicar no botão para inserir um novo registo, não posso pegar direito do banco de dados, porque este código tem 6 caracteres, Ex. 000001. Tem como fazer um código para resolver este problema
Desde já agradeço.
JUNIOR GUERREIRO T.I
Respostas
-
Tem um erro de digitação no INSERTED (faltou um E):
private void btnIncluir_Click(object sender, EventArgs e) { conm.Open(); comando.CommandText = "INSERT INTO tbl_Cliente(Nome, RG, CPF, Endereco, Numero, Complemento, Bairro, Cidade, Estado, CEP, Telefone, Celular ) OUTPUT inserted.IDCliente VALUES ('" + TxtCliente.Text + "', '" + TxtRG.Text + "', '" + TxtCPF.Text + "', '" + TxtEndereco.Text + "', '" + TxtNumero.Text + "', '" + TxtComplemento.Text + "', '" + TxtBairro.Text + "', '" + TxtCidade.Text + "', '" + TxtEstado.Text + "', '" + TxtCEP.Text + "', '" + TxtTelefone.Text + "', '" + TxtCelular.Text + "')"; var idNovo = Convert.ToInt32(comando.ExecuteNonQuery()); nomeDoTextBox.Text = idNovo.ToString(); conm.Close(); }
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Junior Guerreiro segunda-feira, 3 de abril de 2017 18:23
-
Sim, é possível:
nomeDoTextBox.Text = idNovo.ToString("D6");
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Junior Guerreiro segunda-feira, 3 de abril de 2017 18:24
Todas as Respostas
-
Bom dia,
Se você não for consultar no banco o último sequencial gerado, há grande chance de ter problemas com concorrência/dados duplicados. Se o problema é exibir o número sempre com 6 dígitos, basta formatar o mesmo.
Ex:
int valor = 56; Console.WriteLine(valor.ToString("D6")); // saída: 000056
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
Bom dia..
Desculpa mas acho que não expressei direito, eu tenho sim que consultar o campo no banco para saber qual foi o ultimo código inserido, mas então como faço para pegar o valor direito do meu campo da minha tabela do sql, para sim evitar problemas de duplicidade com o código, vc pode me explicar.
Obrigado
JUNIOR GUERREIRO T.I
-
Você pretende buscar este valor antes mesmo de inserir o novo registro? Caso sim, como pretende tratar o cancelamento da inclusão (usuário A iria inserir registro 8 e cancela, mas enquanto isso usuário B iria inserir registro 9, logo ficaria um "buraco" entre os sequenciais).
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
Então o que quero fazer e o seguinte, tenho um botão chamado Inserir novo registo, quando clico nesse botão ele insere uma linha na minha tabela com o numero do código preenchido no textbox, o código que e gerado no campo IDCliente que tenho na minha tabela no slq, ai quando eu preencher os campos do cadastro tenho um outro botão gravar, para gravar os dados no tabela de cliente no banco de dados.
JUNIOR GUERREIRO T.I
-
Se no click do botão Inserir você já vai adicionar o registro em sua tabela do banco, você pode definir sua coluna como IDENTITY e usar o OUTPUT na sua instrução de INSERT.
Ex:
INSERT INTO Tabela (CAMPO_A, ...) OUTPUT INSERTED.CAMPO_ID VALUES (...)
Deste modo após o INSERT você terá o sequencial que foi gerado para o novo registro e poderá preencher seu textbox.
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
Juliano boa tarde.
Ainda não consegui resolver, vc pode me ajudar segue abaixo meu codigo.
public partial class frmClientes : Form
{
SqlConnection conm = new SqlConnection("Data Source=JUNIOR-NT;Initial Catalog=GSTSOLUTIONS;Persist Security Info=True;User ID=sa;Password=SQL");
SqlCommand comando = new SqlCommand();
SqlDataReader dr;
public frmClientes()
{
InitializeComponent();
}
private void frmClientes_Load(object sender, EventArgs e)
{
comando.Connection = conm;
}
private void btnIncluir_Click(object sender, EventArgs e)
{
conm.Open();
comando.CommandText = "INSERT INTO tbl_Cliente(Nome, RG, CPF, Endereco, Numero, Complemento, Bairro, Cidade, Estado, CEP, Telefone, Celular ) OUTPUT INSERTD.IDCliente VALUES ('" + TxtCliente.Text + "', '" + TxtRG.Text + "', '" + TxtCPF.Text + "', '" + TxtEndereco.Text + "', '" + TxtNumero.Text + "', '" + TxtComplemento.Text + "', '" + TxtBairro.Text + "', '" + TxtCidade.Text + "', '" + TxtEstado.Text + "', '" + TxtCEP.Text + "', '" + TxtTelefone.Text + "', '" + TxtCelular.Text + "')";
comando.ExecuteNonQuery();
conm.Close();
}
private void btnSair_Click(object sender, EventArgs e)
{
Close();
}
private void btnNovo_Click(object sender, EventArgs e)
{
//TxtCliente.Text = "";
TxtRG.Text = "";
TxtCPF.Text = "";
TxtEndereco.Text = "";
TxtNumero.Text = "";
TxtComplemento.Text = "";
TxtBairro.Text = "";
TxtCidade.Text = "";
TxtEstado.Text = "";
TxtCEP.Text = "";
TxtTelefone.Text = "";
TxtCelular.Text = "";
}
private void btnSalvar_Click(object sender, EventArgs e)
{
Address endereco = SearchZip.GetAddress(TxtCEP.Text);
if (endereco.Zip != null)
{
TxtEndereco.Text = endereco.Street;
TxtBairro.Text = endereco.District;
TxtCidade.Text = endereco.City;
TxtEstado.Text = endereco.State;
}
else
{
MessageBox.Show("Por favor preecha o campo do cep com um cep válido");
TxtCEP.Text = "";
return;
}
}
}
}
JUNIOR GUERREIRO T.I
-
Tem um erro de digitação no INSERTED (faltou um E):
private void btnIncluir_Click(object sender, EventArgs e) { conm.Open(); comando.CommandText = "INSERT INTO tbl_Cliente(Nome, RG, CPF, Endereco, Numero, Complemento, Bairro, Cidade, Estado, CEP, Telefone, Celular ) OUTPUT inserted.IDCliente VALUES ('" + TxtCliente.Text + "', '" + TxtRG.Text + "', '" + TxtCPF.Text + "', '" + TxtEndereco.Text + "', '" + TxtNumero.Text + "', '" + TxtComplemento.Text + "', '" + TxtBairro.Text + "', '" + TxtCidade.Text + "', '" + TxtEstado.Text + "', '" + TxtCEP.Text + "', '" + TxtTelefone.Text + "', '" + TxtCelular.Text + "')"; var idNovo = Convert.ToInt32(comando.ExecuteNonQuery()); nomeDoTextBox.Text = idNovo.ToString(); conm.Close(); }
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Junior Guerreiro segunda-feira, 3 de abril de 2017 18:23
-
-
Sim, é possível:
nomeDoTextBox.Text = idNovo.ToString("D6");
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Marcado como Resposta Junior Guerreiro segunda-feira, 3 de abril de 2017 18:24
-