ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4584|回复: 13

[求助] 关于多条件查询的求助,半成品、有难度,求高人相助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-6-29 12:44 | 显示全部楼层 |阅读模式
现在,已实现按时间段,单个凭证号,总账科目、一级明细科目、摘要多条件模糊查询,需要解决的问题:1:将科目编码、总账科目、一级明细科目、二级明细的下拉列表数据源改为从科目汇总表中取数,并且实现总账科目、一级明细科目、二级明细的三级联动,即当总账科目选择管理费用时,二级明细科目只能出现管理费用的下级科目供用户选择:。2、实现按凭证号范围、金额范围进行查询。3、将查询结果汇总并显示在listview1的数据下方。这个问题困惑了我很久,希望能有老师能帮帮忙,不胜感谢。请点击查询按钮查看效果。

aaa.rar

275.73 KB, 下载次数: 141

TA的精华主题

TA的得分主题

发表于 2011-6-29 12:59 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-29 13:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-6-29 14:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QQ截图20110629143740.jpg 这样子,金额是从哪个金额,你里面好几个

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-29 16:40 | 显示全部楼层

回复 4楼 wqfzqgk 的帖子

金额从凭证列表中的借贷方金额中查询,按范围,比如1000-10000,

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-30 12:19 | 显示全部楼层

回复 5楼 黑山上的鹰 的帖子

没人帮忙?

TA的精华主题

TA的得分主题

发表于 2011-6-30 21:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-1 13:16 | 显示全部楼层

回复 7楼 wqfzqgk 的帖子

Private Sub CommandButton1_Click()
  'If Len(ComboBox1.Text) = 0 Or Len(ComboBox2.Text) = 0 Then
    'MsgBox "起始或结束日期不能为空!"
   ' Exit Sub
  'End If
  Me.ListView1.ListItems.Clear
  Set CNN = CreateObject("ADODB.Connection")
  Set rst = CreateObject("ADODB.Recordset")
  CNN.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
  'Sql = "select 日期,凭证号,摘要,科目代码,总账科目,一级明细科目,二级明细科目,借方,贷方 from [凭证列表$] where 日期>=#" & ComboBox1.Text & "# and 日期<=#" & ComboBox2.Text & "#"
  Sql = "select 日期,凭证号,摘要,科目代码,总账科目,一级明细科目,二级明细科目,借方,贷方 from [凭证列表$] where 日期>=#" & DTPicker1.Value & "# and 日期<=#" & DTPicker2.Value & "#"
   If ComboBox3.Text <> "" Then Sql = Sql & "and 凭证号 like '%" & ComboBox3.Text & "%'"
   
    If ComboBox4.Text <> "" Then Sql = Sql & "and 摘要 like '%" & ComboBox4.Text & "%'"
    If ComboBox5.Text <> "" Then Sql = Sql & "and 总账科目 like '%" & ComboBox5.Text & "%'"
    If ComboBox6.Text <> "" Then Sql = Sql & "and 总账科目 like '%" & ComboBox6.Text & "%'"
     If ComboBox7.Text <> "" Then Sql = Sql & "and 一级明细科目 like '%" & ComboBox7.Text & "%'"
     If ComboBox8.Text <> "" Then Sql = Sql & "and 二级明细科目 like '%" & ComboBox8.Text & "%'"
   
rst.Open Sql, CNN, adOpenKeyset, adLockPessimistic

  Do Until rst.EOF
    icount = rst.RecordCount
    For i = 1 To icount
      ListView1.ListItems.Add , , rst.Fields("日期")
      ListView1.ListItems(i).SubItems(1) = IIf(IsNull(rst.Fields("凭证号")), "", rst.Fields("凭证号"))
      ListView1.ListItems(i).SubItems(2) = IIf(IsNull(rst.Fields("摘要")), "", rst.Fields("摘要"))
      ListView1.ListItems(i).SubItems(3) = IIf(IsNull(rst.Fields("科目代码")), "", rst.Fields("科目代码"))
      ListView1.ListItems(i).SubItems(4) = IIf(IsNull(rst.Fields("总账科目")), "", rst.Fields("总账科目"))
      ListView1.ListItems(i).SubItems(5) = IIf(IsNull(rst.Fields("一级明细科目")), "", rst.Fields("一级明细科目"))
      ListView1.ListItems(i).SubItems(6) = IIf(IsNull(rst.Fields("二级明细科目")), "", rst.Fields("二级明细科目"))
       ListView1.ListItems(i).SubItems(7) = IIf(IsNull(rst.Fields("借方")), "", rst.Fields("借方"))
       ListView1.ListItems(i).SubItems(8) = IIf(IsNull(rst.Fields("贷方")), "", rst.Fields("贷方"))
      
      rst.MoveNext
    Next i
  Loop
  
  Set rst = Nothing
  Set CNN = Nothing

