Jump to content
security

Problema em Insert

Recommended Posts

security

bos,

o codigo abaixo da-me sempre erro na ultima variavel.

essa variavel é para guardar valores monetarios. tenho este codigo num outro programa e ele funciona... 🤔

mas agora nao estou a conseguir resolver o problema.

 For Each Items As ListViewItem In ListView1.Items
            Dim SqlMaterial As String = "INSERT INTO material_de_reparacao (codRepara,material,quantidade,pcp)" & _
                                            "VALUES(@codRepara,@material,@quantidade,@pvp)"
            Dim myCmd As New OleDbCommand(SqlMaterial, coNn)
            myCmd.Parameters.Add("@codRepara", OleDbType.Integer)
            myCmd.Parameters("@codRepara").Value = txtNrRep.Text
            myCmd.Parameters.Add("@material", OleDbType.Integer)
            myCmd.Parameters("@material").Value = Items.SubItems(0).Text
            myCmd.Parameters.Add("@quantidade", OleDbType.Integer)
            myCmd.Parameters("@quantidade").Value = Items.SubItems(1).Text
            myCmd.Parameters.Add("@pvp", OleDbType.Currency)
            myCmd.Parameters("@pvp").Value = Items.SubItems(2).Text
            coNn.Open()
            myCmd.ExecuteNonQuery()
            coNn.Close()
        Next

a listview é assim

With ListView2
                    .Columns.Add("ID", 30, HorizontalAlignment.Right)
                    .Columns.Add("Descrição", 175, HorizontalAlignment.Left)
                    .Columns.Add("Quantidade", 50, HorizontalAlignment.Right)
                    .Columns.Add("P.V.P. (€)", 60, HorizontalAlignment.Right)
                    .FullRowSelect = True
                    .View = View.Details
                End With


"Innovation distinguishes between a leader and a follower." Steve jobs.

Share this post


Link to post
Share on other sites
ribeiro55

1 - Qual é  o erro?

2 - Tens alguma coisa na terceira coluna da listview? O quê?

3 - Qual é o tipo de dados dessa coluna, na base de dados?


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
security

sim estao todas as colunas preenchidas.

o erro é: Não foi possível converter o valor do parâmetro de String para Int32.

ja agora a primeira coluna é = 0?? 🤔    😳


"Innovation distinguishes between a leader and a follower." Steve jobs.

Share this post


Link to post
Share on other sites
ribeiro55

Sim, é zero-index based, o que significa que 0=1, 1=2, 2=3, ...

Usa métodos de debug e avalia o valor de Items.SubItems(2).Text na altura do erro.

Informa-nos desse valor.

Tens de converter a string (que é a devolução da propriedade Text) para um valor decimal, mas para isto queria ver um valor que rebentasse.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
security

Items.SubItems(2).text refere-se a coluna quantidade. na coluna a seguir que é a dos preços(€) se colocar Items.SubItems(3).text da o mesmo erro mas nesta coluna


"Innovation distinguishes between a leader and a follower." Steve jobs.

Share this post


Link to post
Share on other sites
ribeiro55

Eu quero saber o que lá está, não o que é.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
security

é isto que quer?

System.FormatException was unhandled

  Message="Não foi possível converter o valor do parâmetro de String para Int32."

  Source="System.Data"

  StackTrace:

      em System.Data.OleDb.OleDbParameter.CoerceValue(Object value, NativeDBType destinationType)    em System.Data.OleDb.OleDbParameter.BindParameter(Int32 index, Bindings bindings)    em System.Data.OleDb.OleDbCommand.CreateAccessor()    em System.Data.OleDb.OleDbCommand.InitializeCommand(CommandBehavior behavior, Boolean throwifnotsupported)    em System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)    em System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)    em System.Data.OleDb.OleDbCommand.ExecuteNonQuery()    em SIGE.fichaReparacao.btnGravar_Click(Object sender, EventArgs e) em C:\Users\Miguel\Documents\Visual Studio 2008\Projects\SIGE\SIGE\fichaReparacao.vb:line 184    em System.Windows.Forms.Control.OnClick(EventArgs e)    em System.Windows.Forms.Button.OnClick(EventArgs e)    em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)    em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)    em System.Windows.Forms.Control.WndProc(Message& m)    em System.Windows.Forms.ButtonBase.WndProc(Message& m)    em System.Windows.Forms.Button.WndProc(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)    em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)    em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)    em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.RunDialog(Form form)    em System.Windows.Forms.Form.ShowDialog(IWin32Window owner)    em System.Windows.Forms.Form.ShowDialog()    em SIGE.fichaClientes.ListView1_MouseDoubleClick(Object sender, MouseEventArgs e) em C:\Users\Miguel\Documents\Visual Studio 2008\Projects\SIGE\SIGE\fichaClientes.vb:line 80    em System.Windows.Forms.Control.OnMouseDoubleClick(MouseEventArgs e)    em System.Windows.Forms.ListView.WndProc(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)    em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)    em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)    em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.RunDialog(Form form)    em System.Windows.Forms.Form.ShowDialog(IWin32Window owner)    em System.Windows.Forms.Form.ShowDialog()    em SIGE.menu.PesquisaClienteToolStripMenuItem_Click(Object sender, EventArgs e) em C:\Users\Miguel\Documents\Visual Studio 2008\Projects\SIGE\SIGE\menu.vb:line 20    em System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)    em System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)    em System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)    em System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)    em System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)    em System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)    em System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)    em System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)    em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)    em System.Windows.Forms.Control.WndProc(Message& m)    em System.Windows.Forms.ScrollableControl.WndProc(Message& m)    em System.Windows.Forms.ToolStrip.WndProc(Message& m)    em System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)    em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)    em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)    em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)    em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)    em System.Windows.Forms.Application.Run(ApplicationContext context)    em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()    em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()    em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)    em SIGE.My.MyApplication.Main(String[] Args) em 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81    em System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)    em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)    em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()    em System.Threading.ThreadHelper.ThreadStart_Context(Object state)    em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)    em System.Threading.ThreadHelper.ThreadStart()

  InnerException: System.FormatException

      Message="Cadeia de caracteres de entrada com formato incorrecto."

      Source="mscorlib"

      StackTrace:

            em System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)    em System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)    em System.String.System.IConvertible.ToInt32(IFormatProvider provider)    em System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)    em System.Data.OleDb.OleDbParameter.CoerceValue(Object value, NativeDBType destinationType)

      InnerException:


"Innovation distinguishes between a leader and a follower." Steve jobs.

Share this post


Link to post
Share on other sites
security

muito obrigado ja descobri o erro. tinha relamente na base de dados o campo definido como moeda e no codigo tambem. mas havia um que ao copiar para a listview2 convertia a texto mas a guardar guardava como texto e nao. depoisestava em conflito pois tentava guardar text num campo "Integer"


"Innovation distinguishes between a leader and a follower." Steve jobs.

Share this post


Link to post
Share on other sites
ribeiro55

Eu só queria saber o que lá estava... ... que valor lá estava.

Já deste com a incoerência de tipo de dados, é o que interessa :)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.