当前位置:编程学习 > C#/ASP.NET >>

输入商品信息怎样添加库存,代码如下,看看哪里错了

    '更新当前的记录
    Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click

        '由控件中取各个参数
        Dim no As String = Me.lbNo.Text.Trim()
        Dim Name As String = Me.tbName.Text.Trim()
        Dim Sort As String = Me.GetSortNo(Me.cbSort.Text.Trim()).Trim()
        Dim Fac As String = Me.GetFacNo(Me.cbFac.Text.Trim()).Trim()
        Dim Type As String = Me.tbType.Text.Trim()
        Dim Price As String = Me.tbPrice.Text.Trim()
        Dim Currency As String = Me.cbCurrency.Text.Trim()
        Dim Remark As String = Me.tbRemark.Text.Trim()
        Dim mNo As Int16 = Me.GetMaxSortNo()
        '如果用户选择了修改,并且编号为空,那么进行相应的提示
        If Me.rbMod.Checked And no = String.Empty Then
            MessageBox.Show("请选择一行进行修改")
            Return
        End If

        If Name = String.Empty Then
            MessageBox.Show("商品名称不能为空")
            Me.tbName.Focus()
            Return
        End If

        If Sort = String.Empty Then
            MessageBox.Show("商品类别不能为空")
            Me.cbSort.Focus()
            Return
        End If

        If Fac = String.Empty Then
            MessageBox.Show("厂商不能为空")
            Me.cbFac.Focus()
            Return
        End If

        If Type = String.Empty Then
            MessageBox.Show("型号不能为空")
            Me.tbType.Focus()
            Return
        End If

        If Price = String.Empty Then
            MessageBox.Show("价格不能为空")
            Me.tbPrice.Focus()
            Return
        End If

        Try
            Decimal.Parse(Price)
        Catch
            MessageBox.Show("价格格式必须为数字")
            Return
        End Try

        If Currency = String.Empty Then
            MessageBox.Show("货币不能为空")
            Me.cbCurrency.Focus()
            Return
        End If

        Currency = Me.GetCurrencyNo(Currency.Trim())
        '当取得所有参数并完成所有判断后,生成相应的更新语句
        Dim Sql_Add As String = "INSERT INTO CATEGORY (CATEGORYNAME, SORT, FACTORY, TYPE, PRICE, CURRENCY, REMARK) VALUES('" + Name + "'," + Sort + "," + Fac + ",'" + Type + "'," + Price + "," + Currency + ",'" + Remark + "')"
        Dim Sql_Mod As String = "UPDATE CATEGORY SET CATEGORYNAME = '" + Name + "', SORT=" + Sort + ", FACTORY=" + Fac + ", TYPE='" + Type + "', PRICE=" + Price + ", CURRENCY=" + Currency + ", REMARK='" + Remark + "' WHERE CATEGORYNO = '" + no + "'"
        '实例SqlCommand根据生成的SQL语句,进行更新操作
        Dim SqlCmd As New SqlCommand
        SqlCmd.Connection = Sample02.SqlCon
   
        Try
            Sample02.SqlCon.Open()

            If Me.rbAdd.Checked Then
                SqlCmd.CommandText = Sql_Add
            Else
                SqlCmd.CommandText = Sql_Mod
            End If

            SqlCmd.ExecuteNonQuery()

            '在完成增加的同时,需要在库存的表中增加一条相应的记录
            '由于在数据库表中,已经将库存数量设置为默认0,那么,增加的时候只需要增加商品的编号即可
            If Me.rbAdd.Checked And mNo <> -1 Then
                SqlCmd.CommandText = "INSERT INTO STORE (CATEGORYNO) VALUES(" + mNo.ToString().Trim() + ")"
                SqlCmd.ExecuteNonQuery()
            End If            MessageBox.Show(Me.btOK.Text.Trim() + "成功")

            Me.BindDg()
            Me.SetDefault()

        Catch ex As Exception
            Sample02.WriteErr(ex)
            MessageBox.Show(Me.btOK.Text.Trim() + "失败")
        Finally
            Sample02.SqlCon.Close()
        End Try
    End Sub --------------------编程问答-------------------- 错误提示是什么?