End Sub



Private Sub UserForm_Initialize()
DTPicker1.Value = Date
DTPicker2.Value = Date
  ListView1.ColumnHeaders.Clear
  ListView1.ListItems.Clear
  ListView1.View = lvwReport
  ListView1.FullRowSelect = True
  ListView1.Gridlines = True
    Dim h As New Collection
    Dim k As New Collection
    Dim i%, j%
    On Error Resume Next
    For j = 3 To 8
        For i = 2 To Sheet7.[a65536].End(xlUp).Row
            h.Add Sheet7.Cells(i, j - 1), CStr(Sheet7.Cells(i, j - 1))
            If Err.Number = 0 Then
                Me.Controls("ComboBox" & j).AddItem Sheet7.Cells(i, j - 1)
            End If
            Err.Clear
        Next
    Next
    'For i = 2 To Sheet7.[a65536].End(xlUp).Row
       ' k.Add Sheet7.Cells(i, "a"), CStr(Sheet7.Cells(i, "a"))
       ' If Err.Number = 0 Then
            'ComboBox1.AddItem Sheet7.Cells(i, "a")
            'ComboBox2.AddItem Sheet7.Cells(i, "a")
        'End If
        'Err.Clear
    'Next
   
    ListView1.ColumnHeaders.Add , , "日期", 60
    ListView1.ColumnHeaders.Add , , "凭证号", 40
    ListView1.ColumnHeaders.Add , , "摘要", 150
    ListView1.ColumnHeaders.Add , , "科目代码", 70
    ListView1.ColumnHeaders.Add , , "总账科目", 120
    ListView1.ColumnHeaders.Add , , "一级明细科目", 120
    ListView1.ColumnHeaders.Add , , "二级明细科目", 30
    ListView1.ColumnHeaders.Add , , "借方", 100
    ListView1.ColumnHeaders.Add , , "贷方", 100
   
   
End Sub

请问:怎么加,我太笨了,不会,加了一下,rst.Open Sql, CNN, adOpenKeyset, adLockPessimistic不执行,谢谢

TA的精华主题

TA的得分主题

