首 页
下载中心
站内搜索
新闻中心│News center
行业新闻
最新公告
最新公告│Announcement
IT外包首选我们的八大理由...
中国劳科院与我公司续签了...
感谢中成航宇与我们公司续...
感谢深圳市城市空间规划建...
 
详细内容
当前位置:首 页 >> 新闻中心 >> 详细内容
 
 
详细内容  
 
 
忽略的 MaxScanRows 设置可能引起链接表中的数据类型不正确
发布时间:2012-12-08 | 点击次数:2168
  
 
症状运行 Visual Basic for Applications 代码从文本文件创建链接表之后,您会发现在一个或多个记录中出现 #_Num!。 原因下列陈述中的一个或两个都为真: 下列注册表项设为零: HKLM\Software\Microsoft\Jet\4.0\Engines\Text\MaxScanRows
您有带有下列条目的 Schema.ini 文件: MaxScanRows=0
如果将 MaxScanRows 设为零,则无论是在注册表中还是在 Schema.ini 文件中,以编程方式链接的任何表都有可能包含数据类型不正确的字段。这是因为,将 MaxScanRows 设为零会引起对整个表进行扫描,以便确定字段的数据类型。当发生这种情况时,数据类型是根据字段中的大多数类型来设置的。因此,如果大多数字段包含数字,而一些字段包含文字,例如,在 Access 中字段定义为具有“数字”的数据类型,使得文本项显示 #_Num!。 解决方案如果您使用文本导入向导进行链接,就不会发生这一问题。但是,如果您必须用代码创建链接,就可以在 Schema.ini 文件中为一个或多个字段定义数据类型。在下列举例中,第一列设为字符数据类型: [Test.txt] Format=CSVDelimited ColNameHeader=false MaxScanRows=0 CharacterSet=ANSI Col1=ID Char Width 3 状态Microsoft 已经确认这是本文开头所列出的 Microsoft 产品本身的问题。 更多信息备注:本文中的示例代码使用 Microsoft 数据访问对象。为使该代码正常运行,您必须引用 Microsoft DAO 3.6 Object Library。为此,要在 Visual Basic 编辑器中单击工具菜单上的引用,并确保选中 Microsoft DAO 3.6 Object Library 复选框。
重现问题的步骤
在驱动器 C 的根目录中创建名为 Test 的文件夹。 在记事本中,创建名为 Test.txt 的文本文件,并输入下列数据。然后,将文件保存在 C:\Test 文件夹中。 a b 1 2 3 在记事本中,创建第二个文件,并输入下列数据: [Test.txt] Format=CSVDelimited ColNameHeader=false MaxScanRows=0 CharacterSet=ANSI 在记事本的文件菜单上,单击另存为。在保存类型框中,单击所有文件,然后将文件保存为 C:\Test\Schema.ini。 创建新的 Access 数据库,然后创建新的 Visual Basic for Applications 模块。 将下列函数输入该模块: Function LinkSchema() Dim db As DAO.Database, tbl As DAO.TableDef Set db = CurrentDb() Set tbl = db.CreateTableDef("Test") tbl.Connect = "Text;DATABASE=c:\Test;TABLE=Test.txt" tbl.SourceTableName = "Test.txt" db.TableDefs.Append tbl db.TableDefs.Refresh End Function 在“立即”窗口中键入以下行,然后按 ENTER 键: ?LinkSchema()
关闭 Visual Basic 编辑器,然后返回到 Access。 打开最新链接的表 Test。 请注意,开头两个记录中出现了 #_Num!。
编辑:北京信诚IT保姆IT外包部 http:// www.xcitbm.com www.xcit.com.cn
 
关闭
  友情链接
深圳无线覆盖 广信鸿业 昊瑞尔科技 及好科技 信诺IT服务 北京IT外包 无线覆盖 起秀网络
版权所有:北京信诚众业科技有限公司 总部:010-62075251 400-698-1290 技术支持:010-62365952
地址:北京市北三环中路2号汇鑫祥源大厦328室 京ICP备09096604-3号