以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数组中的顺序号如何提出来使用? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126655) |
||||
-- 作者:旭日生 -- 发布时间:2018/10/26 7:59:00 -- 数组中的顺序号如何提出来使用?
此主题相关图片如下:1.png |
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 9:13:00 -- 没看懂。上面说的“数组”具体指什么内容 |
||||
-- 作者:旭日生 -- 发布时间:2018/10/26 14:28:00 -- 请看DataChanged事件中代码。因为第一列中部分需要使用序号排序,其它部分需要用拼音首字母排序。所以,我感觉需要使用数组解决。如果有其它方法解决,也可以的。 Select Case e.DataCol.Name Case "第一列" If e.DataRow.IsNull("第一列") Then e.DataRow("第一列缩写") = Nothing Else e.DataRow("第一列缩写") = GetPinYin(e.DataRow("第一列"), 1) End If Dim Names() As String = {"甲甲","甲乙","甲丙","甲丁"} For i As Integer = 0 To Names.Length - 1 e.DataRow("第一列代码") = Format(Array.Indexof(Names,Names(i)),"000") & "-" & e.DataRow("第一列缩写") \'如何编写类似上面这行代码,实现从上面names集合中,根据第一列填入的内容,如“甲甲”、“甲乙”、.......,自动写入对应的顺序号001、002呢? \' msgbox(Array.Indexof(Names,Names(i))) Next End Select [此贴子已经被作者于2018/10/26 14:34:05编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 14:33:00 -- 序号根据什么规则生成?按录入顺序?那直接使用_Identify排序不就行了 |
||||
-- 作者:旭日生 -- 发布时间:2018/10/26 14:37:00 -- 这个序号只能由自己规定,放在一个集合中。一般是根据实际习惯排序的。如省委、省委办公厅、省政府、省政府办公厅等等。其它普通单位则根据拼音首字母排序即可。 |
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 14:42:00 -- 序号只能由自己规定:有没有规律?如果没有,不可能通过代码生成。如果是通过拍脑袋决定的,只能手工录入 |
||||
-- 作者:旭日生 -- 发布时间:2018/10/26 14:52:00 -- 规律是这样的: 1、已知顺序的单位事先放在一个集合中,由其在集合中的顺序号决定。这个规律由人提前决定,能提取出顺序号即可。但我不知道怎么根据第一列的具体内容(如“甲甲”、“甲乙”.....),提取集合中顺序号写入?2、其它单位由拼音首字母决定。这首字母就是规律。这个好弄些。
|
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 15:17:00 -- 这个规律由人提前决定 -- 这就不叫规律,就是拍脑袋决定的。 如果是按照第一列录入的顺序,就是直接使用_Identify排序
|
||||
-- 作者:旭日生 -- 发布时间:2018/10/26 15:33:00 -- 一个人为规定的集合中顺序号,难道不能提取出来使用?之所以需要这样,是因为有的时候需要由用户自行添加,不得已为用户规定了这样的规律。否则,做成的表并不全面。 所以,我的设计思路是这样的:
1、如果第一列输入的内容在集合Names中,则提取出其在集合中的顺序号,填入”第一列代码“中。 2、如果第一列输入的内容不在集合Names中,则提取首字母填入”第一列代码“中。 |
||||
-- 作者:有点蓝 -- 发布时间:2018/10/26 16:00:00 -- Select Case e.DataCol.Name Case "第一列" If e.DataRow.IsNull("第一列") Then e.DataRow("第一列缩写") = Nothing Else e.DataRow("第一列缩写") = GetPinYin(e.DataRow("第一列"), 1) End If Dim Names() As String = {"甲甲","甲乙","甲丙","甲丁"} Dim idx As Integer = Array.Indexof(Names,e.DataRow("第一列")) e.DataRow("第一列代码") = Format(idx,"000") & "-" & e.DataRow("第一列缩写") End Select
|