joel22rm Posted June 5, 2009 at 11:47 AM Report #270123 Posted June 5, 2009 at 11:47 AM 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 😁
M6 Posted June 5, 2009 at 01:43 PM Report #270166 Posted June 5, 2009 at 01:43 PM Podes usar uma máscara ou então apanhas o evento de key down e só deixas passar algarismos. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
joel22rm Posted June 5, 2009 at 02:11 PM Author Report #270181 Posted June 5, 2009 at 02:11 PM 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 ?
joel22rm Posted June 5, 2009 at 03:24 PM Author Report #270213 Posted June 5, 2009 at 03:24 PM 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 ?
amiloM1425 Posted June 5, 2009 at 03:29 PM Report #270216 Posted June 5, 2009 at 03:29 PM 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;
amiloM1425 Posted June 5, 2009 at 03:31 PM Report #270217 Posted June 5, 2009 at 03:31 PM 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)
joel22rm Posted June 5, 2009 at 03:33 PM Author Report #270219 Posted June 5, 2009 at 03:33 PM 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 ?
amiloM1425 Posted June 5, 2009 at 03:39 PM Report #270222 Posted June 5, 2009 at 03:39 PM 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.
joel22rm Posted June 5, 2009 at 03:40 PM Author Report #270223 Posted June 5, 2009 at 03:40 PM 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.
joel22rm Posted June 5, 2009 at 03:44 PM Author Report #270224 Posted June 5, 2009 at 03:44 PM 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.
amiloM1425 Posted June 5, 2009 at 03:46 PM Report #270225 Posted June 5, 2009 at 03:46 PM 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?
joel22rm Posted June 5, 2009 at 03:47 PM Author Report #270226 Posted June 5, 2009 at 03:47 PM podes mostrar a query que está a dar problemas? if (comInsSocio.ExecuteNonQuery() = 1) messagembox........
amiloM1425 Posted June 5, 2009 at 03:51 PM Report #270228 Posted June 5, 2009 at 03:51 PM 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.
joel22rm Posted June 5, 2009 at 03:57 PM Author Report #270231 Posted June 5, 2009 at 03:57 PM 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();
amiloM1425 Posted June 5, 2009 at 04:06 PM Report #270232 Posted June 5, 2009 at 04:06 PM 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);
joel22rm Posted June 5, 2009 at 04:12 PM Author Report #270236 Posted June 5, 2009 at 04:12 PM 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; ?
amiloM1425 Posted June 5, 2009 at 04:15 PM Report #270237 Posted June 5, 2009 at 04:15 PM Sim aí. Substituir o Add por AddWithValue.
amiloM1425 Posted June 5, 2009 at 04:16 PM Report #270238 Posted June 5, 2009 at 04:16 PM Já agora, o teu campo telefone é do tipo String?
joel22rm Posted June 5, 2009 at 04:16 PM Author Report #270240 Posted June 5, 2009 at 04:16 PM Sim aí. Substituir o Add por AddWithValue. Exacto foi o que fiz e n deu...=/
joel22rm Posted June 5, 2009 at 04:19 PM Author Report #270243 Posted June 5, 2009 at 04:19 PM Já agora, o teu campo telefone é do tipo String? sim é. mas mesmo que n fosse tambem já utilizei o ToString() e não consegui.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now