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

Sign in to follow this  
sagedighetto

Erro no registo [Resolvido]

Recommended Posts

sagedighetto

Ao fazer o registo não me regista os dados que insiro mas sim "true" para os varchar e "1" para os int em vez de aparecer os dados..

Sub Query1()

        Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("siuciConnectionString").ConnectionString
        Dim SQl As String = "INSERT INTO principal  ([Nome],[utente],[datanasc],[sexo],[raca],[profissao],[sp],[res],[tel],[prouci],[cama],[datadmi],[classificacao],[prov1],[prov2],[nosologico],[peso],[altura],[sinadmissao1],[sinadmissao2],[sinadmissao3],[medico],[rhosp],[alta],[resul])Values(@Nome,@utente,@datanasc,@sexo,@raca,@profissao,@sp,@res,@tel,@prouci,@cama,@datadmi,@classificacao,@prov1,@prov2,@nosologico,@peso,@altura,@sinadmissao1,@sinadmissao2,@sinadmissao3,@medico,@rhosp,@alta,@resul);"

        Dim connection As New SqlConnection(strConn)

        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = TextBox1.Text = IIf(String.IsNullOrEmpty(TextBox1.Text), "NULL", TextBox1.Text)
        valores.Parameters.Add("@utente", SqlDbType.Int).Value = TextBox2.Text = IIf(String.IsNullOrEmpty(TextBox2.Text), "NULL", TextBox2.Text)
        valores.Parameters.Add("@datanasc", SqlDbType.Int).Value = TextBox3.Text = IIf(String.IsNullOrEmpty(TextBox3.Text), "NULL", TextBox3.Text)
        valores.Parameters.Add("@sexo", SqlDbType.VarChar).Value = DropDownList4.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList4.SelectedValue), "NULL", DropDownList4.SelectedValue)
        valores.Parameters.Add("@raca", SqlDbType.VarChar).Value = DropDownList5.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList5.SelectedValue), "NULL", DropDownList5.SelectedValue)
        valores.Parameters.Add("@profissao", SqlDbType.VarChar).Value = DropDownList6.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList6.SelectedValue), "NULL", DropDownList6.SelectedValue)
        valores.Parameters.Add("@sp", SqlDbType.VarChar).Value = DropDownList7.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList7.SelectedValue), "NULL", DropDownList7.SelectedValue)
        valores.Parameters.Add("@res", SqlDbType.VarChar).Value = TextBox4.Text = IIf(String.IsNullOrEmpty(TextBox4.Text), "NULL", TextBox4.Text)
        valores.Parameters.Add("@tel", SqlDbType.Int).Value = TextBox5.Text = IIf(String.IsNullOrEmpty(TextBox5.Text), "NULL", TextBox5.Text)
        valores.Parameters.Add("@prouci", SqlDbType.Int).Value = TextBox6.Text = IIf(String.IsNullOrEmpty(TextBox6.Text), "NULL", TextBox6.Text)
        valores.Parameters.Add("@cama", SqlDbType.Int).Value = TextBox7.Text = IIf(String.IsNullOrEmpty(TextBox7.Text), "NULL", TextBox7.Text)
        valores.Parameters.Add("@datadmi", SqlDbType.Int).Value = TextBox8.Text = IIf(String.IsNullOrEmpty(TextBox8.Text), "NULL", TextBox8.Text)
        valores.Parameters.Add("@classificacao", SqlDbType.VarChar).Value = DropDownList8.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList8.SelectedValue), "NULL", DropDownList8.SelectedValue)
        valores.Parameters.Add("@prov1", SqlDbType.VarChar).Value = DropDownList9.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList9.SelectedValue), "NULL", DropDownList9.SelectedValue)
        valores.Parameters.Add("@prov2", SqlDbType.VarChar).Value = DropDownList10.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList10.SelectedValue), "NULL", DropDownList10.SelectedValue)
        valores.Parameters.Add("@nosologico", SqlDbType.VarChar).Value = DropDownList11.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList11.SelectedValue), "NULL", DropDownList11.SelectedValue)
        valores.Parameters.Add("@peso", SqlDbType.Int).Value = TextBox9.Text = IIf(String.IsNullOrEmpty(TextBox9.Text), "NULL", TextBox9.Text)
        valores.Parameters.Add("@altura", SqlDbType.Int).Value = TextBox10.Text = IIf(String.IsNullOrEmpty(TextBox10.Text), "NULL", TextBox10.Text)
        valores.Parameters.Add("@sinadmissao1", SqlDbType.VarChar).Value = DropDownList12.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList12.SelectedValue), "NULL", DropDownList12.SelectedValue)
        valores.Parameters.Add("@sinadmissao2", SqlDbType.VarChar).Value = DropDownList13.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList13.SelectedValue), "NULL", DropDownList13.SelectedValue)
        valores.Parameters.Add("@sinadmissao3", SqlDbType.VarChar).Value = DropDownList14.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList14.SelectedValue), "NULL", DropDownList14.SelectedValue)
        valores.Parameters.Add("@medico", SqlDbType.VarChar).Value = DropDownList15.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList15.SelectedValue), "NULL", DropDownList15.SelectedValue)
        valores.Parameters.Add("@rhosp", SqlDbType.VarChar).Value = DropDownList16.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList16.SelectedValue), "NULL", DropDownList16.SelectedValue)
        valores.Parameters.Add("@alta", SqlDbType.VarChar).Value = TextBox14.Text = IIf(String.IsNullOrEmpty(TextBox14.Text), "NULL", TextBox14.Text)
        valores.Parameters.Add("@resul", SqlDbType.VarChar).Value = DropDownList17.SelectedItem.Value = IIf(String.IsNullOrEmpty(DropDownList17.SelectedValue), "NULL", DropDownList17.SelectedValue)

        connection.Open()

        valores.ExecuteNonQuery()


        connection.Close()
        connection = Nothing
        valores = Nothing


    End Sub

