ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] access 数据赋值给 arr,arr赋值给listbox,但listbox只显示数组的第一行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-8 15:11 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
老师们好,自己写的代码,发现一个问题但我不会解决,拜托了:


access 数据赋值给 arr,arr赋值给listbox,但listbox只显示数组的第一行,其他航不显示,拜托指教。谢谢
(最后两句搞不定的代码已经标红,谢谢)


Dim Stpath, strSQL As String
Dim arr, Arr3
Dim t As String
Dim RST As Object, i%, n%
Dim cnn As Object, SQL$, rs As Object ', i%, n%
   
    mybook = ThisWorkbook.Name
    mypath = ThisWorkbook.Path
    mysht = ActiveSheet.Name
   
    kigyoumei = "Finance_DB" '''■■■路径名 需要修改
    documei = "Finance_DB"   '''■■■数据库名 需要修改
    Tabmei1 = "Parts_list"   '''■■■数据表名 需要修改
   
    t = 入库界面.TextBox1.Value


    Set myCat = CreateObject("ADOX.Catalog")
    Set cnn = CreateObject("Adodb.Connection")
    Set RST = CreateObject("Adodb.Recordset")
    Set rs = CreateObject("Adodb.Recordset")
'''''''''↓↓↓↓↓↓确认数据库是否存在↓↓↓↓↓↓'''''''''
    myData = mypath & "\database\" & kigyoumei & "\" & documei & ".mdb"  '设置login数据库名称(包括完整路径)
    If Dir(myData) = "" Then
     MsgBox myData & Chr(13) & "  文件丢失或不存在!" & Chr(13) & "请关闭系统后重新进入!密码系统会自动初始化!", 48, "错误"
     Exit Sub
    End If
   
    cnn = "Provider=Microsoft.Ace.OLEDB.12.0;" & "Data Source=" & myData '建立与建数据库的连接字符串
    cnn.Open "provider=Microsoft.ACE.OLEDB.12.0" & ";Data Source =" & myData & ";Persist Security Info=False;Jet OLEDB:Database Password=123"
   
                 

     
    ''''''''''''''''''''''''''''判断是否有数据满足条件,如果没有满足条件的数据,就不往下走了
     SQL = "Select 零部件ID from " & Tabmei1 & " WHERE 零部件ID LIKE '%" & t & "%'" '正确
      rs.Open SQL, cnn
      
      Do While Not rs.EOF
          kosuu = kosuu + 1 '遍历计算数据库中一共有多少条数据
          rs.MoveNext
      Loop
      If kosuu = 0 Then
       'MsgBox "", 16, "错误"
       入库界面.ListBox1.Visible = False
       cnn.Close
       Set RST = Nothing
       Set cnn = Nothing
       Set AdoRe = Nothing
       Exit Sub
      Else
       Set AdoRe = cnn.Execute(SQL)
       Arr3 = AdoRe.GetRows                                '取得全部
       入库界面.ListBox1.List = Arr3

       cnn.Close
      
       Set RST = Nothing
       Set cnn = Nothing
       Set AdoRe = Nothing
      
      
      End If


TA的精华主题

TA的得分主题

发表于 2023-4-8 21:59 | 显示全部楼层
rs.RecordCount就可以得到记录集的记录数。
入库界面.ListBox1.List =cnn.Execute(SQL).GetRows
AdoRe此变量前面好像没有声明

TA的精华主题

TA的得分主题

发表于 2023-4-8 23:09 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-10 11:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢老师们,问题解决。谢谢。

TA的精华主题

TA的得分主题

发表于 2023-4-28 21:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
您好,我也遇到类似的问题,请问怎么解决?

TA的精华主题

TA的得分主题

发表于 2023-4-28 21:56 | 显示全部楼层
Dim sqlst As String
Dim arr
Dim adrs As Object
Set adconn = CreateObject("adodb.connection")
Set adrs = CreateObject("adodb.recordset")
adconn.Provider = "microsoft.ace.oledb.12.0"
adconn.Open "D:\360安全浏览器下载\database1.accdb"
If adrs.State = 1 Then adrs.Close
sqlst = "select * from sheet1 where 简码 like '%" & Me.TextBox1.Value & "%'"
adrs.Open sqlst, adconn, 1
    If adrs.BOF And adrs.EOF Then
        Me.ListBox1.Clear
    Else
        arr = Application.Transpose(adrs.GetRows)
        Me.ListBox1.List = arr
        Me.ListBox1.ColumnCount = 13
        Me.ListBox1.ColumnWidths = "50,60,80,40,30,80,80,50,50,50,50,50,50"
    End If
请问错在哪?谢谢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 05:24 , Processed in 0.029082 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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