注册 登录
编程论坛 VB6论坛

我想用vb做个商品折损模块,如图

t469116416 发布于 2014-01-27 15:48, 837 次点击
只有本站会员才能查看附件,请 登录

把折损的数量输入后,首先把这个折损单写入折损表,然后查询折损的商品编号,在库存表中减去折损的数量,并显示在每个表的datagrid上。
程序代码:

Private Sub Command1_Click() '确定添加按钮
Dim cn As New ADODB.Connection
Dim rss As New ADODB.Recordset
Dim rsss As New ADODB.Recordset
rsss.CursorLocation = adUseClient
ConnectionString = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=csjxcglxt;Data Source=TANGJIANQIAO-PC"
cn.Open ConnectionString
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Or Text5.Text = "" Or Text6.Text = "" Or Text7.Text = "" Then
MsgBox "输入信息不完全,请重新输入", , "提示"
Exit Sub
Else
rss.Open "select * from 商品库存表 where  商品编号 = str(" & Text1.Text & ")", cn, adOpenKeyset, adLockOptimistic

rsss.Open "select * from 商品折损表 ", cn, adOpenDynamic, adLockBatchOptimistic
rsss.AddNew
rsss.Fields("折损单编号") = Text1.Text
rsss.Fields("折损商品编号") = Text2.Text
rsss.Fields("折损商品名称") = Text3.Text
rsss.Fields("数量") = Text4.Text
rsss.Fields("折损原因") = Text6.Text
rsss.Fields("日期") = Text7.Text
rsss.Fields("金额") = Text5.Text
rsss.Update

rss!商品库存量 = rss!商品库存量 - Val(Text4.Text)
rss.Update
MsgBox "已添加"
End If

spzsglck.Adodc1.Refresh '表格马上更新
Set spzsglck.DataGrid1.DataSource = spzsglck.Adodc1
spzsglck.DataGrid1.Refresh
spzsglck.Show
Unload Me
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Text6.Text = "过期"
Text7.Text = Date

End Sub
13 回复
#2
t4691164162014-01-27 15:51
现在是所有的功能不能实现,不能添加,而且不能修改库存量,每次运行显示如下图的错误
只有本站会员才能查看附件,请 登录

rss!商品库存量 = rss!商品库存量 - Val(Text4.Text)错误在这句上
#3
vbvcr512014-01-27 19:11
说明没有此记录啊。那你要错误处理啊,弹出一个提示框,给用户什么提示。发站内信可以互聊。
其实编个信息管理软件不是很难(技术上不成问题的),主要是做到面面俱到。比如查询记录了,是产生什么效果,但查不到记录,你也要编好代码,给出一个什么效果。软件本身不会思考的,都需要编程人员都处理好。要面面俱到,所以花费的时间很长了。编个软件就不容易了。

[ 本帖最后由 vbvcr51 于 2014-1-27 19:15 编辑 ]
#4
t4691164162014-01-27 20:46
回复 3楼 vbvcr51
大神能不能给个解决的方案啊,我vb学的不好,
#5
lowxiong2014-01-27 22:42
在语句rss.Open "select * from 商品库存表 where  商品编号 = str(" & Text1.Text & ")", cn, adOpenKeyset, adLockOptimistic后面加两个判断即可,代码如下:
if rss.eof then
  msgbox "库存里没有该商品记录,无法进行折损操作"
  rss.close
  exit sub
else
  if rss!商品库存量<val(text4) then
    msgbox "折损数量不可能大于库存数量,请重新输入折损数"
    text4.setfocus
    rss.close
    exit sub
  endif
endif
#6
t4691164162014-01-28 13:46
回复 5楼 lowxiong
大神,一直显示没有商品记录,怎么办
#7
t4691164162014-01-28 14:19
呵呵我错了大神们,我把文本框的编号搞错了!呵呵,大神们为什么折损表中没有添加的记录啊 ?
#8
lowxiong2014-01-28 15:30
商品编号不要用文本框,用combobox控件,这样可确保选择有库存的商品,代码如下(用combo1替换text2):
rss.open "select 商品编号 from 商品库存表 where sum(商品库存量)>0 group by 商品编号 order by 商品编号", cn, adOpenKeyset, adLockOptimistic
combo1.clear
while not rss.eof
  combo1.additem rss.fields("商品编号")
  rss.movenext
wend
rss.close
'如此一来,combo1里就是有库存的商品编号了,你就不会人为输入商品编号出现错误,只需选择combo1的下拉表的数据即可,这段代码加到form_load事件中

[ 本帖最后由 lowxiong 于 2014-1-28 15:31 编辑 ]
#9
t4691164162014-01-28 17:19
回复 8楼 lowxiong
好的谢谢大神,但是我现在的代码没有添加到商品折损表中也就是rsss没有添加成功
#10
lowxiong2014-01-28 19:23
从代码上看没什么问题,尤其没有错误提示,说明已经添加了新记录,你可以直接用企业管理器查看,记得每更新一次刷新一下。你可以在rsss.Update后面加入如下代码调试,如果提示的数据在增加说明添加成功,否则失败(不能用RecordCount方法,很多时候不准):
dim i as integer
i=0
if not (rsss.eof and not rsss.bof) then
  rsss.movefirst
  while not rsss.eof
    i=i+1
    rsss.movenext
  wend
endif
msgbox "折损现在有" & i & "条记录"
 
#11
t4691164162014-01-28 20:24
回复 10楼 lowxiong
只有1个记录,没有增加,添加不成功,有点完蛋了完全看不懂啦
#12
lowxiong2014-01-28 21:02
耐心调试吧,只要方法正确,没有解决不了的问题。
我当初做数据库时,没有任何人指导,也碰到过很多问题,但没有一个问题不能解决。
再就是你既然已经使用代码操作数据库了,为什么还要用adodc控件呢?
#13
t4691164162014-01-28 21:35
回复 12楼 lowxiong
因为我是新手,很新的那种,所以不知道哪些要哪些不要,所以就全写上了先。
#14
wksina20092014-02-04 10:09
学习了 ..............
1