以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]定义函数有误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71665)

--  作者:blsu33
--  发布时间:2015/7/15 19:48:00
--  [求助]定义函数有误
老师 ,
这是哪里的问题 请您指导下
   
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150715194817.png
图片点击可在新窗口打开查看

--  作者:blsu33
--  发布时间:2015/7/15 19:49:00
--  
代码

Dim e As object=args(0)
Dim tb As Table=args(1)

Dim dt,dt1,dt2 As DataTable
Dim cmd,cmd1,cmd2 As New SQLCommand
cmd.C
cmd1.C
cmd2.C
cmd1.CommandText = "SELECT * Fr om {组别转换}"
cmd.CommandText = "SELECT * Fr om {ERPcode}"
cmd2.CommandText = "SELECT * Fr om {Showcode转换}"
dt = cmd2.ExecuteReader()
dt1 = cmd1.ExecuteReader()
dt2 = cmd.ExecuteReader()
Select e.DataCol.Name
    Case "旧项目号"
        If tb.Current("旧项目号") IsNot Nothing Then
            Dim dr,dr1 As DataRow
            dr = dt.Find("旧项目号= \'" & tb.Current("旧项目号") & "\'")
            dr1 = dt1.Find("原组别=\'"& tb.Current("组别") &"\'")
            If dr IsNot Nothing Then
                tb.Current("项目号")=dr("项目号")
                tb.Current("旧项目号")=dr("旧项目号")
                tb.Current("ShowName")=dr("ProjectName")
                tb.Current("组别")=tb.Current("项目号").SubString(0,2)
                If dr1 IsNot Nothing Then
                    tb.Current("组别")=""
                    tb.Current("组别")=dr1("组别")
                End If
                
            Else
                tb.Current("项目号")=tb.Current("旧项目号")
                tb.Current("组别")=tb.Current("项目号").SubString(0,2)
                dr1 = dt1.Find("原组别=\'"& tb.Current("组别") &"\'")
                If dr1 IsNot Nothing Then
                    tb.Current("组别")=""
                    tb.Current("组别")=dr1("组别")
                End If
            End If
        End If
    Case "项目号"
        If tb.Current("项目号") IsNot Nothing Then
            Dim dr2 As DataRow
            dr2 = dt2.Find("Project= \'" & tb.Current("项目号") & "\'")
            If dr2 IsNot Nothing Then
                tb.Current("PIC")=dr2("PIC name")
                tb.Current("ShowName")=dr2("Name")
                tb.Current("预算开工时间")=dr2("Show/event open date")
                tb.Current("预算完工时间")=dr2("Show/event close date")
            End If
        End If
End Select

--  作者:blsu33
--  发布时间:2015/7/15 19:51:00
--  
窗口的 datacolchanged


Select e.DataCol.Name
    Case "旧项目号"
        Functions.Execute("codeadd",e,Tables("ar_table5"))


--  作者:blsu33
--  发布时间:2015/7/15 19:52:00
--  
本来是用e参数 发现 不是这个的问题 麻烦老师给看看
--  作者:大红袍
--  发布时间:2015/7/15 20:00:00
--  
SubString(0,2) 的问题,说明你的内容没有两个字符。要处理字符为空或少于2的情况。
--  作者:blsu33
--  发布时间:2015/7/15 20:19:00
--  
哦 果然低级错误

老师 上述有这么多 SQL 导致 这个字段录入 速度非常慢  怎么改进呢

--  作者:大红袍
--  发布时间:2015/7/15 20:26:00
--  
cmd1.CommandText = "SELECT * Fr om {组别转换}"
cmd.CommandText = "SELECT * Fr om {ERPcode}"
cmd2.CommandText = "SELECT * Fr om {Showcode转换}"

 

写成

 

cmd1.CommandText = "SELECT * Fr om {组别转换} where 1=2"
cmd.CommandText = "SELECT * Fr om {ERPcode} where 1=2"
cmd2.CommandText = "SELECT * Fr om {Showcode转换} where 1=2"
 
--------------
 
find函数写成sqlFind函数

--  作者:大红袍
--  发布时间:2015/7/15 20:28:00
--  
如果你的那三个表需要重复多次使用,建议你就把它们加载出来吧。