注册 登录
编程论坛 VB6论坛

VB如何判断text1中输入同一数值的次数

tonecan2008 发布于 2014-03-12 11:01, 2006 次点击
有VB+EXCEL的小程序,界面及数据库如下图:
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


程序代码如下:
程序代码:
Private Sub Text1_KeyPress(KeyAscii As Integer)
  Dim rst As New Recordset, sql As String, a As String
  If KeyAscii = 13 Then
    a = Trim(Text1)
    If a = "" Then Exit Sub
    sql = "select * from [sheet1$] where " & AName & "='" & a & "'"
    rst.Open sql, con, adOpenDynamic, adLockOptimistic
    If rst.EOF Then
      Label2.ForeColor = vbRed
      Label2.Caption = "错误条码:" & a
      Text1.Text = ""
    Else
      Label2.ForeColor = vbBlack
      Label2.Caption = "正确条码:" & a
      sql = "delete from [sheet1$] where " & AName & "='" & a & "'"
      Text1.Text = ""
    End If
    rst.Close
    KeyAscii = 0
  End If

现在需要加一个功能,如果相同的数据输入了两次(前提是输入进去的数据显示“正确条码”)系统能不能提示这个条码已经输入了2次?
12 回复
#2
owenlu19812014-03-12 12:41
改下SQL即可
sql = "select Count(*) as [Qty] from [sheet1$] where " & AName & "='" & a & "'"
rst.fields("Qty") 即为次数
#3
lowxiong2014-03-12 13:24
楼主的意思好像是判断是否重复扫描相同的条码,简单方法是:只要数据不是特别大,可以字符串叠加即可,代码如下(红色部分代码为增加的代码):

dim repeatT as string
Private Sub Text1_KeyPress(KeyAscii As Integer)
  Dim rst As New Recordset, sql As String, a As String
  If KeyAscii = 13 Then
    a = Trim(Text1)
    If a = "" Then Exit Sub
    if instr(1,repeatT,a )>0 then
      msgbox "条码" & a & "重复,是正确条码"
      exit sub
    end if
    sql = "select * from [sheet1$] where " & AName & "='" & a & "'"
    rst.Open sql, con, adOpenDynamic, adLockOptimistic
    If rst.EOF Then
      Label2.ForeColor = vbRed
      Label2.Caption = "错误条码:" & a
      Text1.Text = ""
    Else
      Label2.ForeColor = vbBlack
      Label2.Caption = "正确条码:" & a
      sql = "delete from [sheet1$] where " & AName & "='" & a & "'"      '这一句莫名其妙,该sql是删除正确条码,并且没执行
      repeatT =repeatT  & a
      Text1.Text = ""
    End If
    rst.Close
    KeyAscii = 0
  End If

#4
tonecan20082014-03-12 13:36
回复 3楼 lowxiong
恩,本来最开始我是想核对一个条码就删除一个,这样就可以达到没有重复条码的目的.
#5
tonecan20082014-03-12 13:50
回复 3楼 lowxiong
我加了这些代码进去,好像没有反应。我还有一个疑问,假如我有10000个条码需要扫描,相同的条码只能重复扫描两次(产品上会贴2个条码)。如果我上午只扫了5000个,剩下的5000个下午扫,中午的时候电脑会关机,这样会影响到下次开软件是的计数吧? 我的想法是每扫一个条码就在Excel里把条码上加一个注释,当注释的内容是“2”时,提示已经扫了2次,不知道怎么实现。哎\!
#6
owenlu19812014-03-12 14:19
看你的代码,如果数据正确,要从Excel中删除,那么这个计数用意是?
(当第一次输入后,该条码就被删除了,第二次输入时就提示该条码错误了)
#7
tonecan20082014-03-12 16:59
回复 6楼 owenlu1981
刚开始的时候没说要扫描两次,后来告诉我一个产品是贴两个相同的条码,所以删除的办法行不通。 做这个程序的目的就是为了防止 一批货里出现两个相同条码的产品, 还有就是看扫出来的条码是不是这一批货的。
#8
风吹过b2014-03-12 21:00
Excel 就是烦。

刚试了一下,SQL 查询没问题,更新就出问题了。真是好郁闷。这一块我最不熟悉了。

想一下,换个功能来做吧。

程序提供一个功能,用来导入 EXCEL 文件里的 数据,保存到 MDB 里。
如果导入的 数据在 MDB 里已存在,记录一下,导入结束时提示该 条形码已存在,如果已扫,就提示该条形码已使用。
然后 每次读写都是到 MDB 里,扫一个,查MDB ,然后更新 标志位。

-----------------
前面提供的程序,EXCEL 版本是 14 的,工程我执行报错。这机子没装ACCESS,无法打开。
VISDATA 提示 不可识别的数据库。
无法 …………………
#9
风吹过b2014-03-12 21:13
还有种方法,就是 按3楼的方法。
把扫过了的数据保存到一个文件里,这个文件可以使用 TXT 也可以使用 MDB (建议)。
记录数据和 时间。
每次扫描后,都查询一下这个文件,是否使用过了。

--------------------
最终发现是下载的 VB6 有问题。原来的安装文件硬盘损坏时丢失了。
郁闷之极。
#10
owenlu19812014-03-12 21:47
只有本站会员才能查看附件,请 登录

直接用VB+ACCESS,先将EXCEL中序列号导入ACCESS中(密码为123)
然后执行EXE即可
#11
owenlu19812014-03-12 21:51
回复 8楼 风吹过b

可以不用SQL语句,一个笨方法 (比较耗时)
VB直接打开EXCEL,用循环语句查找序列号
 如有,序列号正确,查找次数+1(再判断查找次数是否>1)
 如没有,序列号错误
#12
lowxiong2014-03-12 23:03
在excel加了个扫描次数,可统计扫描次数,你自己可加个对扫描次数一次性清零的按钮,这样方便再次扫描下一批货物
只有本站会员才能查看附件,请 登录
#13
tonecan20082014-03-14 15:10
谢谢大家的帮助,问题已经解决了、
1