数据库之迷,高手讨论

tubo_true 2005-12-29 04:15:32
最近思考了一个问题,

有好几个月了,
百思不得其解,
问了好几个人,
大家都说不会。

问题:记录集

rs:记录集,con:数据库连接

...
set rs=con.open "select aa.*,bb.* from aa inner join bb on ...."
...

大家都知道,通过一条SQL语句,可以获得记录集

那么,已知记录集,能不能获得SQL语句

假如不能的话
为什么记录集建好后,你令

set con=nothing 断掉连接后

过会儿 再设置连接上

rs.updatebanch 语句不报错,而且更新的表的记录也没改错位置

连接断掉后,再连上,记录集是通过什么去找哪些表的

请高手赐教



...全文
203 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgs666 2006-02-19
  • 打赏
  • 举报
回复
set con=nothing 没起作用
用con.close试试.
tubo_true 2006-01-10
  • 打赏
  • 举报
回复
up
chtlover 2006-01-05
  • 打赏
  • 举报
回复
回复人: Jhzyz(机会主义者 - Just do it) 0



不能吧,有多种可能获得同样的数据集。

支持



tubo_true 2006-01-05
  • 打赏
  • 举报
回复
关注
laidon 2005-12-30
  • 打赏
  • 举报
回复
vbman2003(家人)说的对
楼主的想法其实可以实现,偶以前用过一个这样的东东,可以通过记录集返回sql,而不是返回用sql语句生成的记录集的source,但它生成的可以有好几个sql语句,都能达到目的,我觉得原理应该不是很复杂,可能有些做数据库引擎的东东有介绍吧
tubo_true 2005-12-30
  • 打赏
  • 举报
回复
还有
楼上刚才提到记录集留在内存中

怎样获得内存中的数据

最好把记录集挑出来
tubo_true 2005-12-30
  • 打赏
  • 举报
回复
假如说这种情况

我用一个程序保存记录集
如:
set rs=con.open "select * from aa"
rs.save "aa.xml"
关闭程序
然后
打开一个新程序
建立好 con 和 rs 后 (都跟上一个程序相同)
载打开建好的aa.xml文件
rs.open "aa.xml"

rs.updatebanch 和 rs.Source 还能提交和返回SQL语句吗?

如果我想知道rs的SQL语句
即使不正确也行

怎么得到???


province_ 2005-12-29
  • 打赏
  • 举报
回复
我的想法不对,正确意见见楼上,另外SOURCE里的内容决定于产生该记录集所使用的方法:SQL、存储过程名、Command 对象变量、表的名称。
vbman2003 2005-12-29
  • 打赏
  • 举报
回复
只有用SQL语句生成的记录集,才可以通过记录集的source属性返回SQL语句。
set con=nothing 可以使记录集对象与当前 Connection 脱离关联,并使提供者释放数据源上所有关联的资源。然后,可以使使记录集对象与相同的 Connection 对象或其他 Connection 对象关联。这就是为什么重新连接后,仍然可以更新数据库
province_ 2005-12-29
  • 打赏
  • 举报
回复
set con=nothing 断掉连接后???
这样的话连接可没断,CON活得好好的。
馮強 2005-12-29
  • 打赏
  • 举报
回复
不能吧,有多种可能获得同样的数据集。
faysky2 2005-12-29
  • 打赏
  • 举报
回复
...
set rs=con.open "select aa.*,bb.* from aa inner join bb on ...."
...
debug.print rs.source
结果:
select aa.*,bb.* from aa inner join bb on ....
Summer006 2005-12-29
  • 打赏
  • 举报
回复
strSQL = "SELECT " & SelectPart & " FROM " & TableName
If Condition <> "" Then strSQL = strSQL & " WHERE " & Condition
If OrderString <> "" Then strSQL = strSQL & " ORDER BY " & OrderString
If RS Is Nothing Then Set RS = New Recordset
RS.Open strSQL, Cn, adOpenForwardOnly, adLockReadOnly
Debug.Print RS.Source
显示:
SELECT * FROM History WHERE Date = #2005-12-28# AND State <> 2

是这样吗
Summer006 2005-12-29
  • 打赏
  • 举报
回复
试试 rs.Source 能满足你的要求不。
后面那个问题不清楚了
上官云峰 2005-12-29
  • 打赏
  • 举报
回复
通过数据肯定得不到sql语句!
你说的
我想是存入机器内存,你没有对rs赋别的值,所以在调出记录是没有什么变化的。


这是我的理解
zou19820704 2005-12-29
  • 打赏
  • 举报
回复
好象是不能得到语句!宇宙中有的能量是不可逆的

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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