Jump to content
dio123

[RESOLVIDO] Cannot convert a char to money

Recommended Posts

dio123

Boa noite,

Estive acertar umas coisas aqui na pap e agora está a surgir um erro, e não estou a ver qual é.

Na base de dados defini precocus e precofinal como dados tipo: money e na form produtos funciona bem, agora fui fazer para  a factura  e  nao funciona.

o erro é :

cannot convert a char to money - the  char value has incorret syntax

 
  Try
            Dim SQL As String = "INSERT INTO itens_factura ([n_factura],[linha], [codinterno],[quantidade],[precounitario], [preco_final]) VALUES (@n_factura,@linha,@codinterno,@quantidade,@precounitario,@preco_final);"

            Dim connection As New SqlConnection(myConnectionString)

            Dim command As New SqlCommand(SQL, connection)
            command.Parameters.Add("@n_factura", SqlDbType.VarChar).Value = txtfactura.Text
            command.Parameters.Add("@linha", SqlDbType.VarChar).Value = txt_linha.Text
            command.Parameters.Add("@codinterno", SqlDbType.VarChar).Value = txtcod_interno.Text
            command.Parameters.Add("@quantidade", SqlDbType.VarChar).Value = txtquantidade.Text
            command.Parameters.Add("@precounitario", SqlDbType.VarChar).Value = FormatCurrency(txtunitario.Text, 2)
            command.Parameters.Add("@preco_final", SqlDbType.VarChar).Value = FormatCurrency(txtfinal.Text, 2)
            connection.Open()

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

Share this post


Link to post
Share on other sites
jpaulino

Estás a definir tudo com SqlDbType.VarChar ... tens de escolher o formato correcto.

Share this post


Link to post
Share on other sites
jpaulino

Qual AND? Não usas AND em lado nenhum.

Mostra lá o que fizeste.

Share this post


Link to post
Share on other sites
dio123

boa noite

Isto é o que tenho na sub.

Na tabela precounitario e  o preco_final está como  money.

  Try
            Dim SQL As String = "INSERT INTO itens_factura ([n_factura],[linha], [codinterno],[quantidade],[precounitario], [preco_final]) VALUES (@n_factura,@linha,@codinterno,@quantidade,@precounitario,@preco_final);"
       

            Dim connection As New SqlConnection(myConnectionString)

            Dim command As New SqlCommand(SQL, connection)
            command.Parameters.Add("@n_factura", SqlDbType.int).Value = txtfactura.Text
            command.Parameters.Add("@linha", SqlDbType.VarChar).Value = txt_linha.Text
            command.Parameters.Add("@codinterno", SqlDbType.VarChar).Value = txtcod_interno.Text
            command.Parameters.Add("@quantidade", SqlDbType.VarChar).Value = txtquantidade.Text
            command.Parameters.Add("@precounitario", SqlDbType.Money).Value = FormatCurrency(txtunitario.Text, 2)
            command.Parameters.Add("@preco_final", SqlDbType.Money).Value = FormatCurrency(txtfinal.Text, 2)
            connection.Open()

            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
           msgbox("funciona")

            End If
            connection.Close()
            connection = Nothing
            command = Nothing

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

Share this post


Link to post
Share on other sites
Caça

Estás a mandar um FormatCurrency num campo que é money, manda apenas o seu valor.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dio123

boa noite,

experimentei sem formatcurrency  e não deu.  Dá o mesmo erro incorrect syntax the keyboard 'and'

Share this post


Link to post
Share on other sites
dio123

o erro dá quando clico no botão para gravar os dados na bd.

depois de correr o código em cima  apaga o datagrid e actualiza com os dados que foram adicionados.

o mais estranho é que fiz "copy past" do registo produtos só que aqui não está a dar.

Share this post


Link to post
Share on other sites
Caça

Qual é a linha onde dá o erro?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dio123

pois a linha que dá erro , é onde vai buscar os dados para colocar no datagrid. o de cima está a funionar.

o erro é nesta:

        Dim reader As SqlDataReader = command.ExecuteReader()

Logo deve ser a string

        Dim SQL As String = "SELECT f.linha,f.codinterno,p.produto,p.detalhe,f.quantidade,p.precocusto,f.preco_final FROM itens_factura as f, produtos as p  where n_factura = " & Me.txtfactura.Text & " and f.codinterno = p.codinterno"

        Dim connection As New SqlConnection(myConnectionString)

        Dim command As New SqlCommand(SQL, connection)
        DataGridView1.Columns.Add("f.linha", "linha")
        DataGridView1.Columns.Add("f.codinterno", "cod_interno")
        DataGridView1.Columns.Add("p.produto", "referencia ")
        DataGridView1.Columns.Add("p.detalhe", "descricao")
        DataGridView1.Columns.Add("f.quantidade", "quantidade")
        DataGridView1.Columns.Add("p.precounitario", "precounitario")
        DataGridView1.Columns.Add("f.final", "preco_final")
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        While reader.Read()
            DataGridView1.Rows.Add(reader.Item("linha"), reader.Item("codinterno"), reader.Item("produto"), reader.Item("detalhe"), reader.Item("quantidade"), reader.Item("precocusto"), reader.Item("preco_final"))
        End While

Share this post


Link to post
Share on other sites
Caça

E o que é que isso tem a haver com o código de inserir? Afinal já está a inserir ou não?


Esse campo n_factura não devia de levar antes um p. ou um f.?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dio123

resolvido a questão.

O problema esta nos dados da bd. apaguei os itens que estava na tabela itens_factura e na tabela factura e ficou logo a funcionar.

Já estava a gravar os dados o que causou algum com sub de mostrar os dados no datagrid.

obrigado pela ajuda

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

×
×
  • Create New...

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.