Share this post


Link to post
Share on other sites
bioshock

Faz só uma experiência, nesta linha de código:

valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = TextBox1.Text = IIf(String.IsNullOrEmpty(TextBox1.Text), "NULL", TextBox1.Text)

Altera para:

valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = TextBox1.Text

E vê se regista o valor como tu queres.

Share this post


Link to post
Share on other sites
antidzrt

Tou com o mesmo problema que ele mas eu tenho mesmo de deixar os campos vazios nao os preencho todos

abro novo topico?

Share this post


Link to post
Share on other sites
sagedighetto

ao tirar aquilo que disses-te deu-me este erro:

String or binary data would be truncated.

The statement has been terminated.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated.

The statement has been terminated.

Source Error:

Line 114:        connection.Open()

Line 115:

Line 116:        valores.ExecuteNonQuery()Line 117:

Line 118:

Share this post


Link to post
Share on other sites
bioshock

Faz lá antes isto:

Dim X as Integer = valores.ExecuteNonQuery()

If x < 1 then
Messagebox.show("Erro!")
Else
Messagebox.show("Dados inseridos com sucesso!")
End if

Share this post


Link to post
Share on other sites
sagedighetto

eu tive de mudar para msgbox pk messagebox.show da erro não existe isso(eu tenho visual studio 2010)

o erro que dá é:

Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

Source Error:

Line 119:            MsgBox("Erro!")

Line 120:        Else

Line 121:            MsgBox("Dados inseridos com sucesso!")

Line 122:        End If

Line 123:

Share this post


Link to post
Share on other sites
bioshock

Dim strConn As String

        strConn = WebConfigurationManager.ConnectionStrings("siuciConnectionString").ConnectionString

Supostamente, tens isto ligado a onde? É isto que define onde está a tua BD?

Agora que estou a reparar melhor no teu código, tens algumas coisas mal.

Aproveita este código que te deixo aqui como exemplo e mete-o à tua medida. Altera os campos que achares necessários:

