以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助,如何优化下面的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=14132)

--  作者:wangliang
--  发布时间:2011/11/9 15:19:00
--  求助,如何优化下面的代码

当表A的“涂”这列逻辑值为真时,把当前行删除,在表B中添加当前行,下面代码写在错在哪里  dim r as row=tables(“表A”).current

If r("涂") = True Then
     Dim b As Row = Tables("表B").addnew()
   b("组")=r("组")
   b("下单日")= r("下单日")
   b("客户") = r("客户")
   b("单号")= r("单号")
   b("代号")=r("代号")
   b("品名")= r("品名")
   b("厚度")=r("厚度")
   b("粘度")=r("粘度")
   b("字色")= r("字色")
   b("底色")=r("底色")
   b("规格")=r("规格")
   b("支数")=r("支数")
   b("米数")=r("米数")
   b("拼版")=r("拼版")
   b("膜厚")=r("膜厚")
   b("标重")=r("标重")
   b("上胶")=r("上胶")
   b("备注")=r("备注")
   b("交货时间")=r("交货时间")
   b("印机")=r("印机")
   b("印日")=r("印日")
   b("印")=r("印")
   b("涂机")=r("涂机")
   b("涂日")=r("涂日")
   b("涂")=r("涂")
   b("*")=r("*")
   Tables("表A").current.delete()
   End If


--  作者:狐狸爸爸
--  发布时间:2011/11/9 15:25:00
--  
If r("涂") = True Then
    Dim b As Row = Tables("表B").AddNew()
    Dim nms() As String = {"组","下单日","客户",单号","代号","品名"}
    For Each nm As String nms
        b(nm) = r(nm)
    Next
    r.delete()
End If

--  作者:狐狸爸爸
--  发布时间:2011/11/9 15:40:00
--  
If r("涂") = True Then
    Dim b As Row = Tables("表B").AddNew()
    For Each c As Col In Tables("表A").Cols
        b(c.name) = r(c.name)
    Next
    r.delete()
End If

--  作者:wangliang
--  发布时间:2011/11/9 16:52:00
--  

运行之后怎么会出这问题看看


--  作者:狐狸爸爸
--  发布时间:2011/11/9 16:55:00
--  

出了什么问题?

你最好上传表,这样别人才能调试好代码再发给你,否则都只能大概。


--  作者:wangliang
--  发布时间:2011/11/10 9:11:00
--  

狐爸看看问题在哪里,代码在表(“排单”)的beforesavedatarow中

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:彩印.table


--  作者:狐狸爸爸
--  发布时间:2011/11/10 9:29:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目33.rar

 

你的代码非常离谱,建议你先细看帮助,特别市开发指南中《编程基础》和《foxtable编程》这两章。


--  作者:wangliang
--  发布时间:2011/11/10 10:04:00
--  

但是没有删除掉表("排单")的行啊

 


--  作者:狐狸爸爸
--  发布时间:2011/11/10 10:22:00
--  

再加一行:

 

 

Dim dr1 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "涂"
        If dr1("涂") = True Then
            Dim dr2 As DataRow = DataTables("完成记录").AddNew()
            For Each dc As DataCol In DataTables("完成记录").DataCols
                If e.DataTable.DataCols.Contains(dc.name) Then
                    dr2(dc.name) = dr1(dc.name)
                End If
            Next
            dr1.Delete
        End If
    Case "涂日"
        If dr1.IsNull("涂日") = False  Then
            Dim d As Date = dr1("涂日")
            dr1("月份") =cstr("Y"& d.month )
            dr1("日期") =cstr( d.day & "日")
        Else
            dr1("月份") = Nothing
            dr1("日期") = Nothing
        End If
End Select


--  作者:wangliang
--  发布时间:2011/11/10 10:30:00
--  

发生了一样的错误,到底什么原因呢