以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  没有加载的表继承数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126368)

--  作者:cd_tdh
--  发布时间:2018/10/19 14:35:00
--  没有加载的表继承数据

老师,以前我问过这个问题,但是在我论坛里面没找到,表A逻辑列勾选,表B继承部分列(表B没加载),这样表写表B没继承到数据。

代码如下:

Dim cd As New SQLCommand
Dim dc As  DataTable
cd.C
cd.CommandText = "SELECT * F rom {工程款管理} where 1=2 "
dc = cd.ExecuteReader(True)
If e.DataCol.Name = "登记状态"
    If e.DataRow("登记状态") = True Then
        Dim nma() As String = {"ID","合同编码","所属机构","项目名称","建设单位","合同金额","合同工期","开工日期","竣工日期","计量期数","是否是退扣款","计量金额","申请金额","户名","账号","开户银行","审批状态"} \'A表数据来源列
        Dim nmb() As String = {"ID","合同编码","所属机构","项目名称","建设单位","合同金额","合同工期","开工日期","竣工日期","计量期数","是否是退扣款","计量金额","申请金额","户名","账号","开户银行","审批状态"} \'B表数据接收列
        e.DataRow.save
        \'Dim dr As DataRow = DataTables("工程款管理") .AddNew
        Dim dr As DataRow = dc.AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
        Next
    Else
        \'DataTables("工程款管理").deletefor("ID = \'" & e.DataRow("ID") & "\'")
        \'DataTables("工程款管理").save
       dc.deletefor("ID = \'" & e.DataRow("ID") & "\'")
       dc.save
    End If
End If


--  作者:有点蓝
--  发布时间:2018/10/19 14:53:00
--  
新增数据基本和后台没有什么关系。原来的用法有什么问题?

If e.DataCol.Name = "登记状态"
    If e.DataRow("登记状态") = True Then
        Dim nma() As String = {"ID","合同编码","所属机构","项目名称","建设单位","合同金额","合同工期","开工日期","竣工日期","计量期数","是否是退扣款","计量金额","申请金额","户名","账号","开户银行","审批状态"} \'A表数据来源列
        Dim nmb() As String = {"ID","合同编码","所属机构","项目名称","建设单位","合同金额","合同工期","开工日期","竣工日期","计量期数","是否是退扣款","计量金额","申请金额","户名","账号","开户银行","审批状态"} \'B表数据接收列

        Dim dr As DataRow = DataTables("工程款管理") .AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
        Next
        e.DataRow.save
    Else
        DataTables("工程款管理").deletefor("ID = \'" & e.DataRow("ID") & "\'")
        DataTables("工程款管理").save
    End If
End If

--  作者:cd_tdh
--  发布时间:2018/10/19 15:07:00
--  

原来用法没问题,只是要现在加载表才能新增啊,现在想一个表都不加载,直接写到数据库。


--  作者:有点蓝
--  发布时间:2018/10/19 15:20:00
--  
1楼代码下面这句放到代码最后

dc.save

--  作者:cd_tdh
--  发布时间:2018/10/19 16:32:00
--  
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
        Next
       dc.save
    Else
       dc.deletefor("ID = \'" & e.DataRow("ID") & "\'")
       dc.save
    End If
End If
这样新增没问题了,但删除后放保存放哪儿都不行,不成功,代码都执行了,但就是没删除。
[此贴子已经被作者于2018/10/19 16:31:43编辑过]

--  作者:有点蓝
--  发布时间:2018/10/19 16:36:00
--  
Else
       dc.sqldeletefor("ID = \'" & e.DataRow("ID") & "\'")
    End If
--  作者:cd_tdh
--  发布时间:2018/10/19 16:45:00
--  

查询表或临时表不能用SQlDeleteFor哒。


--  作者:有点蓝
--  发布时间:2018/10/19 16:55:00
--  
查询表不可以,下面这种绝对可以,我测试没有问题

dc = cd.ExecuteReader(True)
dc.sqldeletefor("ID = \'" & e.DataRow("ID") & "\'")

--  作者:cd_tdh
--  发布时间:2018/10/19 17:07:00
--  

可以了,在测试的时候吧True删除了、

谢谢老师。


--  作者:cd_tdh
--  发布时间:2018/10/19 17:15:00
--  

一个事件同时又引用了多个外部表,只能这样每次分开写哇。

Dim cmd As New SQLCommand
Dim dt As  DataTable
cmd.C
cmd.CommandText = "SELECT * F rom {合同管理} where
dt = cmd.ExecuteReader()

 

Dim cd As New SQLCommand
Dim dc As  DataTable
cd.C
cd.CommandText = "SELECT * F rom {工程款管理} where 1=2 "
dc = cd.ExecuteReader(True)