回 帖 发 新 帖 刷新版面

主题:求解关于两个combo的关联问题。

数据库中两个字段: 

A                 B 

a                 a1 
b                 a2 
c                 a3 
                  b1   
                  b2 


COMBO1绑定字段A, 
如果选择a的话,COMBO2的值就变为a1,a2,a3 
如果选择b的话,COMBO2的值就变为b1,b2 
要考虑到读数据库效率问题

我的程序中COMBO1是这样写的:
Private Sub Combo1_Change()
    Dim conn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim sql As String
    conn.Open "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=Data.mdbersist Security Info=False"
    sql = "select distinct 客户名称 from kehuname"
    rst.Open sql, conn, adOpenKeyset, adLockOptimistic
    Combo1.Clear
    Do While Not rst.EOF
        Combo1.AddItem (Trim(rst(0)))
        rst.MoveNext
    Loop
    rst.Close
    conn.Close

End Sub


求Combo2代码怎样写

回复列表 (共9个回复)

沙发

这个问题记得回答过的哟

板凳

前辈是给过思路,但原谅我是个新手,对前辈的思路一头雾水,故求源码。
另外,我觉得我的题目未解释明白,准确地说就是
数据库中有两个字段:客户名称和品种,a客户名下有a1品种,a2品种,a3品种,b客户名下有b1品种,b2品种,
客户名称    品种
a                 a1 
a                 a2 
a                a3 
 b                b1   
b                  b2 
COMBO1绑定字段客户名称, 
如果选择a的话,COMBO2的值就变为a1,a2,a3 
如果选择b的话,COMBO2的值就变为b1,b2 
要考虑到读数据库效率问题

3 楼


前辈是给过思路,但原谅我是个新手,对前辈的思路一头雾水,故求源码。
另外,我觉得我的题目未解释明白,准确地说就是
数据库中有两个字段:客户名称和品种,a客户名下有a1品种,a2品种,a3品种,b客户名下有b1品种,b2品种,
客户名称     品种
a    a1 
a    a2 
a     a3 
b    b1
b    b2 
COMBO1绑定字段客户名称, 
如果选择a的话,COMBO2的值就变为a1,a2,a3 
如果选择b的话,COMBO2的值就变为b1,b2 
要考虑到读数据库效率问题

4 楼

也谈两个问题:
一、你已经学到数据库了,在编程上已经不算一个新手了。我刚才查阅了记录,你一共发了30多个问题贴,但是对其他人哪怕是最简单的问题也没有回答过一贴。这样不好。网络上谁也不欠谁的,是相互帮助而已。
二、具体代码上次写的比较明白,当然效率是比较低,但思路清晰代码容易编写。另一个方法不太好理解,但效率较高。
“select 品种 from 表 where 品种 like ‘”& combo1.text & “%’”
将这个查询记录写入combo2即可。

5 楼

回复“ 老大徒伤悲 ”前辈:

1、您教育的对!在求知的过程中,我忽视了互联网的一个基本精神——互助精神,只求别人的帮助,而不去帮助别人,现在想起来也觉得自私,再次感谢“ 老大徒伤悲 ”前辈的教育,在以后的日子里,我将尽可能用我所知道的知识来帮助别人,就算是不成熟的答案,只要再看看前辈们的修正或指出,对自己来说也是种学习。

2、在前辈的指点下,我写出了combo2的代码,但运行结果似乎不是我所需的。现象是combo1下拉菜单中显示a和b两项,这是对的,但是当我在combo1下拉菜单中选择了a或b,在combo2的下拉菜单中都出现了所有的品种,即a1、a2、a3、b1、b2全部出现。我是希望当我在combo1下拉菜单中选择a时,在combo2的下拉菜单中只出现a1、a2、a3,选择b时,在combo2的下拉菜单中只出现b1、b2。

现将我的全部代码贴出,希望前辈看看我的代码哪里错了:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Combo1_Change()
   Dim conn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim sql As String
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Data.mdb;Persist Security Info=False"
    sql = "select distinct 客户名称 from kehuname"
    rst.Open sql, conn, adOpenKeyset, adLockOptimistic
    Combo1.Clear
    Do While Not rst.EOF
        Combo1.AddItem (Trim(rst(0)))
        rst.MoveNext
    Loop
    rst.Close
    conn.Close
End Sub

Private Sub Combo2_Change()
   Dim conn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim sql As String
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Data.mdb;Persist Security Info=False"
    sql = "select distinct 产品 from kehuname where 客户名称 like '" & Combo1.Text & "%'"
    rst.Open sql, conn, adOpenKeyset, adLockOptimistic
    Combo2.Clear
    Do While Not rst.EOF
        Combo2.AddItem (Trim(rst(0)))
        rst.MoveNext
    Loop
    rst.Close
    conn.Close
End Sub


Private Sub Command1_Click()
Unload Me
End Sub


Private Sub Form_Load()
来货.Move (Screen.Width - 来货.Width) / 2, (Screen.Height - 来货.Height) / 2 '窗口居中
  Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data.mdb;Persist Security Info=False"
  Adodc1.RecordSource = "select * from laihuo"
  Adodc1.Refresh
  Set DataGrid1.DataSource = Adodc1
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub

6 楼

把你的工程和数据库整个做一个压缩件,发给我看看。

7 楼

我的程序已经打包,挂在顶楼上,出问题的是在来货标签栏里的客户名与产品型号两个combo上,另外程序还有几个问题:
1、来货里增加新的内容在表内会显示为全空白,
2、来货标签栏里的程序设计的是如果点中表内的某一行,在下面的空白栏里就会显示相应的内容,但点中后客户名与产品型号两个combo上会是空白。
3、我希望在来货标签栏里点中表内的某一行并删除后,在下面的text栏、combo就会清空成空白,但实际情况是现实下一行数据。
请前辈一并帮我看看,谢谢!

8 楼

1、工程解压后,打开,出现“不能加载agentctl.dll”
2、干嘛每个过程都反复的建立连接、关闭连接?
3、关于combo1添加项目我认为应该在窗体装载中进行,combo2添加项目应该在combo1单击事件中进行……
4、就是关键的查询语句,我说
“select 品种 from 表 where 品种 like ‘”& combo1.text & “%’”
你要改成
"select distinct 产品 from kehuname where 客户名称 like '" & Combo1.Text & "%'"
我无话可说。
就这些。

9 楼

谢谢“ 老大徒伤悲 ”前辈,我提出的问题,在查询资料后,已经一一解决了,但还是要谢谢前辈给我解决问题的思路!

我来回复

您尚未登录,请登录后再回复。点此登录或注册