以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]当前行 框选非日期列填充 已完成  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123483)

--  作者:湛江智
--  发布时间:2018/8/15 17:21:00
--  [求助]当前行 框选非日期列填充 已完成

当前行 框选非日期列,框选的多列填充 已完成  按钮的代码怎么写?求帮助


图片点击可在新窗口打开查看此主题相关图片如下:当前行 框选多列.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:当前行 框选非日期列填充 已完成.foxdb

[此贴子已经被作者于2018/8/15 17:21:53编辑过]

--  作者:有点甜
--  发布时间:2018/8/15 17:35:00
--  
Dim t As Table = CurrentTable
For i As Integer = t.LeftCol To t.RightCol
    If t.Cols(i).IsDate = False Then
        t.current(i) = "已完成"
    End If
Next

--  作者:湛江智
--  发布时间:2018/8/16 15:50:00
--  回复:(有点甜)Dim t As Table = CurrentTableFor i...
 行 框选中的日期列 清空,非日期列字符串值不变,下面代码,有缺陷吗?
Dim t As Table = CurrentTable
For i As Integer = t.LeftCol To t.RightCol
    If t.Cols(i).IsDate = True Then
        t.current(i) = Date.MinValue
    End If
Next

[此贴子已经被作者于2018/8/16 16:14:55编辑过]

--  作者:有点甜
--  发布时间:2018/8/16 16:24:00
--  

 

 t.current(i) = Nothing


--  作者:湛江智
--  发布时间:2018/8/17 7:47:00
--  回复:(有点甜)  t.current(i) = Nothi...
如果要撤销上面的代码操作,代码怎么写呢?系统的后退不行
--  作者:有点蓝
--  发布时间:2018/8/17 8:58:00
--  
参考:http://www.foxtable.com/webhelp/scr/1538.htm
--  作者:湛江智
--  发布时间:2018/8/17 9:30:00
--  回复:(有点蓝)参考:http://www.foxtable.com/webh...
如果之前对表修改过表还未保存,再执行下面代码
 Dim t As Table = CurrentTable
For i As Integer = t.LeftCol To t.RightCol
    If t.Cols(i).IsDate = False Then
        t.current(i) = "已完成"
    End If
Next

要保存之前对表的修改,不保存上面代码操作的效果,代码怎么写呢?

Syscmd.Edit.Undo() 这个撤销对上面代码撤销失效

 
下面代码撤销会把之前对表修改过也一并 撤销,不是想要的效果

DataTables("表A").RejectChanges()



--  作者:有点蓝
--  发布时间:2018/8/17 9:37:00
--  
代码赋值的没有办法使用Undo,只能重新使用代码赋值
--  作者:湛江智
--  发布时间:2018/8/17 9:49:00
--  回复:(有点甜)Dim t As Table = CurrentTableFor i...
 这个代码是单行,非日期列填充字符  已完成
要改成多行,可以非日期列填充字符  已完成,代码怎么修改呢?谢谢
不知道怎么结合下面的代码修改
For i As Integer = CurrentTable.LeftCol To CurrentTable.RightCol
    For j As Integer = CurrentTable.TopRow + 1 To CurrentTable.BottomRow
        CurrentTable.Rows(j)(i) = CurrentTable.Rows(CurrentTable.TopRow)(i)
    Next
Next

--  作者:有点蓝
--  发布时间:2018/8/17 10:03:00
--  
Dim t As Table = CurrentTable

For i As Integer = t.LeftCol To t.RightCol
If t.Cols(i).IsDate = False Then
    For j As Integer = t.TopRow + 1 To t.BottomRow
        t.Rows(j)(i) = t.Rows(t.TopRow)(i)
    Next
end if
Next