输入商品信息怎样添加库存,代码如下,看看哪里错了
'更新当前的记录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