carlos_j Posted April 1, 2013 at 02:13 PM Report #501081 Posted April 1, 2013 at 02:13 PM Estou aqui a desenvolver um pequeno programa, mas estou com um problema ao tentar inserir dados numa tabela do SQL Server. O erro que me dá é o seguinte: O código que tenho é o seguinte: query = "Insert Into fornecedores (nome, endereco, cidade, cod_postal, telefone, mail) Values (@nome, @endereco, @cidade, @cod_postal, @telefone, @mail)" Dim conect As New SqlConnection(conectString) Dim comando As New SqlCommand(query, conect) comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = txtNome.Text comando.Parameters.Add("@endereco", SqlDbType.VarChar).Value = txtMorada.Text comando.Parameters.Add("@cidade", SqlDbType.NChar).Value = txtCidade.Text comando.Parameters.Add("@cod_postal", SqlDbType.NChar).Value = txtCPostal.Text comando.Parameters.Add("@telefone", SqlDbType.TinyInt).Value = txtTelefone.Text comando.Parameters.Add("@mail", SqlDbType.VarChar).Value = txtEmail.Text conect.Open() Dim x As Integer = comando.ExecuteNonQuery() If x < 1 Then MsgBox("A operação não inseriu nenhum valor") Else MsgBox("Operação efectuada com sucesso") End If conect.Close() conect = Nothing comando = Nothing Agradecia que alguém me pudesse ajudar.
NunoDinis Posted April 1, 2013 at 03:38 PM Report #501088 Posted April 1, 2013 at 03:38 PM O tipo de dados que estás a passar correspondem aos tipos de dados que tens na BD ? Nos campos númericos altera para: val(caixadetexto.text) Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
carlos_j Posted April 1, 2013 at 06:26 PM Author Report #501111 Posted April 1, 2013 at 06:26 PM Os tipos de dados são exactamente iguais aos que tenho na base de dados, mas não funciona.
jpaulino Posted April 1, 2013 at 07:45 PM Report #501124 Posted April 1, 2013 at 07:45 PM O telefone para ti pode apenas suportar números de 0 a 255? É que TinyInt só permite isso. http://msdn.microsoft.com/en-us/library/ms187745.aspx
carlos_j Posted April 1, 2013 at 08:45 PM Author Report #501141 Posted April 1, 2013 at 08:45 PM (edited) Penso que não deve haver um número de telefone com mais de 255 caracteres, ou estou a entender mal o significado do TinyInt? Mas será daí que vem o erro? Edited April 1, 2013 at 08:54 PM by carlos_j
Solution thoga31 Posted April 1, 2013 at 09:02 PM Solution Report #501148 Posted April 1, 2013 at 09:02 PM (edited) Não estás a entender o significado. Um TinyInt é um número inteiro muito pequeno que ocupa 8 bits. Ou seja, representa apenas um número entre 0 e 255. NÃO são 255 caracteres! Um número de telefone tem 9 dígitos, o que necessita de um Int32 - isto tendo em conta os tipos de dados numéricos inteiros: o Int16 só permite até 65535 (5 dígitos), e o Int32 já vai até 4294967295 (10 dígitos). Uma alternativa é ter o número numa String que é analisada antes de ser inserida na base de dados de forma a confirmar se está num formato aceite: só dígitos, e se forem só números portugueses, só 9 dígitos, ou então 9+5 (para o 00351) ou 9+4 (para o +351, em que neste caso o "+" seria aceite e apenas como 1º caracter). Mas isto já se torna uma escolha tua. Edited April 1, 2013 at 09:04 PM by thoga31 Knowledge is free!
jpaulino Posted April 1, 2013 at 09:04 PM Report #501149 Posted April 1, 2013 at 09:04 PM Penso que não deve haver um número de telefone com mais de 255 caracteres, ou estou a entender mal o significado do TinyInt? Mas será daí que vem o erro? Não é mais de 255 caracteres mas sim um numero de 0 a 255, ou seja, só consegues guardar na base de dados 3 números. Exemplo 2, 45, 123 mas o 256 já não dá.
carlos_j Posted April 1, 2013 at 09:10 PM Author Report #501151 Posted April 1, 2013 at 09:10 PM Eu estava a entender que poderia guardar um campo numérico de 0 a 255 carateres. Então é por isso que me dá erro, já que estou a tentar inserir um número maior do que o campo consegue guardar. Muito obrigado pela ajuda.
thoga31 Posted April 1, 2013 at 09:13 PM Report #501153 Posted April 1, 2013 at 09:13 PM Atenção: caracteres é uma coisa, dado numérico é outra. Aconselho-te a reveres bem estes conceitos. Knowledge is free!
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