Foxtable(狐表)用户栏目专家坐堂 → [求助]跨引用自动编码


  共有2654人关注过本帖树形打印复制链接

主题:[求助]跨引用自动编码

帅哥哟,离线,有人找我吗?
18929005187
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:620 威望:0 精华:0 注册:2015/8/30 0:03:00
[求助]跨引用自动编码  发帖心情 Post By:2015/9/22 10:06:00 [只看该作者]

新手求助!  产品名称  由  产品材质+产品简称+产品规格+大小  合成  ;
图片点击可在新窗口打开查看此主题相关图片如下:产品编码.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:产品表.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:云泰尚初始版_201509220957.zip

               产品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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:620 威望:0 精华:0 注册:2015/8/30 0:03:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:620 威望:0 精华:0 注册:2015/8/30 0:03:00
  发帖心情 Post By:2015/9/22 10:29:00 [只看该作者]

非常感谢, 满足了我的要求!
请问这个是什么问题?  Find  里面帮助说明里面都是一个指定的具体字符,我这个是个变动。
 具体说明问题不太清楚,请指点下

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/22 10:35:00 [只看该作者]

看一下字符串的连接,动态改变的不要写在双引号里面

 

http://www.foxtable.com/help/topics/0221.htm

 


 回到顶部