Try
            ' Selecciona a Base de dados;
            Dim BaseDeDados As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\BaseDados.mdf';" &  ";Integrated Security=True;User Instance=True"
            ' Insere as informações nas tabelas & campos;
            Dim query As String = "INSERT INTO TabelaQueQueres([NomeCampo1], [NomeCampo2]) VALUES (@nomecampo1, @nomecampo2);"
            ' Cria a connexão com a Base de dados;
            Dim connection As New SqlConnection(BaseDeDados)
            ' Especifica quais as informações a serem digitadas nos campos da base de dados;
            Dim command As New SqlCommand(query, connection)
            command.Parameters.Add("@nomecampo1", OleDbType.VarChar).Value = TextBox1.Text
            command.Parameters.Add("@nomecampo2", OleDbType.VarChar).Value = TextBox2.Text
              ' Abre a connexão;
            connection.Open()
            ' Guarda em X o número de registos inseridos;
            Dim x As Integer = command.ExecuteNonQuery()
            If x < 1 Then
                MessageBox.Show("Falha na inserção de dados, volte a tentar!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                MessageBox.Show("Registo inserido com sucesso!")
            End If
            ' Fecha a ligação e limpa as variáveis 
            connection.Close()
            connection = Nothing
            command = Nothing
        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

Observação: Eu nunca utilizei o VS 2010, mas duvido muito que não traga a Class MessageBox.Show("")

Share this post


Link to post
Share on other sites
sagedighetto

eu defino a minha ligação a bd no web config porque a minha base de dados está em sql

em vs 2010 n existe a classe messagebox.show...

em relação ao teu codigo eu acho que tenho tudo o que tu tens  :cheesygrin:

Share this post


Link to post
Share on other sites
bioshock

Experimenta como eu te disse e troca ali aquela linha:

command.Parameters.Add("@nomecampo1", OleDbType.VarChar).Value = TextBox1.Text

Para:

command.Parameters.Add("@nomecampo1", SqlDbType.VarChar).Value = TextBox1.Text

E vê só se os dados estão a ser registados. Não te esqueças de mudar o caminho à BD se necessário.

Share this post


Link to post
Share on other sites
sagedighetto

OleDbType é para base de dados em access a minha ta em sql nem me deixa escrever OleDbType so deixa OleDb e não server para isto:S

Share this post


Link to post
Share on other sites
sagedighetto

LOL se vires o meu primeiro post eu tenho assim por isso pensei k te tivesses enganado e que tinhas dito para por o oledbtype

valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = TextBox1.Text

Share this post


Link to post
Share on other sites
antidzrt

Boas pessoal

Isto na minha base dados so insere bem a  1º matricula a 1º Marca e o 1ª ano

Se eu quiser meter mais que uma matricula mesmo que eu escreva a matricula ou seleccione uma marca ou um Ano regista na base dados "False" ou "true" e para o  Ano "1" ou "0"

Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("gesviaConnectionString").ConnectionString

        Dim SQl As String = "INSERT INTO Marca ([Marca1],[Marca2],[Marca3],[Marca4],[Marca5],[Marca6],[Marca7],[Marca8],[Marca9],[matricula1],[matricula2],[matricula3],[matricula4],[matricula5],[matricula6],[matricula7],[matricula8],[matricula9],[ano1],[ano2],[ano3],[ano4],[ano5],[ano6],[ano7],[ano8],[ano9])Values(@Marca1,@marca2,@marca3,@marca4,@marca5,@marca6,@marca7,@marca8,@marca9,@matricula1,@matricula2,@matricula3,@matricula4,@matricula5,@matricula6,@matricula7,@matricula8,@matricula9,@ano1,@ano2,@ano3,@ano4,@ano5,@ano6,@ano7,@ano8,@ano9);"

        Dim connection As New SqlConnection(strConn)

        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Marca1", SqlDbType.VarChar).Value = Marca1.SelectedItem.Value
        valores.Parameters.Add("@marca2", SqlDbType.VarChar).Value = Marca3.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca2.SelectedValue), "NULL", Marca2.SelectedValue)
        valores.Parameters.Add("@marca3", SqlDbType.VarChar).Value = Marca3.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca3.SelectedValue), "NULL", Marca3.SelectedValue)
        valores.Parameters.Add("@marca4", SqlDbType.VarChar).Value = Marca4.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca4.SelectedValue), "NULL", Marca4.SelectedValue)
        valores.Parameters.Add("@marca5", SqlDbType.VarChar).Value = Marca5.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca5.SelectedValue), "NULL", Marca5.SelectedValue)
        valores.Parameters.Add("@marca6", SqlDbType.VarChar).Value = Marca6.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca6.SelectedValue), "NULL", Marca6.SelectedValue)
        valores.Parameters.Add("@marca7", SqlDbType.VarChar).Value = Marca7.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca7.SelectedValue), "NULL", Marca7.SelectedValue)
        valores.Parameters.Add("@marca8", SqlDbType.VarChar).Value = Marca8.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca8.SelectedValue), "NULL", Marca8.SelectedValue)
        valores.Parameters.Add("@marca9", SqlDbType.VarChar).Value = Marca9.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca9.SelectedValue), "NULL", Marca9.SelectedValue)
        valores.Parameters.Add("@matricula1", SqlDbType.VarChar).Value = Matricula1.Text
        valores.Parameters.Add("@matricula2", SqlDbType.VarChar).Value = Matricula2.Text = IIf(String.IsNullOrEmpty(Matricula2.Text), "NULL", Matricula2.Text)
        valores.Parameters.Add("@matricula3", SqlDbType.VarChar).Value = Matricula3.Text = IIf(String.IsNullOrEmpty(Matricula3.Text), "NULL", Matricula3.Text)
        valores.Parameters.Add("@matricula4", SqlDbType.VarChar).Value = Matricula4.Text = IIf(String.IsNullOrEmpty(Matricula4.Text), "NULL", Matricula4.Text)
        valores.Parameters.Add("@matricula5", SqlDbType.VarChar).Value = Matricula5.Text = IIf(String.IsNullOrEmpty(Matricula5.Text), "NULL", Matricula5.Text)
        valores.Parameters.Add("@matricula6", SqlDbType.VarChar).Value = matricula6.Text = IIf(String.IsNullOrEmpty(matricula6.Text), "NULL", matricula6.Text)
        valores.Parameters.Add("@matricula7", SqlDbType.VarChar).Value = matricula7.Text = IIf(String.IsNullOrEmpty(matricula7.Text), "NULL", matricula7.Text)
        valores.Parameters.Add("@matricula8", SqlDbType.VarChar).Value = matricula8.Text = IIf(String.IsNullOrEmpty(matricula8.Text), "NULL", matricula8.Text)
        valores.Parameters.Add("@matricula9", SqlDbType.VarChar).Value = matricula9.Text = IIf(String.IsNullOrEmpty(matricula9.Text), "NULL", matricula9.Text)
        valores.Parameters.Add("@Ano1", SqlDbType.Int).Value = Ano1.SelectedItem.Value
        valores.Parameters.Add("@Ano2", SqlDbType.Int).Value = Ano2.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano2.SelectedValue), "NULL", Ano2.SelectedValue)
        valores.Parameters.Add("@Ano3", SqlDbType.Int).Value = Ano3.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano3.SelectedValue), "NULL", Ano3.SelectedValue)
        valores.Parameters.Add("@Ano4", SqlDbType.Int).Value = Ano4.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano4.SelectedValue), "NULL", Ano4.SelectedValue)
        valores.Parameters.Add("@Ano5", SqlDbType.Int).Value = Ano5.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano5.SelectedValue), "NULL", Ano5.SelectedValue)
        valores.Parameters.Add("@Ano6", SqlDbType.Int).Value = Ano6.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano6.SelectedValue), "NULL", Ano6.SelectedValue)
        valores.Parameters.Add("@Ano7", SqlDbType.Int).Value = Ano7.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano7.SelectedValue), "NULL", Ano7.SelectedValue)
        valores.Parameters.Add("@Ano8", SqlDbType.Int).Value = Ano8.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano8.SelectedValue), "NULL", Ano8.SelectedValue)
        valores.Parameters.Add("@Ano9", SqlDbType.Int).Value = Ano9.SelectedItem.Value = IIf(String.IsNullOrEmpty(Ano9.SelectedValue), "NULL", Ano9.SelectedValue)
         connection.Open()

        Dim x As Integer = valores.ExecuteNonQuery()

   
        connection.Close()
        connection = Nothing
        valores = Nothing

