以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]跨引用自动编码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74891) |
||||
-- 作者:18929005187 -- 发布时间:2015/9/22 10:06:00 -- [求助]跨引用自动编码 新手求助! 产品名称 由 产品材质+产品简称+产品规格+大小 合成 ; 此主题相关图片如下:产品编码.jpg 此主题相关图片如下:产品表.png
产品ID 由 产品材质ID+产品简称ID+产品规格ID+大小 合成 ’ 所有ID 都从编码表自动提取 主要是产品简称ID不知道怎么提取出来 产品简称ID 要先根据产品表的类目 判断,后再从编码表选取对应产品简称的ID 产品表表属性 datacolchanged 中代码 以下内容为程序代码: 1 Dim de As DataRow 2 Dim a1 As String 3 Dim a2 As String 4 Dim a3 As String 5 Dim a4 As String 6 Dim dr As DataRow = e.DataRow 7 Select Case e.DataCol.Name 8 Case "产品规格" , "产品类目", "大小", "产品材质" ,"产品简称" 9 If dr.IsNull("产品规格") OrElse dr.IsNull("产品简称") OrElse dr.IsNull("产品材质") OrElse dr.IsNull("大小") OrElse dr.IsNull("产品类目") Then 10 dr("产品名称") = Nothing 11 dr("产品ID") = Nothing 12 Else 13 Dim Parts() As String = {dr("产品材质"),dr("产品简称") ,dr("产品规格"),dr("大小")} 14 Dim Str1 As String 15 Str1 = String.Join("-", Parts) 16 dr("产品名称") = Str1 17 de = DataTables("产品编码").find("材质 = \'"& e.datarow("产品材质")&"\'") 18 If de IsNot Nothing Then \'如果找到, 则设置各列内容 19 a1= de("材质ID") 20 End If 21 de = DataTables("产品编码").find("规格 = \'"& e.datarow("产品规格")&"\'") 22 If de IsNot Nothing Then \'如果找到, 则设置各列内容 23 a2= de("规格ID") 24 End If 25 Dim d1 As String 26 d1 = e.DataRow("产品类目") 27 a3 = dr("产品类目") & "ID" 28 If dr.Isnull("产品规格") OrElse dr.Isnull("产品简称") Then 29 de = DataTables("产品编码").find( "d1 = \'"& e.datarow("产品简称")&"\'") 30 If de IsNot Nothing Then \'如果找到, 则设置各列内容 31 a4 = de("茶台ID") 32 End If 33 End If 34 If dr.Isnull("大小") Then 35 dr("产品ID") =Nothing 36 End If 37 MessageBox.show(a4) 38 Dim Parts2() As String = {a1,a4,a2,dr("大小")} 39 Dim Str2 As String 40 Str2 = String.Join("-", Parts2) 41 dr("产品ID") = Str2 42 End If 43 End Select 主要是 25 到32中代码不知出错在哪里! |
||||
-- 作者:18929005187 -- 发布时间:2015/9/22 10:09:00 -- 产品名称可以自动生成!就是产品ID自动生成有问题,测试 a1 a2 a3 都正常! Dim de As DataRow Dim a1 As String Dim a2 As String Dim a3 As String Dim a4 As String Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "产品规格" , "产品类目", "大小", "产品材质" ,"产品简称" If dr.IsNull("产品规格") OrElse dr.IsNull("产品简称") OrElse dr.IsNull("产品材质") OrElse dr.IsNull("大小") OrElse dr.IsNull("产品类目") Then dr("产品名称") = Nothing dr("产品ID") = Nothing Else Dim Parts() As String = {dr("产品材质"),dr("产品简称") ,dr("产品规格"),dr("大小")} Dim Str1 As String Str1 = String.Join("-", Parts) dr("产品名称") = Str1 de = DataTables("产品编码").find("材质 = \'"& e.datarow("产品材质")&"\'") If de IsNot Nothing Then \'如果找到, 则设置各列内容 a1= de("材质ID") End If de = DataTables("产品编码").find("规格 = \'"& e.datarow("产品规格")&"\'") If de IsNot Nothing Then \'如果找到, 则设置各列内容 a2= de("规格ID") End If Dim d1 As String d1 = e.DataRow("产品类目") a3 = dr("产品类目") & "ID" If dr.Isnull("产品规格") OrElse dr.Isnull("产品简称") Then de = DataTables("产品编码").find( "d1 = \'"& e.datarow("产品简称")&"\'") If de IsNot Nothing Then \'如果找到, 则设置各列内容 a4 = de("a3") End If End If If dr.Isnull("大小") Then dr("产品ID") =Nothing End If MessageBox.show(a4) Dim Parts2() As String = {a1,a4,a2,dr("大小")} Dim Str2 As String Str2 = String.Join("-", Parts2) dr("产品ID") = Str2 End If End Select [此贴子已经被作者于2015/9/22 10:09:49编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2015/9/22 10:19:00 -- Dim d1 As String d1 = e.DataRow("产品类目") a3 = dr("产品类目") & "ID" de = DataTables("产品编码").find( d1 & " = \'"& e.datarow("产品简称")&"\'") If de IsNot Nothing Then \'如果找到, 则设置各列内容 a4 = de(a3) End If If dr.Isnull("大小") Then dr("产品ID") =Nothing End If MessageBox.show(a4) |
||||
-- 作者:18929005187 -- 发布时间:2015/9/22 10:29:00 -- 非常感谢, 满足了我的要求! 请问这个是什么问题? Find 里面帮助说明里面都是一个指定的具体字符,我这个是个变动。 具体说明问题不太清楚,请指点下
|
||||
-- 作者:大红袍 -- 发布时间:2015/9/22 10:35:00 -- 看一下字符串的连接,动态改变的不要写在双引号里面
http://www.foxtable.com/help/topics/0221.htm
|