• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

joel22rm

Colocar apenas números numa TextBox

38 mensagens neste tópico

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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

e como e k faço isso ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes mostrar a query que está a dar problemas?

if (comInsSocio.ExecuteNonQuery() = 1)

                messagembox........

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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;

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim aí. Substituir o Add por AddWithValue.

Exacto foi o que fiz e n deu...=/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

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