我在出入库明细表的datacolchanged设置了下面的代码意图从货品信息表中获取已存档的货品信息,原来一直运行得很好,后来到货的条码有些不太规范,夹杂了*-以及空格等字符,我就编写了红色部分的代码来清除它们,小规模试了还是能运行。可是今天我发现有相当一部分条码,明明已经有存档的货品信息,还是要让新增,刚开始以为是存档的货号列字符的输入法与现在不同,于是复制新读取的条码上包含的货号字符替换掉原来存档的货号字符,不解决问题。又以为是红色部分的代码造成的,于是注释掉它们,还是不行。插入蓝色字体的测试代码,显示hh为空。
太郁闷了!
If pause = True Then
Return
End If
Dim sp As New DotNetSpeech.SpVoice()
Dim cmd,cmd1,cmd2 As new SQLCommand
Dim tm,s1,s2,hh ,cm,pp As String
Dim dt As DataTable
Dim dr As DataRow
Select Case e.DataCol.Name
Case "产品条码"
tm = e.NewValue
If Char.IsDigit(tm.Substring(0,1)) Then
sp.Speak("条码输入有误!请重新输入!", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)
Return
End If
If tm = Nothing Then
Return
End If
'Dim lst As new List(Of String) '清除条码的无效字符
'For i As Integer = 0 To tm.length - 1
'lst.Add(tm.SubString(i,1))
'Next
'If lst.count > 0 Then
'tm = Nothing
'For i As Integer = 0 To lst.count - 1
'If Char.IsLetterOrDigit(lst(i)) Then
'tm = tm & lst(i)
'End If
'Next
'tm = tm.Trim()
'e.DataRow("产品条码") = tm
'End If
cmd.C
cmd.CommandText = "select * From {货品信息}"
dt = cmd.ExecuteReader()
For Each dr In dt.DataRows
If tm.StartsWith(dr("货号")) Then
hh = dr("货号")
Exit For
End If
Next
messagebox.show(hh)
If hh = "" Then
sp.Speak("有新增货品,请添加!", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)
_str = tm.Substring(0,8) & "**"
Forms("新增货品信息").open()
Return
End If
dr = dt.Find("货号 ='" & hh & "'")
If dr IsNot Nothing Then
Dim sts As String() ={"货号","产品名称","品牌"}
Dim st As String
For Each st In sts
e.DataRow(st) = dr(st)
Next
Dim sts1 As String() = {"产品名称","年份","季别","品牌","品类","细类","系列","性别","吊牌价格","产地","材质1","材质2","材质3","材质4","材质5","材质6"}
For Each st In sts
Forms("货品出库").Controls(st).text = dr(st)
Next
End If
s1 = tm.Substring(hh.length,2)
s2 = tm.Substring(hh.length + 2,2)
cm = tm.Substring(hh.length + 4)
cmd.C
cmd.CommandText = "select * from {颜色编码}"
dt = cmd.ExecuteReader()
dr = dt.Find("色码 ='" & s1 & "'") ' And 品牌 ='" & e.DataRow("品牌") & "'")
If dr Is Nothing Then
sp.Speak("有新增颜色,请添加!", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)
_str = s1 & "|" & Tables("出库明细").Current("品牌")
Forms("颜色编码信息").open()
Return
Else
s1 = dr("颜色")
End If
dr = dt.Find("色码 ='" & s2 & "'" ) ' And 品牌 ='" & e.DataRow("品牌") & "'")
If dr Is Nothing Then
sp.Speak("有新增颜色,请添加!", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)
_str = s2 & "|" & Tables("出库明细").Current("品牌")
Forms("颜色编码信息").open()
Return
Else
s2 = dr("颜色")
End If
If s2 = "空白" Then
s1 = s1
Else
s1 = s1 & "/" & s2
End If
e.DataRow("颜色") = s1
e.DataRow("尺码号") = cm
'Forms("货品出库").Controls("颜色").value = s1
'Forms("货品出库").Controls("尺码号").Value = cm
Forms("货品出库").Controls("产品条码").Value= Nothing
Forms("货品出库").Controls("产品条码").Select
End Select