SQL语句尽量别合成,容易出现错误,最好使用存储过程再次使用参数。
 Dim Sql_Add As String = _
        "INSERT INTO CATEGORY (CATEGORYNAME, SORT, FACTORY, TYPE,  PRICE, CURRENCY, REMARK) VALUES(@CATEGORYNAME, @SORT, @FACTORY, @TYPE,  @PRICE, @CURRENCY, @REMARK)"
        Dim Sql_Mod As String = _
        "UPDATE CATEGORY SET CATEGORYNAME = @Name,SORT= @Sort,FACTORY=@Fac,TYPE= @Type,PRICE=@Price,CURRENCY=@Currency  REMARK= @Remark  WHERE CATEGORYNO = @no "
        '实例SqlCommand根据生成的SQL语句,进行更新操作 
        Dim SqlCmd As New Data.SqlClient.SqlCommand
        SqlCmd.Connection = Sample02.SqlCon
        SqlCmd.Parameters.Add("@CATEGORYNAME", SqlDbType.VarChar).Value = Name
..... --------------------编程问答-------------------- 红色那一句不是很明,这里有没有错
我是做着一个进销存系统,
增加一个商品时,库存里不能相应的增加,中间的数据库出了问题,请问怎样修改阿
库存的数据表有 categoryno(商品编号) goodscount(数量)
商品的数据表有categoryno categoryname sort(类别编号) factory type price currency remark --------------------编程问答-------------------- 没有错误提示阿,只是不能符合我的操作要求 --------------------编程问答-------------------- 'load事件中,要对各个控件进行初始化
    Private Sub GoodsForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '初始绑定显示信息
        Me.BindDg()

        '得到厂商信息和类别信息
        Dim dt_Fac As DataTable = Sample02.GetDataTable("SELECT FACTORYNAME FROM FACTORY ORDER BY FACTORYNAME")
        Dim dt_Sort As DataTable = Sample02.GetDataTable("SELECT SORTNAME FROM SORT ORDER BY SORTNAME")

        '添加厂商名称以及类别名称到相应的下拉框中
        For Each dr As DataRow In dt_Fac.Rows
            Me.cbFac.Items.Add(dr(0))
        Next

        For Each dr As DataRow In dt_Sort.Rows
            Me.cbSort.Items.Add(dr(0))
        Next

        Me.cbFac.Text = String.Empty
        Me.cbSort.Text = String.Empty

    End Sub
    '响应用户的修改请求
    Private Sub eItemMod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles eItemMod.Click

        Try

            '取得当前用户选定的行编号
            Dim Row As Int16 = Me.dgGoods.CurrentCell.RowNumber

            '根据选定行的内容,自动填充下面的控件,简化用户的操作
            Dim Price_New As String = Me.dgGoods.Item(Row, 5)
            Dim Price As String = Price_New.Substring(0, Price_New.LastIndexOf("."c) + 3)
            Dim Currency As String = Price_New.Substring(Price_New.LastIndexOf("."c) + 3)

            Me.lbNo.Text = Me.dgGoods.Item(Row, 0)
            Me.tbName.Text = Me.dgGoods.Item(Row, 1)
            Me.cbSort.Text = Me.dgGoods.Item(Row, 2)
            Me.cbFac.Text = Me.dgGoods.Item(Row, 3)
            Me.tbType.Text = Me.dgGoods.Item(Row, 4)
            Me.tbPrice.Text = Price
            Me.cbCurrency.Text = Currency
            '需要判断是否为定,如果为空,直接转化为字符串将会出错
            If Me.dgGoods.Item(Row, 6) Is System.DBNull.Value Then
                Me.tbRemark.Text = String.Empty
            Else
                Me.tbRemark.Text = Me.dgGoods.Item(Row, 6)
            End If

            Me.rbMod.Checked = True

        Catch ex As Exception

            Sample02.WriteErr(ex)

        End Try

    End Sub
    '更新当前的记录
    Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click

        '由控件中取各个参数
        Dim no As String = Me.lbNo.Text.Trim()
        Dim Name As String = Me.tbName.Text.Trim()
        Dim Sort As String = Me.GetSortNo(Me.cbSort.Text.Trim()).Trim()
        Dim Fac As String = Me.GetFacNo(Me.cbFac.Text.Trim()).Trim()
        Dim Type As String = Me.tbType.Text.Trim()
        Dim Price As String = Me.tbPrice.Text.Trim()
        Dim Currency As String = Me.cbCurrency.Text.Trim()
        Dim Remark As String = Me.tbRemark.Text.Trim()
        Dim mNo As Int16 = Me.GetMaxSortNo()
        '如果用户选择了修改,并且编号为空,那么进行相应的提示
        If Me.rbMod.Checked And no = String.Empty Then
            MessageBox.Show("请选择一行进行修改")
            Return
        End If

        If Name = String.Empty Then
            MessageBox.Show("商品名称不能为空")
            Me.tbName.Focus()
            Return
        End If

        If Sort = String.Empty Then
            MessageBox.Show("商品类别不能为空")
            Me.cbSort.Focus()
            Return
        End If

        If Fac = String.Empty Then
            MessageBox.Show("厂商不能为空")
            Me.cbFac.Focus()
            Return
        End If

        If Type = String.Empty Then
            MessageBox.Show("型号不能为空")
            Me.tbType.Focus()
            Return
        End If

        If Price = String.Empty Then
            MessageBox.Show("价格不能为空")
            Me.tbPrice.Focus()
            Return
        End If

        Try
            Decimal.Parse(Price)
        Catch
            MessageBox.Show("价格格式必须为数字")
            Return
        End Try

        If Currency = String.Empty Then
            MessageBox.Show("货币不能为空")
            Me.cbCurrency.Focus()
            Return
        End If

        Currency = Me.GetCurrencyNo(Currency.Trim())
        '当取得所有参数并完成所有判断后,生成相应的更新语句
        Dim Sql_Add As String = "INSERT INTO CATEGORY (CATEGORYNAME, SORT, FACTORY, TYPE, PRICE, CURRENCY, REMARK) VALUES('" + Name + "'," + Sort + "," + Fac + ",'" + Type + "'," + Price + "," + Currency + ",'" + Remark + "')"
        Dim Sql_Mod As String = "UPDATE CATEGORY SET CATEGORYNAME = '" + Name + "', SORT=" + Sort + ", FACTORY=" + Fac + ", TYPE='" + Type + "', PRICE=" + Price + ", CURRENCY=" + Currency + ", REMARK='" + Remark + "' WHERE CATEGORYNO = '" + no + "'"
        '实例SqlCommand根据生成的SQL语句,进行更新操作
        Dim SqlCmd As New SqlCommand
        SqlCmd.Connection = Sample02.SqlCon
   
        Try
            Sample02.SqlCon.Open()

            If Me.rbAdd.Checked Then
                SqlCmd.CommandText = Sql_Add
            Else
                SqlCmd.CommandText = Sql_Mod
            End If

            SqlCmd.ExecuteNonQuery()

            '在完成增加的同时,需要在库存的表中增加一条相应的记录
            '由于在数据库表中,已经将库存数量设置为默认0,那么,增加的时候只需要增加商品的编号即可
            If Me.rbAdd.Checked And mNo <> -1 Then
                SqlCmd.CommandText = "INSERT INTO STORE (CATEGORYNO) VALUES(" + mNo.ToString().Trim() + ")"
                SqlCmd.ExecuteNonQuery()
            End If

            MessageBox.Show(Me.btOK.Text.Trim() + "成功")

            Me.BindDg()
            Me.SetDefault()

        Catch ex As Exception
            Sample02.WriteErr(ex)
            MessageBox.Show(Me.btOK.Text.Trim() + "失败")
        Finally
            Sample02.SqlCon.Close()
        End Try
    End Sub
   
