以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  列属性排序  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159291)

--  作者:采菊东篱下
--  发布时间:2020/12/21 11:58:00
--  列属性排序
  我想车辆基本信息表中的巷下拉选项自动安数字升序排序,如果在表巷中使用软件自带的升降,空行走到上第一行了,通常添加数据是在最后一行添加的,用升降功能,我使用一、二、三、四,它也无法实现排序,顺序全乱了,但门牌地址都通常用这些数字表示。系统的数据录入是不断在最后一行录入的,但要求无论前面有无新字,车辆基本信息表中的巷下拉选项自动安数字升序排序,请教如何实现?
密码:888888
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理.foxdb


--  作者:有点蓝
--  发布时间:2020/12/21 13:07:00
--  
中文默认是按照拼音排序的,如果要按照数值排序,需要增加一个整数排序列,手工添加阿拉伯数字进行排序

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

--  作者:采菊东篱下
--  发布时间:2020/12/21 13:31:00
--  
列属性中我设置了不允许直接录入,一旦选错想删除又无法操作,如何在选项中添加一项空项,点此空项即显示该单元格为空。
[此贴子已经被作者于2020/12/21 13:41:11编辑过]

--  作者:有点蓝
--  发布时间:2020/12/21 13:48:00
--  
删除单元格按delete键即可
--  作者:采菊东篱下
--  发布时间:2020/12/21 14:13:00
--  
你这种排序方式,序号会随时变,因为会随时添加或删除一行,就象会计凭证一样,假如删除一份会计凭证,凭证号要通过按钮重新生成一次,我看过一下流水账的设计程序,那是修改,如果是添加行,删除行,程序该是怎样?
[此贴子已经被作者于2020/12/21 14:13:18编辑过]

--  作者:有点蓝
--  发布时间:2020/12/21 14:58:00
--  
如果要按照行顺序,可以使用_sortkey列,或者_Identify列排序
--  作者:采菊东篱下
--  发布时间:2020/12/21 15:32:00
--  
它不是顺序的,有插入或删除行的。
--  作者:有点蓝
--  发布时间:2020/12/21 15:47:00
--  
可以使用_sortkey列,或者_Identify列排序
--  作者:采菊东篱下
--  发布时间:2020/12/22 20:24:00
--  
行了
Dim dr As DataRow
dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
If dr Is Nothing Then \'如果是第一行,计算结存
e.DataRow("序号") = 1
dr = e.DataRow
End If
Dim drs As List(of DataRow) = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1
    drs(i)("序号") = drs(i-1)("序号") + 1
Next

--  作者:采菊东篱下
--  发布时间:2020/12/22 20:33:00
--  
我想最后的空行巷列为空,序号也为空,这样写报错了:
Dim dr As DataRow
dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
If dr Is Nothing Then \'如果是第一行,计算结存
    e.DataRow("序号") = 1
    dr = e.DataRow
End If
Dim drs As List(of DataRow) = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1
    drs(i)("序号") = drs(i-1)("序号") + 1
    If drs(i).IsNull("巷") Then
        drs(i)("序号") = Nothing
    End If
Next
[此贴子已经被作者于2020/12/22 20:37:28编辑过]