程序功能:用combo1显示某条件,按条件查询数据库的程序,代码如下:
Private Sub cmdOK_Click()    
查询条件   
    sQSql = "select dm_gl.mc,outh.outh_no,dm_kh.dm,dm_kh.mc,dm_ck.dm,dm_ck.mc,dm_wz.dm,dm_wz.mc,outh.sl,outh.out_danj,outh.o_zk,outh.o_zke,outh.jsfk,outh.jz,outh.yf,outh.bz from outh inner join dm_ywy on outh.ywman = dm_ywy.dm inner join dm_kh on outh.khdm = dm_kh.dm inner join dm_ck on outh.ckdm = dm_ck.dm inner join dm_wz on outh.wzdm = dm_wz.dm where outh.ywman = '" & Trim(Combo1(0).ItemData(Combo1(0).ListIndex)) & "'"       /是不是应该改这    If Trim(sQSql) = "" Then
        MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    Else
        frmInquireOYWY.txtSQL = sQSql
        
        Me.Hide
        frmInquireOYWY.Show 0
    End If
End Sub    调用窗体,代码:
Private Sub Form_Load()
    txtSQL = "select dm_ywy.dm,dm_ywy.mc from outh inner join dm_ywy on outh.ywman = dm_ywy.dm"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If Not mrc.EOF Then
        With mrc
            Do While Not .EOF
                Combo1(0).AddItem .Fields(1)
                Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0) 
                .MoveNext
            Loop
        End With
      
        Combo1(0).ListIndex = 0
    Else
        cmdOk.Enabled = False
    End If
    
    mrc.Close
    txtSQL = "select distinct datepart(yy,out_date) from outh"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    mrc.Close
End Sub请问Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0) 是什么意思?程序运行时,combo1中显示重复信息,应该如何修改?

解决方案 »

  1.   

    首先你可以在数据库里,检查一下你的SQL语句得到的集合是不是重复的,还有我不明白 With mrc,
    End With 在你程序里有什么意义,直接引用mrc不就行了吗。fields(0)表示第一个字段。而且
            MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
            Exit Sub
       就没有执行的可能
      

  2.   

    建议你先弄sql语句,然后单独试combo的用法,最后再合到一起
      

  3.   

    删除With mrc,End With   MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
    Exit Sub  还有什么要改吗?
      

  4.   

    跟踪,看 Set mrc = ExecuteSQL(txtSQL, MsgText) 这句里的sql语句是否正确,然后检查debug.print mrc.fields(0);mrc.fields(1)
    mrc.movenext
    debug.print mrc.fields(0);mrc.fields(1)
    mrc.movefrist
    看看是否数据一致
    另外,为什么不用datacombo
      

  5.   

    请问用datacombo有什么好外呢?
      

  6.   

    >请问Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0) 是什么意思?程序运行时,combo1中显示重复信息,应该如何修改?将新增列表项的 ItemData 属性(一个长整数值)设置为 dm_ywy.dm 的值。>combo1中显示重复信息,应该如何修改?Private Sub Form_Load()
    txtSQL = "select dm_ywy.dm,dm_ywy.mc from outh inner join dm_ywy on outh.ywman = dm_ywy.dm GROUP BY dm_ywy.mc"    '********************
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If Not mrc.EOF Then
    With mrc
    Do While Not .EOF
    Combo1(0).AddItem .Fields(1)
    Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0)
    .MoveNext
    Loop
    End With