'初始化“职务”组合框的值
Private Sub LoadZwCombo()
    If recZw.State = 1 Then recZw.Close
    recZw.CursorLocation = adUseClient
    recZw.Open "select * from 职务信息 order by 职务信息", adoCon, adOpenKeyset, adLockPessimistic
    cobZw.Clear
    If recZw.RecordCount > 0 Then
        recZw.MoveFirst
        For i = 0 To recZw.RecordCount - 1
            cobZw.AddItem recZw!职务信息, i
            recZw.MoveNext
        Next
    End If
    cobZw.AddItem "新建...", 0
End Sub'“学历信息”新建记录
Private Sub cobXl_Click()
    Dim strTmp As String
    If Trim(cobXl.Text) = "新建..." Then
        '下面是调用另一个窗体,会返回一个字符串的值
        strTmp = frm基本信息_新建.LoadData("学历信息")
        LoadXlCombo
    End If
    cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
End Sub如上的这两段代码中,为什么在第二段代码的CobXl.Text=strTmp这句语句就是执行后为空白呢?strTmp的值通过调试来观察也是有值的,但为什么组合框中的值就是为空呢?
如果我把第一段代码的cobXl.clear 这句代码去掉,就可以正常显示了,这是组合框的BUG还是我使用错误了呢?各位高手帮忙解答一下吧!

