用数据库字段填充组合框,各位帮忙看看
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim cm As New ADODB.Command
Private Sub Form_Load()
'这几段内容都差不多,有没有哪位知道更方便的实现方法
'第一段
cn.ConnectionString = "provider=sqloledb;server=1SG37FPBJ5G5NDX\MYSQLSERVER;database=lab;uid=冬;pwd=123456"
cn.Properties("Prompt") = adPromptComplete
cn.Open
rs.ActiveConnection = cn
rs.Open "select distinct 品名 from 检验项目", , adOpenDynamic, , adCmdText
Do Until rs.EOF
'用品名字段填充组合框combpm
'我用Additem填充组合框的时候,组合框顶部是空白的,
'要点下拉按钮才出来填充字段的内容,
'我想让组合框一出来就能看见填充字段的内容该怎么办
combpm.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
'第二段
cm.ActiveConnection = cn
cm.CommandText = "select distinct 规格 from 检验项目 where 品名=?"
cm.CreateParameter , adChar, adParamInput, 30
cm.Parameters(0).Value = combpm.Text
Set rs = cm.Execute
Do Until rs.EO
'用规格字段填充组合框combgg
combgg.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
'第三段
cm.CommandText = "select distinct 方法依据 from 检验项目 where 品名=? and 规格=?"
'cm.CreateParameter , adChar, adParamInput, 30
'上面这个参数如果与上一段的那个参数0一样,也是, adChar, adParamInput, 30
'需不需要再重新创建一下,还是只要简单的重新赋值就可以了
cm.CreateParameter , adChar, adParamInput, 20
'cm.Parameters(0).Value = combpm.Text
'如果不需要重新创建,这一段的参数0我还想赋给它上一段参数0的值,要不要重新赋值
cm.Parameters(1).Value = combgg.Text
Set rs = cm.Execute
Do Until rs.EOF
'用方法依据字段填充组合框combffyj
combffyj.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
'第四段
cm.CommandText = "select distinct 检验项目 from 检验项目 where 品名=? and 方法依据=?"
'cm.CreateParameter , adChar, adParamInput, 30
'cm.CreateParameter , adChar, adParamInput, 20
cm.CreateParameter , adChar, adParamInput, 30
'cm.Parameters(0).Value = combpm.Text
'cm.Parameters(1).Value = combgg.Text
cm.Parameters(2).Value =combffyj .Text
'一运行就报错,Run-time error "3265" 在对应所需名称或序数的集合中,未找到项目.
'按调试按钮后,黄底显示"cm.Parameters(2).Value =combffyj .Text"
'如果把这一行删掉,下一行就黄底显示
Set rs = cm.Execute
Do Until rs.EOF
'用检验项目字段填充组合框combjyxm
combjyxm.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
cm.CommandText = "select distinct 质量标准 from 检验项目 where 品名=? and 规格=? and 方法依据=?and 检验项目=?"
'cm.CreateParameter , adChar, adParamInput, 30
'cm.CreateParameter , adChar, adParamInput, 20
'cm.CreateParameter , adChar, adParamInput, 30
cm.CreateParameter , adChar, adParamInput, 30
'cm.Parameters(0).Value = combpm.Text
'cm.Parameters(1).Value = combgg.Text
'cm.Parameters(2).Value = combffyj.Text
cm.Parameters(3).Value = combjyxm.Text
Set rs = cm.Execute
txtzlbz.Text = RTrim(rs.Fields(0))
'用质量标准字段填充文本框txtzlbz
rs.Close
End Sub
问题点数:10、回复次数:5Top
1 楼hicksys(乡下人)回复于 2005-08-02 00:31:26 得分 5
做成一个函数,然后调用喽!方便一点,不过效率一下~Top
2 楼laolv7403(无名氏)回复于 2005-08-02 14:46:57 得分 0
各位帮帮忙Top
3 楼wenhongL(三脚猫)回复于 2005-08-02 15:01:10 得分 0
你这样好像不能实现你想要的功能!Top
4 楼wenhongL(三脚猫)回复于 2005-08-02 15:06:21 得分 5
你的意思应该是这样吧!没有测试!!!
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim cm As New ADODB.Command
Private Sub combpm_Change()
cm.CommandText = "select distinct 规格 from 检验项目 where 品名=?"
cm.CreateParameter , adChar, adParamInput, 30
cm.Parameters(0).Value = combpm.Text
Set rs = cm.Execute
Do Until rs.EO
'用规格字段填充组合框combgg
combgg.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
End Sub
Private Sub combgg_Change()
'第三段
cm.CommandText = "select distinct 方法依据 from 检验项目 where 品名=? and 规格=?"
'cm.CreateParameter , adChar, adParamInput, 30
'上面这个参数如果与上一段的那个参数0一样,也是, adChar, adParamInput, 30
'需不需要再重新创建一下,还是只要简单的重新赋值就可以了
cm.CreateParameter , adChar, adParamInput, 20
'cm.Parameters(0).Value = combpm.Text
'如果不需要重新创建,这一段的参数0我还想赋给它上一段参数0的值,要不要重新赋值
cm.Parameters(1).Value = combgg.Text
Set rs = cm.Execute
Do Until rs.EOF
'用方法依据字段填充组合框combffyj
combffyj.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
End Sub
Private Sub combffyj_Change()
'第四段
cm.CommandText = "select distinct 检验项目 from 检验项目 where 品名=? and 方法依据=?"
'cm.CreateParameter , adChar, adParamInput, 30
'cm.CreateParameter , adChar, adParamInput, 20
cm.CreateParameter , adChar, adParamInput, 30
'cm.Parameters(0).Value = combpm.Text
'cm.Parameters(1).Value = combgg.Text
cm.Parameters(2).Value = combffyj.Text
'一运行就报错,Run-time error "3265" 在对应所需名称或序数的集合中,未找到项目.
'按调试按钮后,黄底显示"cm.Parameters(2).Value =combffyj .Text"
'如果把这一行删掉,下一行就黄底显示
Set rs = cm.Execute
Do Until rs.EOF
'用检验项目字段填充组合框combjyxm
combjyxm.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
End Sub
Private Sub combjyxm_Change()
cm.CommandText = "select distinct 质量标准 from 检验项目 where 品名=? and 规格=? and 方法依据=?and 检验项目=?"
'cm.CreateParameter , adChar, adParamInput, 30
'cm.CreateParameter , adChar, adParamInput, 20
'cm.CreateParameter , adChar, adParamInput, 30
cm.CreateParameter , adChar, adParamInput, 30
'cm.Parameters(0).Value = combpm.Text
'cm.Parameters(1).Value = combgg.Text
'cm.Parameters(2).Value = combffyj.Text
cm.Parameters(3).Value = combjyxm.Text
Set rs = cm.Execute
txtzlbz.Text = RTrim(rs.Fields(0))
'用质量标准字段填充文本框txtzlbz
rs.Close
End Sub
Private Sub Form_Load()
'这几段内容都差不多,有没有哪位知道更方便的实现方法
'第一段
cn.ConnectionString = "provider=sqloledb;server=1SG37FPBJ5G5NDX\MYSQLSERVER;database=lab;uid=冬;pwd=123456"
cn.Properties("Prompt") = adPromptComplete
cn.Open
rs.ActiveConnection = cn
rs.Open "select distinct 品名 from 检验项目", , adOpenDynamic, , adCmdText
Do Until rs.EOF
'用品名字段填充组合框combpm
'我用Additem填充组合框的时候,组合框顶部是空白的,
'要点下拉按钮才出来填充字段的内容,
'我想让组合框一出来就能看见填充字段的内容该怎么办
combpm.AddItem (RTrim(rs.Fields(0)))
rs.MoveNext
Loop
cm.ActiveConnection = cn
End Sub
Top
5 楼laolv7403(无名氏)回复于 2005-08-03 15:33:30 得分 0
对,楼上理解的差不多,只是最后的Form_load()用我写的代替,意思就全了。
我想问的问题是:
1、Form_load()的这几段内容基本差不多,有没有更方便的实现方法,还是要重复代码?如果用函数的话,每一段的内容都要多加一个参数。
2、我用Additem填充组合框的时候,组合框顶部是空白的,要点下拉按钮才出来填充字段的内容,我想让组合框一出来就能看见填充字段的内容该怎么办
3、第三段中:上面这个参数如果与上一段的那个参数0一样,也是, adChar, adParamInput, 30,需不需要再重新创建一下,还是只要简单的重新赋值就可以了。如果不需要重新创建,这一段的参数0我还想赋给它上一段参数0的值,要不要重新赋值
4、第四段中:一运行就报错,Run-time error "3265" 在对应所需名称或序数的集合中,未找到项目.按调试按钮后,黄底显示"cm.Parameters(2).Value =combffyj .Text"。如果把这一行删掉,下一行就黄底显示。到底错在哪儿?是不是不支持这么多的参数?
Top