发表于 2011-7-2 11:03 | 显示全部楼层

  1. Private Sub ComboBox6_Change()
  2. On Error Resume Next
  3. ComboBox7.Clear
  4. Set d = CreateObject("scripting.dictionary")

  5. For i = 2 To Sheet7.[a65536].End(xlUp).Row
  6.   If Sheet7.Cells(i, "e") = ComboBox6.Text Then d(Sheet7.Cells(i, "f").Value) = ""
  7.       Next
  8.   ComboBox7.List = d.Keys

  9. End Sub

  10. Private Sub CommandButton1_Click()
  11.   'If Len(ComboBox1.Text) = 0 Or Len(ComboBox2.Text) = 0 Then
  12.     'MsgBox "起始或结束日期不能为空!"
  13.    ' Exit Sub
  14.   'End If
  15.   Me.ListView1.ListItems.Clear
  16.   Set CNN = CreateObject("ADODB.Connection")
  17.   Set rst = CreateObject("ADODB.Recordset")
  18.   CNN.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
  19.   'Sql = "select 日期,凭证号,摘要,科目代码,总账科目,一级明细科目,二级明细科目,借方,贷方 from [凭证列表$] where 日期>=#" & ComboBox1.Text & "# and 日期<=#" & ComboBox2.Text & "#"
  20.   Sql = "select 日期,凭证号,摘要,科目代码,总账科目,一级明细科目,二级明细科目,借方,贷方 from [凭证列表$] where 日期>=#" & DTPicker1.Value & "# and 日期<=#" & DTPicker2.Value & "#"
  21.    If ComboBox3.Text <> "" Then Sql = Sql & "and 凭证号 like '%" & ComboBox3.Text & "%'"
  22.    
  23.     If ComboBox4.Text <> "" Then Sql = Sql & "and 摘要 like '%" & ComboBox4.Text & "%'"
  24.     If ComboBox5.Text <> "" Then Sql = Sql & "and 总账科目 like '%" & ComboBox5.Text & "%'"
  25.     If ComboBox6.Text <> "" Then Sql = Sql & "and 总账科目 like '%" & ComboBox6.Text & "%'"
  26.      If ComboBox7.Text <> "" Then Sql = Sql & "and 一级明细科目 like '%" & ComboBox7.Text & "%'"
  27.      If ComboBox8.Text <> "" Then Sql = Sql & "and 二级明细科目 like '%" & ComboBox8.Text & "%'"
  28.     If Me.TextBox1.Text <> "" And Me.TextBox2.Text <> "" Then Sql = Sql & "  and 借方>" & Val(Me.TextBox1.Text) & "  and 借方<" & Val(Me.TextBox2.Text)
  29. rst.Open Sql, CNN, adOpenKeyset, adLockPessimistic

  30.   Do Until rst.EOF
  31.     icount = rst.RecordCount
  32.     For i = 1 To icount
  33.       ListView1.ListItems.Add , , rst.Fields("日期")
  34.       ListView1.ListItems(i).SubItems(1) = IIf(IsNull(rst.Fields("凭证号")), "", rst.Fields("凭证号"))
  35.       ListView1.ListItems(i).SubItems(2) = IIf(IsNull(rst.Fields("摘要")), "", rst.Fields("摘要"))
  36.       ListView1.ListItems(i).SubItems(3) = IIf(IsNull(rst.Fields("科目代码")), "", rst.Fields("科目代码"))
  37.       ListView1.ListItems(i).SubItems(4) = IIf(IsNull(rst.Fields("总账科目")), "", rst.Fields("总账科目"))
  38.       ListView1.ListItems(i).SubItems(5) = IIf(IsNull(rst.Fields("一级明细科目")), "", rst.Fields("一级明细科目"))
  39.       ListView1.ListItems(i).SubItems(6) = IIf(IsNull(rst.Fields("二级明细科目")), "", rst.Fields("二级明细科目"))
  40.        ListView1.ListItems(i).SubItems(7) = IIf(IsNull(rst.Fields("借方")), "", rst.Fields("借方"))
  41.        ListView1.ListItems(i).SubItems(8) = IIf(IsNull(rst.Fields("贷方")), "", rst.Fields("贷方"))
  42.       
  43.       rst.MoveNext
  44.     Next i
  45.   Loop
  46.   
  47.   Set rst = Nothing
  48.   Set CNN = Nothing

  49. End Sub





  50. Private Sub UserForm_Initialize()
  51. DTPicker1.Value = Date
  52. DTPicker2.Value = Date
  53.   ListView1.ColumnHeaders.Clear
  54.   ListView1.ListItems.Clear
  55.   ListView1.View = lvwReport
  56.   ListView1.FullRowSelect = True
  57.   ListView1.Gridlines = True
  58.     Dim h As New Collection
  59.    
  60.     Dim i%, j%
  61.     On Error Resume Next
  62.     For j = 3 To 8
  63.         For i = 2 To Sheet7.[a65536].End(xlUp).Row
  64.             h.Add Sheet7.Cells(i, j - 1), CStr(Sheet7.Cells(i, j - 1))
  65.             If Err.Number = 0 Then
  66.                 Me.Controls("ComboBox" & j).AddItem Sheet7.Cells(i, j - 1)
  67.             End If
  68.             Err.Clear
  69.         Next
  70.     Next
  71.    
  72.     ListView1.ColumnHeaders.Add , , "日期", 60
  73.     ListView1.ColumnHeaders.Add , , "凭证号", 40
  74.     ListView1.ColumnHeaders.Add , , "摘要", 150
  75.     ListView1.ColumnHeaders.Add , , "科目代码", 70
  76.     ListView1.ColumnHeaders.Add , , "总账科目", 120
  77.     ListView1.ColumnHeaders.Add , , "一级明细科目", 120
  78.     ListView1.ColumnHeaders.Add , , "二级明细科目", 30
  79.     ListView1.ColumnHeaders.Add , , "借方", 100
  80.     ListView1.ColumnHeaders.Add , , "贷方", 100
  81.    
  82.    
  83. End Sub

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-4 08:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 9楼 wqfzqgk 的帖子

谢谢,调试成功,另外能否实现科目编码,总账科目,一级明细科目,二级明细科目的下拉列表从科目汇总表中取数,选择科目编码后,自动弹出相应的总账科目,一级明细科目,二级明细科目,选择总账科目,一级明细科目下拉列表内容为该总账科目的下级明细,二级明细科目一级科目的下级明细;取消凭证号的下拉列表。

[ 本帖最后由 黑山上的鹰 于 2011-7-4 09:07 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-9 15:46 , Processed in 0.026239 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表