Jump to content

Problema em Insert


security
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

é 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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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"

Link to comment
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
 Share

×
×
  • 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.