Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1227|回复: 11

[已解决]请大神帮看下代码哪里写错了,谢谢了!!!

[复制链接]
发表于 2023-3-4 14:19 | 显示全部楼层 |阅读模式
Dim Conn As Object, rst As Object, strText$, strConn$, strSQL$, strMyr$, k, i&, x&
    Set Conn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")

    strText = "日期" & ">=#" & TextBox1.Text & "# And " & "日期" & "<=#" & TextBox2.Text & "#" & " "

    For i = 1 To 3
        If Me.Controls("ComboBox" & i).Value <> "" Then
            strText = strText & "And " & Me.Controls("label" & i + 2).Caption & "='" & Me.Controls("ComboBox" & i).Value & "'"
        End If
        'If Me.TextBox3.Text <> "" Then
        'strText = strText & "And " & "label6.Caption & " = " & text3.text & "
    'End If
    Next
    With Sheets("日记账")
        i = .Cells(Rows.Count, 1).End(3).Row
    End With
    strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & ThisWorkbook.FullName
    strSQL = "SELECT * From [日记账$A1:f" & i & "] Where " & strText
    Conn.Open strConn
    Set rst = Conn.Execute(strSQL)
    Range("a2").CurrentRegion.Offset(1).ClearContents
    Range("a2").CopyFromRecordset rst
    i = [c65536].End(3).Row - 1
    If i > 0 Then
        ReDim k(1 To i)
        For x = 1 To i
            k(x) = x
        Next
        'Range("y2").Resize(i) = Application.Transpose(k)
    End If










现在两个问题,第一是combobox有3个,名称为账目名称的就是可用的,收支类型和收支方式选择了条件就报错“至少一个参数没有被指定值”下面有截图
第二个问题,我的textbox3也就是备注文本框,想要模糊查询,代码应该怎么写?



再次感谢有大神帮我解决下
最佳答案
2023-3-4 21:39
本帖最后由 cutecpu 于 2023-3-4 21:42 编辑
ww09152010 发表于 2023-3-4 20:22
太感谢了,就是EXCEL的A1列里面的名称写的不一致!!

strText = strText & " And 备注 like '%" & textbox3.text & "%'"

strSQL = "SELECT * From [日记账$A1:f" & i & "] Where " & strText
    Conn.Open strConn
    Set rst = Conn.Execute(strSQL)

加上紅色那句

错误提示

错误提示

日期和账目名称都是好的

日期和账目名称都是好的
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2023-3-4 17:24 | 显示全部楼层
在 Set rst = Conn.Execute(strSQL) 這句的前面
加一行 debug.print strSQL
然後看印出什麼,截圖上傳一下喔
回复

使用道具 举报

 楼主| 发表于 2023-3-4 18:16 | 显示全部楼层
cutecpu 发表于 2023-3-4 17:24
在 Set rst = Conn.Execute(strSQL) 這句的前面
加一行 debug.print strSQL
然後看印出什麼,截圖上傳一 ...

老师还是那个错误提示
111.png
222.png
回复

使用道具 举报

 楼主| 发表于 2023-3-4 18:17 | 显示全部楼层
cutecpu 发表于 2023-3-4 17:24
在 Set rst = Conn.Execute(strSQL) 這句的前面
加一行 debug.print strSQL
然後看印出什麼,截圖上傳一 ...

就是只要收支类型或者收支方式 作为条件就报错
回复

使用道具 举报

 楼主| 发表于 2023-3-4 19:02 | 显示全部楼层
cutecpu 发表于 2023-3-4 17:24
在 Set rst = Conn.Execute(strSQL) 這句的前面
加一行 debug.print strSQL
然後看印出什麼,截圖上傳一 ...

是要这个吗?
333.png
回复

使用道具 举报

 楼主| 发表于 2023-3-4 19:14 | 显示全部楼层
cutecpu 发表于 2023-3-4 17:24
在 Set rst = Conn.Execute(strSQL) 這句的前面
加一行 debug.print strSQL
然後看印出什麼,截圖上傳一 ...

我把文件传上来  帮我看下吧

日记账.rar

95.43 KB, 下载次数: 2

回复

使用道具 举报

发表于 2023-3-4 19:47 | 显示全部楼层
ww09152010 发表于 2023-3-4 19:14
我把文件传上来  帮我看下吧

您 B1 =支付方式
C1 = 類型

跟您 strSQL 不一致
改成一致就可以了



回复

使用道具 举报

 楼主| 发表于 2023-3-4 20:22 | 显示全部楼层
cutecpu 发表于 2023-3-4 19:47
您 B1 =支付方式
C1 = 類型

太感谢了,就是EXCEL的A1列里面的名称写的不一致!!


麻烦再问下我想备注 模糊查询,那一句代码应该怎么写,备注是textbox3

万分感谢
回复

使用道具 举报

发表于 2023-3-4 21:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 cutecpu 于 2023-3-4 21:42 编辑
ww09152010 发表于 2023-3-4 20:22
太感谢了,就是EXCEL的A1列里面的名称写的不一致!!

strText = strText & " And 备注 like '%" & textbox3.text & "%'"

strSQL = "SELECT * From [日记账$A1:f" & i & "] Where " & strText
    Conn.Open strConn
    Set rst = Conn.Execute(strSQL)

加上紅色那句

回复

使用道具 举报

 楼主| 发表于 2023-3-4 22:02 | 显示全部楼层
cutecpu 发表于 2023-3-4 21:39
strText = strText & " And 备注 like '%" & textbox3.text & "%'"

strSQL = "SELECT * From [日记账$ ...

问题都解决了,太感谢了!!!!!!!

点评

不客氣喔~  发表于 2023-3-5 00:44
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 16:28 , Processed in 0.323082 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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