ADO与dBase的连接中的查询失败(SafeOps.cpp中的断言失败C ++运行时) [英] Query in ADO connection to dBase fails (Assertion failed in SafeOps.cpp C++ Runtime)

查看:82
本文介绍了ADO与dBase的连接中的查询失败(SafeOps.cpp中的断言失败C ++运行时)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在从WinXP 32位升级到Win7 64位,突然一些dBase查询导致D:\ Office \ Source \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ MS Visual C ++运行时库。

We are upgrading from WinXP 32bit to Win7 64bit and suddently some dBase queries results in an assertion failed in D:\Office\Source\ace\common\src\SafeOps.cpp reported by MS Visual C++ Runtime Library.

这是一个几乎干净的Win7盒子,我运行Microsoft更新以获取所有更新。我不得不安装"Microsoft Access数据库引擎2010可再发行组件"。以及将64位数据库驱动程序设置为dBase的相关SP1。

It is an almost clean Win7 box and I ran Microsoft update to get all updates. I had to install "Microsoft Access Database Engine 2010 Redistributable" and the related SP1 to get the 64bit database drivers to dBase.

我已将代码隔离为简单的select语句"select * from SomeTable"。它在WinXP(32位)中运行良好,但对于大约100,000个记录的大型表,它在Win7(64位)中失败。我能够在vbscript中重新创建事件

I have isolated the code to be a simple select statement "select * from SomeTable". It works fine in WinXP (32bit) but for large tables with say ~100,000 records it fails in Win7 (64bit). I was able to recreate the incident in a vbscript

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open "DSN=test;"

' ok (approx. 100 rows)
rs.Open "select ID from PATIENT", con
rs.Close

' fails! (approx 8000 rows)
rs.Open "select ID from FIELD", con
rs.Close

con.Close

附加图像上显示的名为test的ODBC数据属性

The ODBC data soruce named test displayed on the attached image

它是Win7中64位dBase驱动程序的可配置限制还是将要发生的事情on?

Is it an configurable limitation on the 64 bit dBase drivers in Win7 or what is going on?

推荐答案

可能是Field是保留字吗?尝试使用另一个大表,或重命名此表。
Could it be that Field is a reserved word? Try it with another large table, or rename this one.


这篇关于ADO与dBase的连接中的查询失败(SafeOps.cpp中的断言失败C ++运行时)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