以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]狐爸、大神,小弟在此谢过! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40331) |
||||
-- 作者:qixianyi -- 发布时间:2013/9/15 20:21:00 -- [求助]狐爸、大神,小弟在此谢过! 狐表之所以为狐表,在于功能强大,上手容易。小弟在万般摸索与探寻中终于黔驴技穷, 故在此请教狐爸及各位大神,望狐爸及各位大神指点迷津,多多提拔,小弟在此不胜感激,深表涕零``` 目前正在做个数据效验程序。把EXCEL药品资料表导入狐表后做一些判断,判断是否符合要求, 比如: 需要找出下面不符合规范的数据: 1、药品名称相同,编号不相同的记录(要求名称相同,编号必须相同) 2、药品名称相同,规格序号相同的记录(要求名称相同,规格序号必须不相同,按1、2、3…编规格序号) 等等。 试验1:完美判断之表达式 以前用EXCEL整理可以用表达式判断,如:=IF(E2=E3,D2=D3),一列拉下来后错误的便显示FALSE,正确的显示TURE, 狐表貌似没有单元格的概念,表达式也不能这样弄,因此只要作罢,需求它法。 试验2:深奥语句之SQL 用SQL语句查询,把表导入到SQL后,一条语句便可以查询出错误记录,如:上面列出的要求1一条语句便能解决 select 编号,count(distinct 名称) num from 药品信息表 group by 编号 having count(distinct 名称)>1 按规范修改[表名]后用执行SQL查询内部数据源提示语法错误,问大神后得知内部数据源ACCSEE无法支持 count(distinct 名称) 建议换外部数据源,百度后得知可用select count(*) from (select distinct 名称 from {药品信息表})替代count(distinct 名称) 研究半天没有写出如此深奥之SQL语句,无果而终 试验3:退而求其次之筛选 通过高级筛选-显示重复值后只能显示重复名称,仍旧无法判断- -
此问题不解,令弟夜不能寐,饭不能吃,终日思索,惶恐不安。 愿各位大神以博学之才华,精艺之狐表为小弟指出明路!
最好是能根据上面要求自动生成编号和规格序号。 |
||||
-- 作者:程兴刚 -- 发布时间:2013/9/15 20:44:00 -- 明天提拔您当论坛总版主,但是您要养成提问附加实例文件的习惯,解决起来顺手一些,否则,您的问题会被一拖再拖。 |
||||
-- 作者:有点甜 -- 发布时间:2013/9/15 20:58:00 -- 看了楼主的问题,都是小问题。 问题1:使用筛选就行了,选中列,可以筛选出重复/冗余的行,你的问题使用两次筛选就行了。 问题2:同样,先选中名称列,筛选重复的记录,然后选中规格序号列,筛选重复的记录。
|
||||
-- 作者:程兴刚 -- 发布时间:2013/9/15 21:14:00 -- 给个文件,有更简单的处理办法,一次性到位! |
||||
-- 作者:qixianyi -- 发布时间:2013/9/15 22:51:00 -- 程大版,小弟初入江湖,不懂套路,深感抱歉,这就双手奉上!
|
||||
-- 作者:有点甜 -- 发布时间:2013/9/15 23:16:00 -- 第一个的筛选,在命令窗口里执行下面的代码 Dim t As Table = Tables("药品信息表") t.Filter = "" t.Select(0, 4) Syscmd.Filter.ShowSameValues() Dim idxs As String For Each r As Row In t.Rows Dim count As Integer = t.Compute("count(_Identify)", "名称 = \'" & r("名称") & "\' and 编号 = \'" & r("编号") & "\'") If count > 1 Then \'不算是编号不同 idxs += r("_Identify") & "," End If Next t.Filter = t.Filter & " and _Identify not in (" & idxs.Trim(",") & ")" |
||||
-- 作者:有点甜 -- 发布时间:2013/9/15 23:17:00 -- 第二个自己参考来做一下吧。 |
||||
-- 作者:程兴刚 -- 发布时间:2013/9/16 0:05:00 -- 楼主,您是需要重新编号,还是需要在已有的编号中调整编号:同一名称多个编号时取第一个吗?还是取最小编号? |
||||
-- 作者:程兴刚 -- 发布时间:2013/9/16 0:35:00 -- 一键统一所有规格序号和编号(编号按同名称最小编号)
Dim mc As String = DataTables("药品信息表").GetComboListString("名称")
楼主:您的名称有这样的:【0.9%氯化钠注射液】和【0.9%氯化纳注射】之类的错误问题需要您自己手工解决,类似的错误是录入时导致的。 [此贴子已经被作者于2013-9-16 0:58:43编辑过]
|
||||
-- 作者:程兴刚 -- 发布时间:2013/9/16 0:37:00 -- 这是楼上方法解决的文件:
|