解决方案 »

  1.   

    输错了,上面第一段代码中的CobZw应该为cobXl的,我拷错了!SORRY
      

  2.   

    第一段代码应为:
    '初始化“学历”组合框的值
    Private Sub LoadXlCombo()
        If recXl.State = 1 Then recXl.Close
        recXl.CursorLocation = adUseClient
        recXl.Open "select * from 学历信息 order by 学历信息", adoCon, adOpenKeyset, adLockPessimistic
        cobXl.Clear
        If recXl.RecordCount > 0 Then
            recXl.MoveFirst
            For i = 0 To recXl.RecordCount - 1
                cobXl.AddItem Trim(recXl!学历信息), i
                recXl.MoveNext
            Next
        End If
        cobXl.AddItem "新建...", 0
    End Sub
      

  3.   

    你控件的style设置的是哪一个啊
      

  4.   

    主要是你的cobXl_Click里面的代码有问题,因为你在后面加上一句cobXl.Text = strTmp,不知道是cob的bug还是什么原因,在这个事件里这样赋值是不可以的。如果你要实现这个功能的话,只能用Combo1.ListIndex = index进行赋值,而且你还要设置一个模块变量mbleJudge,来控制这个click只执行一次,因为Combo1.ListIndex = index这句话是会重新调用click事件的,建议不要在click里对控件赋值
      

  5.   

    '初始化“职务”组合框的值
    Private Sub LoadZwCombo()
        If recZw.State = 1 Then recZw.Close
        recZw.CursorLocation = adUseClient
        recZw.Open "select * from 职务信息 order by 职务信息", adoCon, adOpenKeyset, adLockPessimistic    If recZw.RecordCount > 0 Then
            for i=recZw.RecordCount - 1 to 1 step -1
                cobZw.RemoveItem i
            next 
            recZw.MoveFirst
            For i = 0 To recZw.RecordCount - 1
                cobZw.AddItem recZw!职务信息, i
                recZw.MoveNext
            Next
        else
            cobZw.AddItem "新建...", 0
        End If
    End Sub'“学历信息”新建记录
    Private Sub cobXl_Click()
        Dim strTmp As String
        If Trim(cobXl.Text) = "新建..." Then
            '下面是调用另一个窗体,会返回一个字符串的值
            strTmp = frm基本信息_新建.LoadData("学历信息")
            LoadXlCombo
        End If
        cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
    End Sub
      

  6.   

    '初始化“职务”组合框的值
    Private Sub LoadZwCombo()
        If recZw.State = 1 Then recZw.Close
        recZw.CursorLocation = adUseClient
        recZw.Open "select * from 职务信息 order by 职务信息", adoCon, adOpenKeyset, adLockPessimistic    If recZw.RecordCount > 0 Then
            for i=recZw.RecordCount - 1 to 1 step -1
                cobZw.RemoveItem i
            next 
            recZw.MoveFirst
            For i = 0 To recZw.RecordCount - 1
                cobZw.AddItem recZw!职务信息, i+1
                recZw.MoveNext
            Next
        else
            cobZw.AddItem "新建...", 0
        End If
    End Sub'“学历信息”新建记录
    Private Sub cobXl_Click()
        Dim strTmp As String
        If Trim(cobXl.Text) = "新建..." Then
            '下面是调用另一个窗体,会返回一个字符串的值
            strTmp = frm基本信息_新建.LoadData("学历信息")
            LoadXlCombo
        End If
        cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
    End Sub
    你可以运行一下看看
      

  7.   

    '初始化“职务”组合框的值
    Private Sub LoadZwCombo()
        If recZw.State = 1 Then recZw.Close
        recZw.CursorLocation = adUseClient
        recZw.Open "select * from 职务信息 order by 职务信息", adoCon, adOpenKeyset, adLockPessimistic
        
        if cobZw.listcount <=0 then
            cobZw.AddItem "新建...", 0
        end if
      
        If recZw.RecordCount > 0 Then
            for i=recZw.RecordCount - 1 to 1 step -1
                cobZw.RemoveItem i
            next 
            recZw.MoveFirst
            For i = 0 To recZw.RecordCount - 1
                cobZw.AddItem recZw!职务信息, i+1
                recZw.MoveNext
            Next
        End If
    End Sub'“学历信息”新建记录
    Private Sub cobXl_Click()
        Dim strTmp As String
        If Trim(cobXl.Text) = "新建..." Then
            '下面是调用另一个窗体,会返回一个字符串的值
            strTmp = frm基本信息_新建.LoadData("学历信息")
            LoadXlCombo
        End If
        cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
    End Sub
      

  8.   

    '初始化“职务”组合框的值
    Private Sub LoadZwCombo()
        If recZw.State = 1 Then recZw.Close
        recZw.CursorLocation = adUseClient
        recZw.Open "select * from 职务信息 order by 职务信息", adoCon, adOpenKeyset, adLockPessimistic
        
        if cobZw.listcount <=0 then
            cobZw.AddItem "新建...", 0
        end if
      
        If recZw.RecordCount > 0 Then
            if cobZw.listcount >1 then
                for i=recZw.RecordCount - 1 to 1 step -1
                    cobZw.RemoveItem i
                next 
            end if
            recZw.MoveFirst
            For i = 0 To recZw.RecordCount - 1
                cobZw.AddItem recZw!职务信息, i+1
                recZw.MoveNext
            Next
        End If
    End Sub'“学历信息”新建记录
    Private Sub cobXl_Click()
        Dim strTmp As String
        If Trim(cobXl.Text) = "新建..." Then
            '下面是调用另一个窗体,会返回一个字符串的值
            strTmp = frm基本信息_新建.LoadData("学历信息")
            LoadXlCombo
        End If
        cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
    End Sub
      

  9.   

    毛病出在你的Click事件执行了两次。
    第一次是选择“新建”值触发click,你的代码将其替换为strTmp取回的值。此时因为你的赋值又一次触发click事件,因为此时Trim(cobXl.Text) <> "新建...",你的代码不执行if中的取值代码,strTmp当然是空字符串。而你又用strTmp给cobXl.Text赋了值,所以显示为空。解决办法:
    1 将strTmp定义为窗体级变量。代码不变。或者
    2 代码如下改动。Trim(cobXl.Text) <> "新建..."时不赋值。Private Sub cobXl_Click()
        Dim strTmp As String
        If Trim(cobXl.Text) = "新建..." Then
            '下面是调用另一个窗体,会返回一个字符串的值
            strTmp = frm基本信息_新建.LoadData("学历信息")
            LoadXlCombo
        cobXl.Text = strTmp     '我要让组合框的值为上面的返回值
        End If
    End Sub