以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教如何判断所取值在列表项目中的位置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75250)

--  作者:lake163
--  发布时间:2015/10/1 11:50:00
--  请教如何判断所取值在列表项目中的位置

 

如何判断所取值在列表项目中的位置。

 

举例:

表A:有单位、科室、科室顺序  三列。

表B:有单位、科室名称  三列。

  科室名称为备注列,一个单位的所有科室名称均分行输入在科室名称列(各个单位都不一样),如:

       办公室

       会计室

       财务室

 

在表A的PrepareEdit 中写入相应代码,可以使得表A的“科室”列根据输入的单位及表B生成列表项目。

现在的要求是:根据“科室”列选择的内容,如“会计室”,在“科室顺”列中填入该室在列表项目中的顺序,即2。

请教老师如何操作。

 

(通过将科室名称全部拆分成行,可以做到。但工作中因单位数太多,为了代码项目的输入方便,仍想将一个单位的科室列表项目输入在一个单元格中)

[此贴子已经被作者于2015/10/1 15:17:16编辑过]

--  作者:sloyy
--  发布时间:2015/10/1 23:18:00
--  
这样处理相当麻烦,没看出有啥好处.
--  作者:lake163
--  发布时间:2015/10/2 10:25:00
--  
这样做的好处:(1)可以不用为“科室”单独建一张表;(2)输入、查看“代码项目”时都很方便,直接在一张表中进行即可。

呵呵,还有一个不是原因的原因:我购买的开发版还未到位,目前用的是试用版,表的总数已达限制,没法增加了。
[此贴子已经被作者于2015/10/2 10:28:20编辑过]

--  作者:游
--  发布时间:2015/10/2 10:51:00
--  

图片点击可在新窗口打开查看

 

 

1、以后公司每增加一个部门或部门改名(比如财务室升级为财务部),就得修改程序了。

 

 

2、试用版没有限制外部表的数量啊。


--  作者:lake163
--  发布时间:2015/10/3 8:27:00
--  
1、增加一个部门或部门改名,程序不用改,需要修改相关数据;采用其他方式也必然如此。

2、如果在外部数据源中已经创建好,没有数量限制。但如果在狐表中创建外部表,仍有限制。
--  作者:大红袍
--  发布时间:2015/10/4 11:05:00
--  

参考

 

图片点击可在新窗口打开查看

 

http://www.foxtable.com/help/topics/1523.htm

 


--  作者:lake163
--  发布时间:2015/10/4 11:20:00
--  
谢谢大红袍老师的关注!
在老师的帮助下,生成列表项目的多种方法都已掌握,包括上表中的方式、使用GetComboListString、目录树方式以及帮助文件中提到的弹出窗口模糊输入。

现在的想法是,使用上表的形式时,如何判断所取列表值在列表项目中的位置。
比如:在表B的第一列,输入“项目6”,这时我如何得到项目6在列表项目中的顺序2。

之所以这样考虑,是因为列表项目(科室)是受(单位)影响的,如果单独为(科室)建立一个表,然后预先设置顺序是可以做到的。
但为简化输入,想将(科室)列表项目与(单位)基本信息放在一个表中。

[此贴子已经被作者于2015/10/4 11:33:52编辑过]

--  作者:大红袍
--  发布时间:2015/10/4 12:40:00
--  

去编写datacolchanged事件,

 

Dim ary() As String = DataTables("表A").GetComboListString("第一列").split("|")
msgbox(array.indexOf(ary,"2"))


--  作者:lake163
--  发布时间:2015/10/4 14:40:00
--  

谢谢!我的需求可能有点古怪。

一般来说,是根据数组的序号,取数组的值。我的需求简化后,实际上就是根据值,确定其在数组里的序号,有两个步骤:

一、根据“列表项目”列生成数组,假如为 ar 

       Dim ar As String  =  DataTables("列表项目表").find(.....)            例中:表=表A,列=第一列

二、根据当前的值,假如:  Dim dw As String = e.dataRow("第一列")
    需要根据DW的值,确定基在AR中的序号。

 

  上楼中的两行代码,好象不能达到目的。

 


 

[此贴子已经被作者于2015/10/4 14:42:29编辑过]

--  作者:大红袍
--  发布时间:2015/10/7 11:45:00
--  

Dim ary() As String = ar.Split("|")
msgbox(array.indexOf(ary,dw))