--------------------编程问答-------------------- 我不知道你的代码什么问题,但我看了一下
增加一个商品,是什么意思,入库?还是指新增了一个商品资料?



1。从程序的角度来说,如果是入库,那就应该用事务,入库是新增一条记录,更新库存也是要同时
如果这两处有一处错误,那就要回滚,不能说入库成功,增加库存失败。

2。从业务的角度来说,
--- '由于在数据库表中,已经将库存数量设置为默认0,那么,增加的时候只需要增加商品的编号即可 
"INSERT INTO STORE (CATEGORYNO) VALUES(" + mNo.ToString().Trim() + ")" --
你这句话我没看明白,你的这个STORE这个表结构是什么样? --------------------编程问答-------------------- LZ仔细CHECK你的INSERT语句,十个程序员九个不可能一次写对的.
主要是VALUES中各个参数的值类型,字符型要'',数字型不需要(罗唆了) --------------------编程问答-------------------- 抽象好模型(功能需求),该功能使用一个存储过程即可解决。 --------------------编程问答-------------------- 6楼的说得对。你的代码没有提示那里错吗?八成是是SQL语句里面有的数据有问题。 --------------------编程问答-------------------- 楼主的意思不太明白 --------------------编程问答-------------------- 我是做一个进销存的系统
当我把商品入库后,库存查询只有3个商品,不管我入库了多少商品的
不知哪里错了,系统没有提示错误,可以运行,就是达不到效果
库存store的数据表有 categoryno(商品编号) goodscount(数量)
入库的表是innote(inno indate category incount handler remark) --------------------编程问答-------------------- 那就是你插入库存的那个语句没有正确的运行。
有时候运行SQL语句,运行后没有提示出错。但影响的行数为0。 --------------------编程问答-------------------- 怎么插入数据那没错误提示?
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,