求助组合框的问题

baojianwen 2009-08-28 04:06:29
人员.dbf

班别(c2) 姓名(c6)
甲 张三丰
甲 李四民
甲 王五
乙 啊毛
乙 啊狗
乙 朱民
丙 啊三
丙 郝明明
丙 周章
丁 王国
丁 小李子
丁 燕子

我在"表单1"中建立combo1组合框控件,想达到点击控件时显示与登录班别有关的所有姓名。比如:登录班别为"甲",则combo1的记录原为"张三丰、李四民、王五",使达到效果是点击该控件时下面有这三个人可供选择。

我首先在主程序中建立了公共变量yhm,然后在用户登录时赋值。接下来"表单1"的init代码如下:
thisform.combo1.rowsourcetype=3 && 记录原类型为SQL语句
select 姓名 from 人员 where 班别="+yhm+" into cursor temp

(上面是否对、接下来怎么做我没办法了。请老师指点,谢谢!我查了身边的几本书都没有这方面的例子。最好能在关键的语句后注解一下便于理解。)

...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baojianwen 2009-08-29
  • 打赏
  • 举报
回复
谢谢老师!很高兴,今天学到了不少知识点。

"十豆三"老师的建议很好,不过这个软件是我自己单位工段里用的,考虑到直接用姓名比较直观,另外工段里人员总共才20多人,姓名重复的几率不大。
十豆三 2009-08-29
  • 打赏
  • 举报
回复
*如果你的变量 yhm 是班别的话,Select 语句更改为:
Select 姓名 Into Cursor T1 From 人员 Where Alltrim(班别)==Alltrim(yhm)
十豆三 2009-08-29
  • 打赏
  • 举报
回复
在 Combo1 的 Init 事件写代码:

* 你的变量 yhm 应该是登录用户的姓名吧,建议用编号,因为姓名有可能会重复。
This.Clear
This.RowSourceType=0
This.RowSource=Null
Select 姓名 Into Cursor T1 From 人员 Where 班别 In (Select 班级 From 人员 Where Alltrim(姓名)==Alltrim(yhm))
Select T1
Scan
This.AddItem(姓名)
Endscan
都市夜猫 2009-08-29
  • 打赏
  • 举报
回复
你的注释没有问题

如果 yhm 不是用户名而是班级的话,仍像你原来那样,在 表单.init 中写两行就可以了:
This.combo1.RowSourceType = 3
This.combo1.RowSource = 'select 姓名 form 人员 where 班级==' + alltrim(yhm) + ' into cursor temp'
baojianwen 2009-08-29
  • 打赏
  • 举报
回复
谢谢两位老师的指导. 我yhm是班别. 以下我的注解是否对?还请帮助一下,再次感谢.
combo1的init代码:
This.Clear && 首先清除combo1的记录
This.RowSourceType=0 && 记录源类型设为0-无,即:运行时使用additem和addlistitem方法加入
This.RowSource=Null && 记录源设为空
Select 姓名 Into Cursor T1 From 人员 Where Alltrim(班别)==Alltrim(yhm)
Select T1
* 以下为用循环扫描方式将T1中的姓名添加到组合框内
Scan
This.AddItem(姓名)
Endscan

看来这例的关键是用了AddItem,那么addlistitem的作用是什么呢?在这例中能否使用?

都市夜猫 2009-08-28
  • 打赏
  • 举报
回复
如果 yhm 代表的是登陆用户名,也就是“人员”表中“姓名”字段,则改一下 sql 语句即可

select 姓名 from 人员 where 班别 in (select 班级 from 人员 where allt(姓名)==allt(yhm)) into cursor temp

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