由于公司需要用小键盘(如银行输密码那种)记录产品报废信息,由于键位太少,判断的东西又多,所以一些问题想问下大家. 1)比如生产了一个气孔,我输入012,(因为1开头有另外一些功能设置).012中的0代表是产品不合格,12代表不合格内容是气孔.我想问下这样的VB6中如何来判断呢?因为在书中只记载单个键的askII码表. 2)我希望的是在我按下012之后,数据库中的不良品信息表记录下不良品发生的时间(就是按下时的电脑时间)和不良品内容(气孔),并且给予声音提示.(为了防止误操作,在按下012后按下ENTER确认才正式输入该信息),应该如何实现呢?希望能给出详细点的操作步骤,非常感谢~~~
If KeyAscii = 13 Then '判断是否按了Enter键
Case Mid(Text1.Text, 2)
Case 12
'现在不良是气孔‘
'不良时间是 Now
'播放声音
case 13
'.....
End Select
End If
End Sub
..我的要求是先按012再按ENTER,程序里是不是先按ENTER了在用CASE......额~~如果MID是采集ENTER前面的数据,那就完美了..还有个问题就是当我输入101时(比如1开头代表异常,01代表质量异常,我一样要记录异常内容和异常发生时间,后面可能还会有2,3,4...用CASE来判断可以吗?)有点懂了~~~大家继续发言哈~
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
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
关于 data= right(text1.text,3) ,有没有不用到text控件的办法呢?因为在生产线中要做到尽量简单,快捷.我希望在输入比如012时候直接在屏幕中间很心目显示出来,当按下回车时跳出012对应的项目:气孔.然后OVER,至于时间和项目存到数据库中,后台进行...
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
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
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
1. If Not Text1.Text Like "###" Then '这一句要求输入三个数字字符
2. 我用三维数组是因为他是以三位数字字符来表示产品状态,当然一维数组一样可以实现。
3. 1开头输入后弹出的窗体没有字是因为Keys(1, x, x)的值为空,比如
Keys(1, 1, 1)=""
Keys(102) = "异常,设备异常"
Keys(103) = "异常,刀具异常"
这几句的意思不是当输入101时弹出:异常,质量异常吗?
但是我输入101按ENTER弹出的窗体没有字哦?
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
j = Mid(Text1.Text, 1, 1)這句寫錯了
把這一句改為
j = Mid(Text1.Text, 2, 1)
表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