vb高分求助:关于在记录集中查询的问题,请各位高手帮忙,谢谢!

我主要想求助以下两个问题:
1. 关于记录集的Filter属性,是不是不能设置为:"字段名 is not null",
或者:"left(字段名,2) = '数值'"
2. 可否在记录集中使用sql语句?比如:select * from 记录集 where 查询条件。
我使用这个语句时数据库路径不知道怎么的就变我vb6.0的安装路径了,然后提示找不
到数据库,请各位高手指教,应该如何用sql语句查询一个记录集。

问题是这样的:我的数据库在服务器上,每个客户端都需要从数据库中加载数据。为避免频繁的访问数据库,我想让客户端一启动就将数据库中的数据加载到本地内存,使用以下代码:
adodc1.ConnectionString = 数据库路径
adodc1.RecordSource = "select * from 数据表"
adodc1.Refresh

然后我需要的数据再从adodc1.recordset中检索。一开始是想用Filter属性的,但是遇到了问题1,所以就想用sql语句,像查询一个数据表一样查询adodc1.recordset,结果遇到了问题2.

请各位高手帮忙看看,谢谢!待问题解决后必定会追加分数,十分感谢!
补充一下,我想将在记录集中查询的结果赋给另一个记录集

问题一:已经用select语句得到的记录集,不能再次用sql语句过滤,而是必须用VB语句一条记录一条记录的查找。
问题二:不要把Vb语句和SQL语句搞混,Left函数是VB的,SQL不认识。
问题三:SQL服务器本身就是用于支持多人频繁访问,很多网络游戏用的就是这种数据库,难道你的程序访问量比他们还大?就算是这样,也可以通过服务器负载均衡,分布式访问等技术解决,这已经和你的程序无关了。
问题四:鉴于第三点,你就别想着什么记录集过滤了,该用select ... from .. where...的时候就用吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-27
关于记录集的Filter属性,是不是不能设置为:"字段名 is not null",或者:"left(字段名,2) = '数值'"
应该可以写成: 字段名 Like 'XX*',is not 应该不可以吧,<、>、<=、>=、<>、= 或 LIKE 是支持的

赋值可以试一下
Dim rs As New adodb.Recordset
set rs= adodc1.recordset追问

呵呵,我不想使用adodc控件啊,再说,使用这个控件也不能解决我的问题~

追答

不用控件就直接定义记录集变量,通过执行sql语句就可以了,有记录集了想怎么玩就怎么玩,其实和你把adodc控件隐藏起来,自己加按钮什么的,然后在事件里面用adodc的方法属性差不多,呵呵,主要的代码就几句
Dim conn As New adodb.Connection
Dim rs As New adodb.Recordset
Dim connStr As String, sql As String

connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库;Persist Security Info=False" 'Access
conn.Open connStr
sql="select * from 表"
rs.Open sql, conn, adOpenDynamic, adLockBatchOptimistic '后两个参数根据需求搭配
还有好多属性,可以看一下Microsoft ActiveX Data Objects (ADO)帮组文件

追问

sql查询我会,但主要问题不是这个,上面我已经说的很清楚了。要从记录集中查询,而不是从表中查询

追答

开始回答的就是,用Filter属性,如果不能达到你的要求,想用sql语句查询,就写临时表吧

追问

请问下临时表是如何工作的?是在本地计算机的内存中建立的呢还是在服务器上建立的?

追答

如果方便的话,直接在数据库建立好,用的时候直接用,如果数据比较大的话在本地直接建一个好了

第2个回答  2011-10-13
'菜单"工程"->"引用" 找 Microsoft ActiveX Data Object....
然后用sql嵌套即可追问

sql嵌套是在数据库中查询呢还是在内存中查询?

追答

在数据库中查询

追问

那还是不能解决我的问题,我就是想在内存中查询才问这两个问题的

追答

如果第一次使用SQL,可以把结果放到LISTVIEW,然后LISTVIEW可以提供查找功能

追问

listview可是使用sql的所有的查询条件吗?比如说:>,<,between,is null ,is not null ?

追答

我没那么说

第3个回答  2011-10-13
这个不是问题,可以解决!如果有诚意就加我为好友,我再告诉你QQ号。我可以把代码给你,前提是你要舍得分哟。追问

只要问题能解决,分是不成问题的。qq:553589984,验证信息填写:vb 即可,谢谢!

追答

加了,速回复!

第4个回答  2011-11-02
己加qq联系追问

请把答案贴上来吧,时间不多了,我将在4个小时内结贴。

相似回答