如果你知道,那就是一个很简单的问题!_________分数不少吧?

y1g1y1 2001-05-31 04:01:00
以下为 ADO 代码:
con: 为一个连接
rst: 为一个记录集

con.execute "select * from 原表 into 新表"
rst.open "select * from 新表",con

由于它是异步执行,所以,第一句建表查询执行之后,数据库中并没有立刻产生“新表”,所以下一条语句就会出错:

Microsoft Jet 数据库引擎找不到输入表或查询 '新表'。 确定它是否存在,以及它的名称的拼写是否正确。

即使是所谓的同步执行,也会出现此错误(可能是由于磁盘缓存的原因).不知谁有高招。

'==========================================================
我有一个不是办法的办法,就是建表完之后,关闭连接后再打开连接,如下:
con.execute "select * from 原表 into 新表"
con.close
con.open
rst.open "select * from 新表",con

这样可以避免出现此错误,但我始终觉得不妥!

不知道哪位高手有更猛的方法啊!
...全文
179 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
y1g1y1 2001-06-12
  • 打赏
  • 举报
回复
nepalese 2001-06-04
  • 打赏
  • 举报
回复
声明CONNECTION的时候要带事件
例如private withevents connDatabase as adodb.connection
这样再去跟踪CONNECTION的事件,然后得知是否执行完毕。
zfcheng 2001-06-04
  • 打赏
  • 举报
回复
同意(我是誰)的说法,高手!!!
但如果一定要那样做的话,请试一下在前一句写Doevents然后再写下一句
y1g1y1 2001-06-04
  • 打赏
  • 举报
回复
确实,我写的那句 sql 是错误的(是我那天提问时信手写的,不过我的程序中是没有写错的),其实也是根本不可执行的!

所以,我对 cqq_chen(我是谁) 的看法不敢苟同,因为根本没有什么先选取再插入与什么先生成表再插入之别!

我的考虑可能是 连接(con)有一定的缓存 甚至是磁盘有一定的缓存。
cqq_chen 2001-06-04
  • 打赏
  • 举报
回复
con.execute "select * from 原表 into 新表"
rst.open "select * from 新表",con
老兄你的SQL写的好象有问题,你改成:
con.execute "select * into 新表 from 原表"
rst.open "select * from 新表",con, adOpenStatic, adLockReadOnl
y1g1y1兄你明白这两个SQL的区别吗?请仔细看看你就知道你错在那了。
你的写法是先选取再插入,而jcq的做法是先生成表再选取,所以说你知道做法了吗?
y1g1y1 2001-06-03
  • 打赏
  • 举报
回复
你知道吗?
Un1 2001-06-02
  • 打赏
  • 举报
回复
execute返回的recordset的FetchComplete等事件行不行?
y1g1y1 2001-06-01
  • 打赏
  • 举报
回复
提前
y1g1y1 2001-06-01
  • 打赏
  • 举报
回复
快来拿分呀!
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
欢迎关注啊!
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
说明,我的测试也是在 Access2000 的基础上。
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
我试过了 ttyp(懒鬼) 的方法的。如果按照 StillExecuting 作为是否执行完毕,那一定是执行完了,可是,问题还是一样存在的。

参考
vb6中用dao3.6执行插入access2000数据时,不能马上执行,可能为异步,为什么?如何解决(http://www.csdn.net/expert/topic/140/140620.shtm)
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
我试过了,用 服务器端 与 客户端 游标都不能解决问题。
ttyp 2001-05-31
  • 打赏
  • 举报
回复
试试看,我没试过
do while conn.Connection.StillExecuting=true
loop
jcq 2001-05-31
  • 打赏
  • 举报
回复
con的CursorLocation是什么,
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
其实,倒不是记录多易出问题,而是记录少易出问题。
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
我又不是没有试过。

那我关闭连接再打开 或者 加入了一个超长循环,则不出错,请问如何解释呢?
jcq 2001-05-31
  • 打赏
  • 举报
回复
VB的ADO不是同步执行的吗?就是要等执行结束了才执行下面的代码,不会是异步执行吧,这我确定不是很清楚,不过DELPHI中默认是同步执行的,也不知道在VB中设置什么属性可以让它同步执行,不过老兄,你怎么知道作其他操作会出错,我试了几个都不会,你不能说我的数据太少了吧
我一共用了425984条记录,统计的结果对的.我想统计这么多应该做其他事也不会有什么问题了吧
y1g1y1 2001-05-31
  • 打赏
  • 举报
回复
你这样是没有出问题。但我那句话SQL绝对没有语法错误。

其实我在两句中加入一个超长循环,等待其执行完成,也可。


但我的意思不在于此。我的意思是,第一句并没有实时执行。因为后一句我并不一定是一个简单的打开记录查询、有可能是一个统计( count )查询,那么,它没有执行完时的 Count 肯定有可能不等于 完全执行完后的 Count.

总之我的意思是说,第一句查询并没有即时执行,怎么样才能让它即时执行。
OLD_VB_FAN 2001-05-31
  • 打赏
  • 举报
回复
关注!
加载更多回复(1)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