Ir para o conteúdo
joel22rm

Colocar apenas números numa TextBox

Mensagens Recomendadas

joel22rm    0
joel22rm

Boas estou a fazer um questionário e gostaria de saber como faço para no campo onde se vai digitar o telemovel apenas ser possivel colocar numeros.

Alguem pode ajudar?

obrigado :cheesygrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    78
M6

Podes usar uma máscara ou então apanhas o evento de key down e só deixas passar algarismos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

ja consegui utilizando uma mascara...

mas agr da me erro...

"OleDbException was unhandled"

"tipo de dados incorrecto na expressão de criterios"

de k se trata ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

A TextBox tem o evento chamado KeyPress, implementas esse evento e usa este código:

            
if ((int)e.KeyChar < 48 || (int)e.KeyChar > 57) //verifica se a tecla pressionada é um algarismo
        e.Handled = true;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

Esse erro ocorre porque estás a tentar inserir um tipo de dados incorrecto na base de dados.

Por exemplo, um campo que está definido como sendo do tipo int e estás-lhe a passar uma string.

Provavelmente é do campo numérico da textbox que falaste. Estás depois a converte-lo para int ou estás a passar como string? (isto claro, se a tua bd está à espera de um int em vez de uma string)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

A TextBox tem o evento chamado KeyPress, implementas esse evento e usa este código:

            
if ((int)e.KeyChar < 48 || (int)e.KeyChar > 57) //verifica se a tecla pressionada é um algarismo
        e.Handled = true;

mas eu neste momento estou a usar uma maskedtextbox k m da mais geito por causa da data....

esse comando lá certamente n vai fazer nd ne ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

Sim, o código que te mostrei só funciona para algarismos. Mas podes colocar qualquer outro caracter a passar no if.  Se consultares uma tabela ASCII poderás ver que o caracter '/' (um separador utilizado em datas) tem o valor 47, portanto é só mudares de

(int)e.KeyChar < 48

para

(int)e.KeyChar<47.

De qualquer forma, para trabalhares com datas podes usar um DateTimePicker, é bem mais prático e visual e interactivamente mais agradável. E se tiveres que pegar nessa data e inseri-la numa bd, já tens a data como sendo do tipo de dados DateTime.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Esse erro ocorre porque estás a tentar inserir um tipo de dados incorrecto na base de dados.

Por exemplo, um campo que está definido como sendo do tipo int e estás-lhe a passar uma string.

Provavelmente é do campo numérico da textbox que falaste. Estás depois a converte-lo para int ou estás a passar como string? (isto claro, se a tua bd está à espera de um int em vez de uma string)

a mnh bd esta a espera de uma string. ate pk antes de eu colocar a masked tinha uma TextBox normal e funcionava. Apenas n conseguia seperar os numeros das letras.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Sim, o código que te mostrei só funciona para algarismos. Mas podes colocar qualquer outro caracter a passar no if.  Se consultares uma tabela ASCII poderás ver que o caracter '/' (um separador utilizado em datas) tem o valor 47, portanto é só mudares de

(int)e.KeyChar < 48

para

(int)e.KeyChar<47.

De qualquer forma, para trabalhares com datas podes usar um DateTimePicker, é bem mais prático e visual e interactivamente mais agradável. E se tiveres que pegar nessa data e inseri-la numa bd, já tens a data como sendo do tipo de dados DateTime.

a data será uma data de nascimento k o utilizador vai inserir. mas obrigado na mesma! vai m ser util.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

a mnh bd esta a espera de uma string. ate pk antes de eu colocar a masked tinha uma TextBox normal e funcionava. Apenas n conseguia seperar os numeros das letras.

podes mostrar a query que está a dar problemas?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

podes mostrar a query que está a dar problemas?

if (comInsSocio.ExecuteNonQuery() = 1)

                messagembox........

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

Se tens isto mesmo assim

if (comInsSocio.ExecuteNonQuery() = 1)

deve estar a dar erro de compilação, porque é == e não =, mas deve ter sido a copiar para aqui.

Bom, mas o que eu queria ver não era isso, mas sim a consulta Sql, o Insert que estás a fazer.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

estou a usar access 2007

comInsSocio.CommandText = @"INSERT INTO socios (Telefone) VALUES (@telefone)",

comInsSocio.Parameters.Add("@telefone", OleDbType.VarWChar);

comInsSocio.Parameters["@telefone].Value = txtTelefone.Text;

if (connBDInsSocios.State == ConnectionState.Closed)
  connBDSocios.Open();

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

Aparentemente não vejo nada de erro.

Tens algum campo que seja not null? Se assim for, terás que os adicionar à consulta.

Se não for o caso, experimenta a mudar para o seguinte:

comInsSocio.CommandText = @"INSERT INTO socios (Telefone) VALUES (@telefone)",
comInsSocio.Parameters.AddWithValue("@telefone", txtTelefone.Text);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Aparentemente não vejo nada de erro.

Tens algum campo que seja not null? Se assim for, terás que os adicionar à consulta.

Se não for o caso, experimenta a mudar para o seguinte:

comInsSocio.CommandText = @"INSERT INTO socios (Telefone) VALUES (@telefone)",
comInsSocio.Parameters.AddWithValue("@telefone", txtTelefone.Text);

continua com o mesmo erro...

tu kerias k eu colocasse "AddWithValue" em "comInsSocio.Parameters.Add("@telefone", OleDbType.VarWChar);"

ou

comInsSocio.Parameters["@telefone].Value = txtTelefone.Text;

?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Já agora, o teu campo telefone é do tipo String?

sim é. mas mesmo que n fosse tambem já utilizei o ToString() e não consegui.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
odread    0
odread

Este método adiciona só numeros mesmo que o utilizador meta letras ou outro valor.

Exemplo quando se carrega em um botao:

-----------------------------------------

using System.Text.RegularExpressions;

private void button1_Click(object sender, EventArgs e)

        {

//Dentro dos [] metes o que queres que a textbox aceite, por exemplo aqui aceita todos os números e só numeros.

  Regex expression = new Regex("[0-9]*"); 

            foreach (Match match in expression.Matches(eSCNomeTextBox.Text))

            {

                textBox1.AppendText(match.Value);

            }

        }

--------------------------------------------------------------------

Tá feito espero que seja isto  :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

sim é. mas mesmo que n fosse tambem já utilizei o ToString() e não consegui.

Perguntei porque podias ter o campo definido como sendo numérico e estás a passar uma string.

Já confirmaste se na tua tabela não tens campos que estejam como sendo not null?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Perguntei porque podias ter o campo definido como sendo numérico e estás a passar uma string.

Já confirmaste se na tua tabela não tens campos que estejam como sendo not null?

sim já e nao tenho

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
amiloM1425    0
amiloM1425

Desculpa estar a fazer estas perguntas todas, mas as vezes podem escapar estas coisas simples.

A chave primária da tua tabela sócio é incrementada automaticamente?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joel22rm    0
joel22rm

Desculpa estar a fazer estas perguntas todas, mas as vezes podem escapar estas coisas simples.

A chave primária da tua tabela sócio é incrementada automaticamente?

nao.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade