ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于运行出错的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-11-9 11:49 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
新建文件夹.rar (58.07 KB, 下载次数: 30) 各位,我是一个刚接触ACCESS的,现在附件中的文件在运行时提示出错,请各位指点下!
附件传不上来,只可以复制代码过来,出错在红色字处.
Public Sub 将工作表数据保存到已有的ACCESS数据库1()
    Dim myData As String, myTable As String
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Long, j As Long
    Dim myCat As New ADOX.Catalog
    Dim myCmd As ADODB.Command
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("数据库")
    myData = wb.Path & "\myData.mdb"
    myTable = "数据库"
    If Dir(myData) = "" Then
        myCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myData
        Set cnn = myCat.ActiveConnection
        Set myCmd = New ADODB.Command
        Set myCmd.ActiveConnection = cnn
        myCmd.CommandText = "CREATE TABLE " & myTable _
          & "(序号 text,日期 date,物料名称 text(50),规格 text(50)," _
            & " 采购单号 text(50),收发单号 text(50),PN text(50),款号 text(50)," _
            & " 色号 text(50),收发 text(50),均码 Single,XXS Single,XS Single," _
            & " S Single,M Single,L Single,XL Single,XXL Single,3XL Single," _
            & " 4XL Single,5XL Single,小计 Single,备注 text(50))"
        myCmd.Execute , , adCmdText
    Else
        Set cnn = New ADODB.Connection
        With cnn
            .Provider = "microsoft.jet.oledb.4.0"
            .Open myData
        End With
        Set rs = cnn.OpenSchema(adSchemaTables)
        Do Until rs.EOF
            If LCase(rs!table_name) = LCase(myTable) Then GoTo hhh
            rs.MoveNext
        Loop
        Set myCmd = New ADODB.Command
        Set myCmd.ActiveConnection = cnn
        myCmd.CommandText = "CREATE TABLE " & myTable _
          & "(序号 text,日期 date,物料名称 text(50),规格 text(50)," _
            & " 采购单号 text(50),收发单号 text(50),PN text(50),款号 text(50)," _
            & " 色号 text(50),收发 text(50),均码 Single,XXS Single,XS Single," _
            & " S Single,M Single,L Single,XL Single,XXL Single,3XL Single," _
            & " 4XL Single,5XL Single,小计 Single,备注 text(50))"
        myCmd.Execute , , adCmdText
hhh:
    End If
    n = ws.Range("A65536").End(xlUp).Row
    For i = 2 To n
        Sql = "select * from " & myTable _
        & " where 日期=" & Format(ws.Cells(i, 2).Value, "yyyy-mm-dd") & " " _
        & " and 物料名称=" & ws.Cells(i, 3).Value & " " _
        & " and 规格=" & ws.Cells(i, 4).Value & " " _
        & " and 采购单号=" & ws.Cells(i, 5).Value _
        & " and 收发单号=" & ws.Cells(i, 6).Value _
        & " and PN=" & ws.Cells(i, 7).Value _
        & " and 款号=" & ws.Cells(i, 8).Value _
        & " and 色号=" & ws.Cells(i, 9).Value _
        & " and 收发=" & ws.Cells(i, 10).Value _
        & " and 均码=" & ws.Cells(i, 11).Value _
        & " and XXS=" & ws.Cells(i, 12).Value _
        & " and XS=" & ws.Cells(i, 13).Value _
        & " and S=" & ws.Cells(i, 14).Value _
        & " and M=" & ws.Cells(i, 15).Value _
        & " and L=" & ws.Cells(i, 16).Value _
        & " and XL=" & ws.Cells(i, 17).Value _
        & " and XXL=" & ws.Cells(i, 18).Value _
        & " and 3XL=" & ws.Cells(i, 19).Value _
        & " and 4XL=" & ws.Cells(i, 20).Value _
        & " and 5XL=" & ws.Cells(i, 21).Value _
        & " and 小计=" & ws.Cells(i, 22).Value _
        & " and 备注=" & ws.Cells(i, 23).Value
        Set rs = New ADODB.Recordset
        rs.Open Sql, cnn, adOpenKeyset, adLockOptimistic

        If rs.RecordCount = 0 Then
            rs.AddNew
            For j = 1 To rs.Fields.Count
                rs.Fields(j - 1) = ws.Cells(i, j).Value
            Next j
            rs.Update
        Else
            For j = 1 To rs.Fields.Count
                rs.Fields(j - 1) = ws.Cells(i, j).Value
            Next j
            rs.Update
        End If
    Next i
    MsgBox "数据保存完毕!", vbInformation + vbOKOnly
    rs.Close
    cnn.Close
    Set wb = Nothing
    Set ws = Nothing
    Set rs = Nothing
    Set myCmd = Nothing
    Set myCat = Nothing
    Set cnn = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-9 21:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
怎没人出手的???

TA的精华主题

TA的得分主题

发表于 2008-11-11 08:59 | 显示全部楼层
这个SQL 语句的问题,你把这个语句生成一下拷贝到查询设计器中看一下是哪里的问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-10 18:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位版主,请给几分钟帮忙下吧,好吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-14 23:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

关于运行出错

请问板主,是否如附件?已上传!请帮忙改正!

新建文件夹.rar

158.04 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2008-11-17 08:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
因为我公司的系统不能打开中文的MDB,所以没有办法试,只能告诉你方法

TA的精华主题

TA的得分主题

发表于 2008-11-17 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
估计是两个问题:一是文本数据没有打'号;二是SQL语句过长;如果红色部份改为:
        Sql = "select * from " & myTable _
        & " where 日期=#" & ws.Cells(i, 2).Value & "# " _
        & " and 物料名称='" & ws.Cells(i, 3).Value & "' " _
        & " and 规格='" & ws.Cells(i, 4).Value & "' " _
        & " and 采购单号='" & ws.Cells(i, 5).Value & "' " _
        & " and 收发单号='" & ws.Cells(i, 6).Value & "' " _
        & " and PN='" & ws.Cells(i, 7).Value & "' " _
        & " and 款号='" & ws.Cells(i, 8).Value & "' " _
        & " and 色号='" & ws.Cells(i, 9).Value & "' " _
        & " and 收发='" & ws.Cells(i, 10).Value & "' " _
        & " and 均码=" & ws.Cells(i, 11).Value _
        & " and XXS=" & ws.Cells(i, 12).Value _
        & " and XS=" & ws.Cells(i, 13).Value _
        & " and S=" & ws.Cells(i, 14).Value _
        & " and M=" & ws.Cells(i, 15).Value _
        & " and L=" & ws.Cells(i, 16).Value _
        & " and XL=" & ws.Cells(i, 17).Value _
        & " and XXL=" & ws.Cells(i, 18).Value
缩短了SQL语句.出现的提示是(我)在数据库上没有读取的权限.

TA的精华主题

TA的得分主题

发表于 2008-11-17 15:46 | 显示全部楼层
LZ请注意哦:
用"_"下划线进行上下行连接不能过多,有一定限制的,不知道你是不是这毛病,

TA的精华主题

TA的得分主题

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

下划线连接过多

当时我也以为是连接过多,就减少连接,但就如7楼所言,"不能读取数据".但至于_下划线连接过多,是以什么为标准,请教了!

TA的精华主题

TA的得分主题

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

关于运行出错

我已重新传附件,第一张表可以顺利运行,但原来的表还是不行,请教到底出了什么问题!

TEST.rar

48.79 KB, 下载次数: 29

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

本版积分规则

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

GMT+8, 2024-11-16 20:52 , Processed in 0.037866 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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