以文本方式查看主题 - 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=196244) |
|
-- 作者:zhangchi96 -- 发布时间:2025/4/11 9:20:00 -- 写一个复杂的下拉列表 1、新建三个组合框combobox,分别为 姓名框、出生年月框、进编年月框 2、有两个数据表:表1、表2,结构相同,都是职工的信息,里面含 姓名、出生年月、进编年月等,信息内容大部分相同,只有少部分不同 3、设计【姓名框】的下拉菜单,姓名为表2比表1多出的人员,原计划是先获得表1的所有姓名,再加上条件是:这些姓名不包含于表2的姓名中的部分,问题是这样只用姓名来排除,会把同姓名的部分遗漏 比如:表1中有姓名:张三,出生年月:201902,表2中新增了姓名:张三,出生年月:201903,这两个不是同一个人 请教:如何在 组合框的【姓名】textchanged中设置代码、在【出生年月】textchanged中设置代码、在【进编年月】textchanged中设置代码
|
|
-- 作者:有点蓝 -- 发布时间:2025/4/11 9:24:00 -- 使用下拉窗口,把姓名和出身日期(建议使用身份证号码)同时显示出来,类似:http://www.foxtable.com/webhelp/topics/2466.htm |
|
-- 作者:zhangchi96 -- 发布时间:2025/4/11 11:04:00 -- [此贴子已经被作者于2025/4/11 11:04:12编辑过]
|
|
-- 作者:zhangchi96 -- 发布时间:2025/4/11 11:08:00 -- Dim 姓名 As WinForm.ComboBox = e.Form.Controls("待添加姓名框") Dim cm/d As New SQ/LCom/ma/nd cm/d.Conn/ection/Name = "职工信息" cm/d.Com/mand/Text = "Sel/ect [姓名],[出生年月],[工龄起算],[进编年月],[姓名]+\'/\'+[出生年月]+\'/\'+[工龄起算]+\'/\'+[进编年月] As 职工名称 From {表2} Where 。。。 " Dim dt As Data/Table = cm/d.Ex/ecuteR/eader() ‘表1里也要定义一个【职工名称】 姓名.ComboList = dt.GetCom/boList/String( "姓名" ," 职工名称 not in (表1.。。。。。。) ", "姓名" ) 老师,我自己编了一个思路,请问,这个黄色部分怎么写?
|
|
-- 作者:有点蓝 -- 发布时间:2025/4/11 11:15:00 -- cm/d.Com/mand/Text = "Sel/ect [姓名],[出生年月],[工龄起算],[进编年月],[姓名]+\'/\'+[出生年月]+\'/\'+[工龄起算]+\'/\'+[进编年月] As 职工名称 From {表2} Where 职工名称 not in (select 职工名称 from {表1}) " |
|
-- 作者:zhangchi96 -- 发布时间:2025/4/12 16:18:00 -- 老师,您好! 本来我不是表1和表2,实际是一个表,一个是表中【年度】=2024的数据,一个是表中【年度】=2025的数据,我是为了提出问题更简单化这么说的,但就这么改变了说法,反而使得按上楼的思路变得不会写了,现贴个我自己写的代码,但明显运行慢了,因为是先加载了大量数据,然后再剔除无用的数据。 【就是找出2025年比2024年多出来的人员】
Dim cm/d As New S/Q/LCo/m/man/d cm/d.Co/nn/ec/ti/onN/ame = "补贴" cm/d.Co/m/ma/nd/Text = "Se/le/ct [教师姓名],[教师姓名]+[出生年月] As 教师名称1 From {发放名册} Whe/re 年度 = 2024 " Dim dt1 As Da/taT/able = cm/d.Exe/cut/eR/ea/der() cm/d.Com/ma/nd/Text = "Sel/ect [教师姓名],[教师姓名]+[出生年月] As 教师名称2 From {发放名册} Where 年度 = 2025 " Dim dt2 As Da/taT/able = cm/d.Ex/ec/uteR/ea/der() Dim s As String s = Dt1.Get/Co/mb/oLis/tString("教师名称1","").replace("|","\',\'") Dim 待添加教师 As Win/Form.Co/mboB/ox = e.Form.Con/trols("待添加教师姓名框") 待添加教师.Co/mboL/ist = Dt2.GetC/om/boLis/tStr/ing( "教师姓名" ," 教师名称2 not in (\'"& s &"\') " ,"教师姓名" ) 老师,我估计是改一下黄色的部分,但这方面确实不怎么会写,其他思路也做不起来,请帮忙给我改一下 ,写个完整的代码,特别感谢! [此贴子已经被作者于2025/4/12 16:22:28编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2025/4/12 16:33:00 -- cmd.CommandText = "Select [教师姓名],[教师姓名]+[出生年月] As 教师名称2 From {发放名册} as a Where 年度 = 2025 and not exist(select [教师姓名] from {发放名册} as b Where 年度 = 2024 and a.[教师姓名]=b.[教师姓名] and a.[出生年月]=b.[出生年月])" |
|
-- 作者:zhangchi96 -- 发布时间:2025/4/12 16:56:00 -- 提示 : 内容是 在 select 附近有语法错误 (另外:,[教师姓名]+[出生年月] As 教师名称2 这个语句是不是没有作用了,可以略去 ?)
[此贴子已经被作者于2025/4/12 17:03:16编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2025/4/12 17:06:00 -- …… {发放名册} as a Where 年度 = 2025 and not exists ( select [教师姓名] from {发放名册} a …… 可以略去
|
|
-- 作者:zhangchi96 -- 发布时间:2025/4/12 17:18:00 --
|