Share this post


Link to post
Share on other sites
bioshock

O vosso problema é não lerem com atenção o que vos é dito.

Eu sei que tu tinhas assim, eu é que me enganei, então disse para trocares aquela linha, mas tu nem tão pouco olhaste para o que eu disse.

Os dados estão a ser registados? Basta experimentares com um ou dois campos.

Share this post


Link to post
Share on other sites
sagedighetto

eu percebi...

os dados não estão a ser registados aparece este erro:

String or binary data would be truncated.

The statement has been terminated.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated.

The statement has been terminated.

Source Error:

Line 114:        connection.Open()

Line 115:

Line 116:        valores.ExecuteNonQuery()

Line 117:

Line 118:

Share this post


Link to post
Share on other sites
bioshock

Pelo que percebo, estás a tentar por valores em alguma coluna, maior do que o estipulado por ti.

Algo como: Tens definido o tamanho máximo de 10 e estás a por valores com tamanho maior do que 10.

Share this post


Link to post
Share on other sites
antidzrt

Eu percebo o que me é dito...

o sagedighetto nao precisa do Iff porque não vai deixar campos em branco por isso, agora eu vou.

Se tiro isso nao regista dame erro no input string porque a dropdownlist e a textbox tao em brancos

Share this post


Link to post
Share on other sites
jnetic

@antidzrt

Olha que tens uma gralha nesta linha (Marca3.SelectedItem.Value deve ser Marca2)

        valores.Parameters.Add("@marca2", SqlDbType.VarChar).Value = Marca3.SelectedItem.Value = IIf(String.IsNullOrEmpty(Marca2.SelectedValue), "NULL", Marca2.SelectedValue)

Deixa perguntar-te... porque não fazer a instrução assim:

        valores.Parameters.Add("@marca2", SqlDbType.VarChar).Value = IIf(String.IsNullOrEmpty(Marca2.SelectedValue), "NULL", Marca2.SelectedValue)

Share this post


Link to post
Share on other sites
sagedighetto

sim bioshock ja mudei isso e funcionou em principio ja deve tar tudo bem obrigado :cheesygrin:

Share this post


Link to post
Share on other sites
bioshock

sim bioshock ja mudei isso e funcionou em principio ja deve tar tudo bem obrigado B)

Qualquer coisa apita, não te esqueças de dar o tópico como resolvido!  :cheesygrin:

Share this post


Link to post
Share on other sites
antidzrt

ups devo me ter enganado enquanto apagava

porque da erro no input string

Input string was not in a correct format

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.