ComboBox下拉菜单怎么做?

NHGIGGS 2009-03-25 03:24:10
小弟用的是VB6.0。在Frm_day中有一个ComboBox控件,ACCESS数据库中有一张名为bb的表,表的结构如下:

编号 班别

1 早班

2 中班

3 晚班

希望实现的功能:
当下拉ComboBox的时候,读取ACCWSS中的数据,使其出现:早班 中班 晚班三个选项,然后选取其中的一个,按“确定”按钮进入下一张FORM 。
...全文
1198 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcfcfc1013cs 2010-03-19
  • 打赏
  • 举报
回复
将combobox控件的style属性设置为2 - dropdown list后,combo控件中的txt值就不能再编程过程中改变了,它只显示combo1.但是我想显示“请选择班级”。
NHGIGGS 2009-03-26
  • 打赏
  • 举报
回复
问题完满解决,OF123的代码正确,谢谢!同时感谢左手的一直支持。
马上结帖!
of123 2009-03-26
  • 打赏
  • 举报
回复

这个容易:

Private Sub cmdOK_Click()
If Combo1.ListIndex = -1 Thne
MsgBox "请选择班别"
Exit Sub
End If

......
End Sub

还有更简单的:
在FORM_LOAD中加入代码:
Combo1.AddItem "早班"
Combo1.AddItem "中班"
Combo1.AddItem "晚班"
Combo1.ListIndex = 0
饮水需思源 2009-03-26
  • 打赏
  • 举报
回复
Private Sub Command2_Click() 
if combobox.text="" then
msgbox "请选择班别!",48,"提示"
exit sub
end if
Unload Me
frm_main.Show
End Sub
NHGIGGS 2009-03-26
  • 打赏
  • 举报
回复
左手兄,很多谢你对我的关注,在此深表感谢。
style属性设置为2,内容不能修改。这个知道。

但现在我发现就算我在ComboBox中什么也不选,也照样可以按“确定”进入下一张FORM。

我想实现的功能是:
[color=#FF0000]在Combo下拉出现的3个选项中一定要选择其中一个才能过。否则弹出提示:“请选择班别”。[/color]

请问有可能实现吗?有劳!
JIACISCO 2009-03-26
  • 打赏
  • 举报
回复
这个问题我也 很想知道,我也是选择2,就是不能修改内容。。
饮水需思源 2009-03-26
  • 打赏
  • 举报
回复
将combobox控件的style属性设置为2 - dropdown list
这样就不能修改内容,只能从控件中选择
NHGIGGS 2009-03-26
  • 打赏
  • 举报
回复
问题2已经解决。

问:
怎样令Combo的内容不能为空?
NHGIGGS 2009-03-25
  • 打赏
  • 举报
回复
我在FORM_LOAD中加入代码:
Combo1.AddItem "早班"
Combo1.AddItem "中班"
Combo1.AddItem "晚班"

基本可实现我所要的功能,但问题又来了.
在Combo中选择的内容可以手动删除,Combo在没有任何内容的状态下可以进入下一张FORM。

问:
1、怎样可以令Combo的内容不为空?
2.怎样令Combo选择的内容不能修改?(如将locked属性选择为True,则下拉菜单不能选择,所以此方法也行不通。)


各位有什么好办法吗?谢谢!
rmini 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Leftie 的回复:]
VB codeprivate sub frm_day_load()
dim rs as new adodb.recordset
dim i as long
rs.open "select 班别 from bb",conn,adopenkeyset,adlockreadonly
combobox.clear
for i =1 to rs.recordcount
combobox.additem rs.fields("班别").value & ""
rs.movenext
next i
rs.close
end sub
[/Quote]
支持
yachong 2009-03-25
  • 打赏
  • 举报
回复
最好不要用rs.RecordCount属性判断记录集是否为空
更何况你的cn.CursorLocation = adUseServer


if rs.eof and rs.bof then
空的记录集
endif


if not (rs.eof and rs.bof) then
记录集不为空
endif
NHGIGGS 2009-03-25
  • 打赏
  • 举报
回复
以下是我的整段代码:
Dim cn As New adodb.Connection
Dim rs As New adodb.Recordset

Private Sub Command1_Click()
Unload Me
frm_data.Show
frm_main.Hide
End Sub

Private Sub Command2_Click()
Unload Me
frm_main.Show
End Sub

Private Sub Form_Load()
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\Data.Mdb" & " ;Jet OLEDB:Database password=123456"
cn.Open ConStr
cn.CursorLocation = adUseServer
rs.Open "Select * from rq", cn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
cn.Execute "Update rq set xtrq=#" & Format(Now, "yyyy-m-d") & "#"
Label_date.Caption = rs("xtrq")
End If
rs.Close
cn.Close
Exit Sub
End Sub

请各位朋友帮忙看一下到底是哪里出的问题,谢谢~~~
NHGIGGS 2009-03-25
  • 打赏
  • 举报
回复
2楼朋友的方法不能换行。

左手兄的方法没有作用,不知是不是我的ACCESS数据库设置了密码导致不能读取。
饮水需思源 2009-03-25
  • 打赏
  • 举报
回复
private sub frm_day_load()
dim rs as new adodb.recordset
dim i as long
rs.open "select 班别 from bb",conn,adopenkeyset,adlockreadonly
combobox.clear
for i =1 to rs.recordcount
combobox.additem rs.fields("班别").value & ""
rs.movenext
next i
rs.close
end sub
slowgrace 2009-03-25
  • 打赏
  • 举报
回复
如果只有3行,不需要用数据库。

直接在combox属性页设置 行来源类型 为 值列表
然后在 行来源 里 写:1;早班;2;中班;3;晚班;
列数设为2

无需编码
NHGIGGS 2009-03-25
  • 打赏
  • 举报
回复
SORRY,将ACCESS打成了ACCWSS了。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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