由于公司需要用小键盘(如银行输密码那种)记录产品报废信息,由于键位太少,判断的东西又多,所以一些问题想问下大家.    1)比如生产了一个气孔,我输入012,(因为1开头有另外一些功能设置).012中的0代表是产品不合格,12代表不合格内容是气孔.我想问下这样的VB6中如何来判断呢?因为在书中只记载单个键的askII码表.    2)我希望的是在我按下012之后,数据库中的不良品信息表记录下不良品发生的时间(就是按下时的电脑时间)和不良品内容(气孔),并且给予声音提示.(为了防止误操作,在按下012后按下ENTER确认才正式输入该信息),应该如何实现呢?希望能给出详细点的操作步骤,非常感谢~~~

解决方案 »

  1.   

    Private Sub Text1_KeyPress(KeyAscii As Integer)
       If KeyAscii = 13 Then  '判断是否按了Enter键
          Case Mid(Text1.Text, 2)
             Case 12
                '现在不良是气孔‘
                  '不良时间是 Now
                '播放声音
              case 13
               '.....
          End Select
       
       End If
    End Sub
      

  2.   

    额~谢谢雪情的程序~关于程序有一点不明白.弱弱的问一句Case Mid(Text1.Text, 2)中的MID是什么意思呢..我是VB菜鸟...
    ..我的要求是先按012再按ENTER,程序里是不是先按ENTER了在用CASE......额~~如果MID是采集ENTER前面的数据,那就完美了..还有个问题就是当我输入101时(比如1开头代表异常,01代表质量异常,我一样要记录异常内容和异常发生时间,后面可能还会有2,3,4...用CASE来判断可以吗?)有点懂了~~~大家继续发言哈~
      

  3.   

    Private Sub Text1_KeyPress(KeyAscii As Integer)
       If KeyAscii = 13 Then  '判断是否按了Enter键
            If Left(Text1.Text, 1) <> "0" Then
                '合格品另外处理
                'Exit Sub
            Else
                Select Case Mid(Text1.Text, 2, 2)
                    Case "12"
                        MsgBox "报废密码键盘"
                    Case "34"
                        MsgBox "报废打印机"
                    Case Else
                        MsgBox "其它废品"
                End Select
                '记录数据
                'Text1.Text = ""
            End If
       End If
    End Sub
      

  4.   


    1. mid 是一个取子串方法.Function Mid(String, Start As Long, [Length])
        VBA.Strings 的成员
        从一个字符串中返回指定数目的字符示例:
      mid("fvflove",2,3)  ',取得"fvflove" 的第二个字符开始的.一共三个字符.  结果是: vfl  mid("fvflove",3  ',取得"fvflove" 的第三个字符开始的后面所有字符  结果是 flove
    ...额~~如果MID是采集ENTER前面的数据,那就完美了..
    采集前面的数据:dim Data as string '保存采集的数据   If KeyAscii = 13 Then  '判断是否按了Enter键
         data= right(text1.text,3) '采集Enter键前三位.此处的3你可以改.
          
          Case Mid(Data, 2) '对采集的数据进行处理判断 '此处理是判断采集到的数据后二位. 也可判断第一位,
             '那就 mid(Data,1,1)  '第一个字符开始就取一个字符.
             Case "12"
                '现在不良是气孔‘
                  '不良时间是 Now
                '播放声音
              case "13"
               '.....
          End Select
       
       End If
      

  5.   

      恩,雪情讲的很详细~偶这个超级菜鸟都看懂啦...
    关于 data= right(text1.text,3) ,有没有不用到text控件的办法呢?因为在生产线中要做到尽量简单,快捷.我希望在输入比如012时候直接在屏幕中间很心目显示出来,当按下回车时跳出012对应的项目:气孔.然后OVER,至于时间和项目存到数据库中,后台进行...
      

  6.   

    Private Sub Text1_KeyPress(KeyAscii As Integer) 
      If KeyAscii = 13 Then  '判断是否按了Enter键 
            If Left(Text1.Text, 1) <> "0" Then 
                '合格品另外处理 
                'Exit Sub 
            Else 
                Select Case Mid(Text1.Text, 2, 2) 
                    Case "12" 
                        MsgBox "报废密码键盘" 
                    Case "34" 
                        MsgBox "报废打印机" 
                    Case Else 
                        MsgBox "其它废品" 
                End Select 
                '记录数据 
                'Text1.Text = "" 
            End If 
      End If 
    End Sub 
      

  7.   


    Option Explicit
    '我的要求是: 
    '  首字母0接01,即001再按回车代表摔伤,002代表磕碰伤,003代表划伤....012代表有气孔.以上的几项都是造成产品不合格的原因. 
    '  首字母1接01,既101再按回车代表质量异常,102代表设备异常,103代表刀具异常...等等 
    '  首字母2....基本上首字母0-9,已经够用了.现在就是希望怎样一个判断会更好点,由于键盘是相当于电脑的小数字键盘类型的,按下时VB如何判断记录呢?Private Keys(9, 9, 9) As StringPrivate Sub Form_Load()
        Keys(0, 0, 0) = "产品合格"
        Keys(0, 0, 1) = "产品不合格,摔伤"
        Keys(0, 0, 2) = "产品不合格,磕碰伤"
        Keys(0, 0, 3) = "产品不合格,划伤"
        '.
        '.
        '.
        Keys(0, 1, 2) = "产品不合格,有气孔"
        '.
        '.
        '.
        Keys(1, 0, 1) = "异常,质量异常"
        Keys(1, 0, 2) = "异常,设备异常"
        Keys(1, 0, 3) = "异常,刀具异常"
        '.
        '.
        '.
    End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        Dim i As Integer, j As Integer, k As Integer
        
        If KeyCode = 13 Then
            If Not Text1.Text Like "###" Then
                MsgBox "输入不正确,请重输!"
                Exit Sub
            End If
            
            i = Left(Text1.Text, 1)
            j = Mid(Text1.Text, 1, 1)
            k = Right(Text1.Text, 1)
            
            MsgBox Keys(i, j, k)
        End If
    End Sub
      

  8.   

    谢谢jxh的程序~~~我拿去试下哦~~~
      

  9.   

    我觉得"我不喝咖啡"的思路不错,不过不用三维数组,一维就可以:dim Keys(999) as stringPrivate Sub Form_Load()
        Keys(0) = "产品合格"
        Keys(1) = "产品不合格,摔伤"
        Keys(2) = "产品不合格,磕碰伤"
        Keys(3) = "产品不合格,划伤"
        '.
        '.
        '.
        Keys(12) = "产品不合格,有气孔"
        '.
        '.
        '.
        Keys(101) = "异常,质量异常"
        Keys(102) = "异常,设备异常"
        Keys(103) = "异常,刀具异常"
        '.
        '.
        '.
    End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
            
        If KeyCode = 13 Then
            If Not Text1.Text Like "###" Then
                MsgBox "输入不正确,请重输!"
                Exit Sub
            End If        
            MsgBox Keys(val(Text1.Text))
        End If
    End Sub
      

  10.   


    1. If Not Text1.Text Like "###" Then '这一句要求输入三个数字字符
    2. 我用三维数组是因为他是以三位数字字符来表示产品状态,当然一维数组一样可以实现。
    3. 1开头输入后弹出的窗体没有字是因为Keys(1, x, x)的值为空,比如
    Keys(1, 1, 1)=""
      

  11.   

        Keys(101) = "异常,质量异常" 
        Keys(102) = "异常,设备异常" 
        Keys(103) = "异常,刀具异常"
    这几句的意思不是当输入101时弹出:异常,质量异常吗?
    但是我输入101按ENTER弹出的窗体没有字哦?
      

  12.   

    Private Sub Text1_KeyPress(KeyAscii As Integer) 
      If KeyAscii = 13 Then  '判断是否按了Enter键 
            If Left(Text1.Text, 1) <> "0" Then 
                '合格品另外处理 
                'Exit Sub 
            Else 
                Select Case Mid(Text1.Text, 2, 2) 
                    Case "12" 
                        MsgBox "报废密码键盘" 
                    Case "34" 
                        MsgBox "报废打印机" 
                    Case Else 
                        MsgBox "其它废品" 
                End Select 
                '记录数据 
                'Text1.Text = "" 
            End If 
      End If 
    End Sub 
      

  13.   

    不好意思
    j = Mid(Text1.Text, 1, 1)這句寫錯了
    把這一句改為
    j = Mid(Text1.Text, 2, 1)
      

  14.   

    建议你按以下建立你的表
    表1:(其中编号为主键)
    编号  状态
    101   质量异常表2(其中ID为序号,自动编号,为主键)
    ID 编号  发生时间  ...  ...
    1  101  2008-9-4 22:20:00 ... ...表2 中不需要保存表1中状态的值,只需保存表1中编号即可。
    按下回车保存时可用Sql语句操作
    比如
    新增:sql="insert 表2(编号,发生时间,...,...) values('" & Textbox1.text & "','" & now & "','...','...'" & ")"
    修改: sql="update 表2 set 编号='" & Textbox1.text & "',发生时间='" & now & "',... where 字段=条件"
    然后Dim adocon As New ADODB.Connection
    Dim adocmd As New ADODB.Command
    adocon.ConnectionString = "你的数据库连接字串"
    adocon.Open
    adocmd.CommandType = adCmdText
    adocmd.CommandText = sql
    adocmd.ActiveConnection = adocon
    adocmd.Execute
      

  15.   

    额~~~谢谢"我不喝咖啡"...受益非浅,再弱弱的问个小问题...如何在SQL2005中建力自增主键呢...
      

  16.   

    建议你稍微看一下SQL2005的帮助,一定能找到你要的答案的。呵呵