首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 连接Excel文件文件时出现的问题 [已结贴,结贴人:samtyty]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • samtyty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-29 23:05:48 楼主
    初次接触关于Excel的问题
    将Excel中的数据导入Access中时碰到如下的问题

    第一个问题:
    使用代码:
        Dim sql As String, rs As Recordset
        Dim adoCon As New ADODB.Connection, str1 As String
        Dim InputFileName As String
        InputFileName = "e:\Work-Temp\DB-Edit1.xls"
        str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & InputFileName & ";Extended Properties=Excel 8.0;Persist Security Info=true"
        adoCon.Open str1
        sql = "select * from [sheet1$]"
        Set rs = adoCon.Execute(sql)
        Set DataGrid1.DataSource = rs
    结果在最后一行出现“行集合不能作为标签”的错误,该如何解决

    第二个问题
        Dim sql As String, rs As Recordset
        Dim adoCon As New ADODB.Connection, str1 As String
        Dim InputFileName As String
        InputFileName = "e:\Work-Temp\DB-Edit1.xls"
        str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & InputFileName & ";Extended Properties=Excel 8.0;Persist Security Info=true"
        adoCon.Open str1
        sql = "select * from [sheet1$]"
        rs.Open sql, adoCon, adOpenKeyset, adLockOptimistic
        Set DataGrid1.DataSource = rs

    代码与第一个问题的基本一致,不同的地方在倒数第二行,执行倒数第二行时出现了“对象变量或With块变量未设置”的错误,问题出现在什么地方,该如何解决?

    Set rs = adoCon.Execute(sql)
    rs.Open sql, adoCon, adOpenKeyset, adLockOptimistic
    上面这两句的区别与联系

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dbcontrols
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-30 20:57:061楼 得分:1
    顶贴也是一种美德!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yinweihong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:22:222楼 得分:1
    好久不用VB6下面的ADO, rs As new adodb.Recordset
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lcsfxs
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-31 17:24:223楼 得分:1
    将Excel中的数据导入Access中的代码:我已经测试过了,没问题

    Dim excel_app As Object
    Dim excel_sheet As Object
    Dim db As Database
    Dim AccessPath As String, AccessTable As String
    Dim sql As String
    Dim frm As New frmMessage
    Dim msg As String
       
        ADOsdb.BeginTrans
       
    '    With ADOsdb
    '        If .State <> adStateOpen Then
    '            .CursorLocation = adUseClient
    '            .ConnectionString = gsOdbcName
    '            .Open
    '        End If
    '    End With


        With dlgCommonDialog
            .DialogTitle = "打开"
            .CancelError = False
            'ToDo:  设置  common  dialog  控件的标志和属性
            .Filter = "Excel文件  (*.xls) ¦*.xls"
            .ShowOpen
            If Len(.FileName) = 0 Then
                    Exit Sub
            End If
            sfile = .FileName
        End With

     
      AccessPath = lcspath & "\db.mdb"                                '数据库路径
      excelpath = sfile                                                  '电子表格路经
      AccessTable = "db"                                                '数据库内表格
     
      msg = Trim(InputBox("请输入表名,如sheet1或sheet2:", "工作表", "sheet1"))
    '  msg = Str(msg)
      sheet = msg                                            '电子表格内工作表
      Set db = OpenDatabase(excelpath, True, False, "Excel 8.0") '打开电子表格文件
      sql = ("Select * into [;database=" & AccessPath & "]." & AccessTable & " FROM [" & sheet & "$]")
    '  sql = ("Select * into [;database=" & AccessPath & "]." & AccessTable & " FROM [" & sheet & "]")
       
      If sheet = "" Then
          MsgBox "您选择的EXCEL表不存在,请重新导入!", vbInformation, "抱歉!"
          Exit Sub
      End If
     
      If deltable = 1 Then
        With ADOsdb
            .Execute "drop table db", , adCmdText
        End With
      End If
     
      ADOsdb.CommitTrans

      db.Execute (sql)                                        '将电子表格导入数据库
                   
                   
      ShowMessage "正在导入EXCEL表,请您稍等..."
      Timer1.Enabled = True
     
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • samtyty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-01 16:55:184楼 得分:0
    to lcsfxs
    这些代码你真的测试过吗?
    从你给的代码中 lcspath 没有赋值,ShowMessage 这个还函数也没有(不过不影响,可以删除)
    如果你真的测试过,那就是还有很多代码没有给出
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lcsfxs
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-02 09:58:355楼 得分:0
    引用 4 楼 samtyty 的回复:
    to lcsfxs
    这些代码你真的测试过吗?
    从你给的代码中 lcspath 没有赋值,ShowMessage 这个还函数也没有(不过不影响,可以删除)
    如果你真的测试过,那就是还有很多代码没有给出

    lcspath为数据库路径如E:\,为你创建的数据库路径,ShowMessage为自定义函数,可不要,主要提醒用户正在导入数据.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tiger_Zhao
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      2

    发表于:2008-06-02 10:31:586楼 得分:9
    第一个问题:应该是你的Excel格式不对。
    第二个问题:rs 对象未创建,当然不能调用 Open 方法了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • samtyty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-02 18:47:097楼 得分:0
    引用 6 楼 Tiger_Zhao 的回复:
    第一个问题:应该是你的Excel格式不对。
    第二个问题:rs 对象未创建,当然不能调用 Open 方法了。


    第二个问题已经解决

    但是第一个问题,你提到Excel格式不对,做何解呢,Excel中的数据为如下格式:
    股票代号 股票名称 收盘价 涨跌 最高价 最低价 成交量
    0500001 基金金泰 126.5 -7.5 132 125 6290
    0500002 基金泰和 85 -3 85.5 83 6153
    0500003 基金安信 81 -3 82.5 79.5 2090
    0500005 基金汉盛 77 -0.5 77.5 75 1273
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Adai011
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-02 22:22:028楼 得分:1
    记得EXCEL打开表时需要这样,Rs.OPEN "SELECT * FROM [表名&]",conn,1,1
    表名前加“[”,表名后加“&]”
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tiger_Zhao
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      2

    发表于:2008-06-03 08:37:539楼 得分:0
    更正:由于 Execute 语句执行成功,所以 Excel 应该没问题;错误是出现在数据绑定语句上,应该是 Excute 语句返回的纪录集是 read-only、forward-only 的,不能给表格进行绑定操作;只能选用第二种方案。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • samtyty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-03 22:36:5610楼 得分:0
    to Adai011:
    表名确实需要加入[],我的代码中也是有的

    to Tiger_Zhao:
    我现在确实选用了第二种方案,但是还是不能和表格建立绑定,出现的错误和第一种方案一样。
    但是我找到了一个用Adodc控件的例子,却可以绑定,没有任何代码,只是在属性里设置了以下的属性
    其链接字符串为:Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="Driver={Microsoft Excel Driver (*.xls)};DBQ=71.XLS"
    sql命令为:Select * From [股市行情表$]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tiger_Zhao
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      2

    发表于:2008-06-04 13:03:4511楼 得分:7
    OLEDB适用.Net,ODBC方式适用COM绑定。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved