以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]能否用表事件编辑后台所有数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91751)

--  作者:qscwdvefb
--  发布时间:2016/10/18 13:37:00
--  [求助]能否用表事件编辑后台所有数据
请问有办法在表事件上对后台所有数据进行编辑吗?例如我用的是分页加载,只加载20行数据,我在datacolchanged事件里面修改某列第一行的数据,在剩下所有行
(包括没有加载出来的行)的那列的值都与它相等,这可以实现吗?如果可以,把下面代码
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "F4376"
        dr("F5312")=dr("F4376").Year
End Select
修改一下

--  作者:有点蓝
--  发布时间:2016/10/18 14:15:00
--  
参考:http://www.foxtable.com/webhelp/scr/2898.htm

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "F4376"
        e.DataTable.SQLReplaceFor("F5312",dr("F4376").Year)
e.DataTable.ReplaceFor("F5312",dr("F4376").Year)
        \'dr("F5312")=dr("F4376").Year
End Select
[此贴子已经被作者于2016/10/18 14:15:59编辑过]

--  作者:qscwdvefb
--  发布时间:2016/10/18 15:56:00
--  
你改的代码可以把倒数第二行删除吗?倒数第二行好像是注释,前面有单引号。。。
--  作者:qscwdvefb
--  发布时间:2016/10/18 16:00:00
--  
关键是把dr("F5312")=dr("F4376").Year
替换成 e.DataTable.SQLReplaceFor("F5312",dr("F4376").Year)
e.DataTable.ReplaceFor("F5312",dr("F4376").Year)
        \'dr("F5312")=dr("F4376").Year
就可以了?

--  作者:有点蓝
--  发布时间:2016/10/18 16:08:00
--  
注释的可以删除

可不可以试过才知道

--  作者:qscwdvefb
--  发布时间:2016/10/19 18:53:00
--  
beforesavedatarow事件
Dim dr As DataRow = DataTables("T246").AddNew
For Each dc As DataCol In DataTables("T246").DataCols
 
    dr("F4363") = e.DataRow("F391")
    dr("F4364") = e.DataRow("F392")
    dr("F4366") = e.DataRow("F394")
    dr("F4383") = e.DataRow("F395")
    dr("F4384") = e.DataRow("F396")
    dr("F4385") = e.DataRow("F397")
    dr("F4386") = e.DataRow("F398")
    dr("F4387") = e.DataRow("F399")
    dr("F4388") = e.DataRow("F400")
    dr("F4389") = e.DataRow("F401")
    dr("F4390") = e.DataRow("F402")
    dr("F4391") = e.DataRow("F403")
    dr("F4392") = e.DataRow("F404")
    dr("F4393") = e.DataRow("F405")
    dr("F4394") = e.DataRow("F406")
    dr("F4395") = e.DataRow("F407")
    dr("F4396") = e.DataRow("F408")
   ......
Next
怎么改这段代码,让它变成是编辑后台全部数据的代码?(ps:这是T28表的表事件)

--  作者:qscwdvefb
--  发布时间:2016/10/19 20:22:00
--  
以下是引用qscwdvefb在2016/10/18 13:37:00的发言:
请问有办法在表事件上对后台所有数据进行编辑吗?例如我用的是分页加载,只加载20行数据,我在datacolchanged事件里面修改某列第一行的数据,在剩下所有行
(包括没有加载出来的行)的那列的值都与它相等,这可以实现吗?如果可以,把下面代码
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "F4376"
        dr("F5312")=dr("F4376").Year
End Select
修改一下
如果是改为每行dr("F5312")等于各自行的dr("F4376").Year呢?



--  作者:有点蓝
--  发布时间:2016/10/19 20:56:00
--  
回6楼,2个表的列没有说明对应关系,只能这样

回7楼,
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "F4376"
        e.DataTable.SQLReplaceFor("F5312","convert( nvarchar(4),[F4376],120)","",True)
End Select

--  作者:qscwdvefb
--  发布时间:2016/10/20 10:20:00
--  
以下是引用有点蓝在2016/10/19 20:56:00的发言:
回6楼,2个表的列没有说明对应关系,只能这样

你说的对应关系具体是指什么?


--  作者:qscwdvefb
--  发布时间:2016/10/20 10:36:00
--  
以下是引用有点蓝在2016/10/19 20:56:00的发言:
回6楼,2个表的列没有说明对应关系,只能这样

回7楼,
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "F4376"
        e.DataTable.SQLReplaceFor("F5312","convert( nvarchar(4),[F4376],120)","",True)
End Select


请问参数convert( nvarchar(4),[F4376],120)的含义是什么?