以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [分享]插入行的代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5110) |
-- 作者:ssqq -- 发布时间:2009/11/23 21:48:00 -- [分享]插入行的代码 Dim dt As String = CurrentTable.Name Dim cname As String = "InsertRowTemp" If DataTables(dt).DataCols.Contains(cname) = False Then Datatables(dt).DataCols.Add(cname,GetType(Double)) Tables(dt).Cols(cname).Visible = False End If Dim ds As Integer = DataTables(dt).DataRows.Count Dim r As Integer For r = 0 To ds-1 Tables(dt).Rows(r)(cname) = r+1 Next Dim i As Integer = CurrentTable.Position If i < 0 Then CurrentTable.AddNew() ElseIf i = 0 Then Dim v As Double = CurrentTable.Current(cname) - 1 CurrentTable.AddNew()(cname) = v Else Dim v1 As Double = CurrentTable.Current(cname) Dim v2 As Double = CurrentTable.Rows(CurrentTable.Position - 1)(cname) CurrentTable.AddNew()(cname) = (v1+v2) / 2 End If CurrentTable.Sort = cname CurrentTable.Position = i |
-- 作者:实话实说 -- 发布时间:2009/11/24 6:04:00 -- 有个问题,插入后,如果重新排序后如何恢复呢,我测试了一下,插入后重新排序,将插入顺序打乱,再按升序或降序或取消都不能回到插入的顺序状态 |
-- 作者:ssqq -- 发布时间:2009/11/24 9:10:00 -- 插入排序是按照隐藏列“InsertRowTemp”的顺序排列,如果在打乱前没有再次插入,可使用此字段恢复排序。表中唯一可以无限向前恢复的字段就是_identify,但此字段是按照添加次序排序,不能保存插入顺序。插入顺序本来就是为了方便手工排序而定义的功能,不适合代码再次恢复排序 |
-- 作者:yangming -- 发布时间:2009/11/24 10:03:00 -- 其实,如果想保持插入前排序,只要增加一个辅助列,在插入前清空此列内容,重新加入一个序列数就可以,当然,这只能是一次恢复,不可能保持N次的 |
-- 作者:易服 -- 发布时间:2009/11/24 10:09:00 -- 保存后重新打开原来插入的行排在最后一行,这与增加行没有什么区别,因此插入行没有太大的意义 |
-- 作者:实话实说 -- 发布时间:2009/11/24 11:16:00 -- 我觉得这个插入按钮还是好用,为了保存插入的顺序,可以做个恢复按钮:Tables(“表A”).Sort = "InserRowTemp",只是要针对不同的表设计这个按钮 |