VB 如何 把多个sql语句结果一次性返回?

三色 2010-12-18 10:41:06
比如sql语句如下
use db
update ***
insert ****
select A,B from t1
select C,D,E from t2


以上过程如何在VB中执行,并把2个select语句结果返回给VB。

目前经常使用的是单一select语句的返回,如
recordset.Open "select ***",ConnectorString, adOpenKeyset, locktype


但是很多sql语句一起返回的不知怎么进行,请高手指点
...全文
263 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2010-12-21
  • 打赏
  • 举报
回复
如果你只是想达到查询分析器的显示结果,那不用这样处理....
所有语句单独执行,声明一个记录集,操作中对每一个返回的记录集,即时动态加载控件显示出来即可。而对于不返回记录集的insert,update的操作,用execute方法中的RecordsAffected参数返回操作所影响的记录数目提示即可....
choovy123 2010-12-21
  • 打赏
  • 举报
回复
VB code

dim sql as string
dim rs as adodb.recordset

sql="select A,B from t1; select C,D,E f……

rst.Movenext

不错
这个想法很好 收藏了
jhone99 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 threecolor 的回复:]
其实我是想写一个简易查询分析器,为了我写的客户端可以查询大部分数据。
但是有些特别需求查询只能通过sql语句来完成。
所以有了这样的需求
[/Quote]

强……
jhone99 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vbman2003 的回复:]
如果你是sql数据库,你可以将二个select语句写成一句sql语句查询(各句之间用分号分隔),返回记录集后,通过记录集的nextrecordset属性,得到各个记录集......

伪代码:

VB code

dim sql as string
dim rs as adodb.recordset

sql="select A,B from t1; select C,D,E f……
[/Quote]

不错,又学了一招,谢谢了
三色 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vbman2003 的回复:]
如果你是sql数据库,你可以将二个select语句写成一句sql语句查询(各句之间用分号分隔),返回记录集后,通过记录集的nextrecordset属性,得到各个记录集......

伪代码:

VB code

dim sql as string
dim rs as adodb.recordset

sql="select A,B from t1; select C,D,E f……
[/Quote]

感谢,让我知道了可以同时查询多个select语句。
但是我的问题要复杂一些,因为不是单纯的select语句,前面有很多其它SQL语句,怎么办?
三色 2010-12-21
  • 打赏
  • 举报
回复
感谢,让我知道了可以同时查询多个select语句。
但是我的问题要复杂一些,因为不是单纯的select语句,前面有很多其它SQL语句,怎么办?
vbman2003 2010-12-19
  • 打赏
  • 举报
回复
如果你是sql数据库,你可以将二个select语句写成一句sql语句查询(各句之间用分号分隔),返回记录集后,通过记录集的nextrecordset属性,得到各个记录集......

伪代码:

dim sql as string
dim rs as adodb.recordset

sql="select A,B from t1; select C,D,E from t2"
set rs=new adodb.recordset
rs.open sql....

do until rs is nothing
do while not rs.eof
debug.? rs.field(0)
rs.movenext
loop
set rs= rs.nextrecordset '下一个记录集
loop

xxkxef 2010-12-19
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
dbcontrols 2010-12-18
  • 打赏
  • 举报
回复
此示例假设在员工表中存在假设的单位名称和单位标识符的字段。注意这些字段实际上在 Northwind 数据库员工表中并不存在。
此示例选择所有单位,包含那些不含员工的单位。
此示例调用 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。
ub LeftRightJoinX()

Dim dbs As Database, rst As Recordset

' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")

' 选择所有单位,包含那些不含员工的单位。
Set rst = dbs.OpenRecordset _
("SELECT [Department Name], " _
& "FirstName & Chr(32) & LastName AS Name " _
& "FROM Departments LEFT JOIN Employees " _
& "ON Departments.[Department ID] = " _
& "Employees.[Department ID] " _

& "ORDER BY [Department Name];")

'移居记录集。
rst.MoveLast

' 调用 EnumFields 来打印 Recordset 的内容。
' 通过 Recordset 对象和需要的字段宽度。
EnumFields rst, 20

dbs.Close

End Sub
dbcontrols 2010-12-18
  • 打赏
  • 举报
回复
LEFT JOIN 和 RIGHT JOIN 运算

当使用在任何的 FROM 子句中,将组合来源表的记录。

语法

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 compopr table2.field2

LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:

部分 描述
table1, table2 记录被组合的表的名称。
field1, field2 被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>."
说明

使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
使用一个 RIGHT JOIN 运算创建一个右边外部联接。右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。
例如,可以使用 LEFT JOIN 与部门(左边)及员工(右边)表来选择所有的部门,包含了没有分配到员工的部门。可以使用 RIGHT JOIN 选择所有的员工,包含了没有分配到部门的员工。

下列示例显示如何在类标识符字段中联接类表及产品表。查询将会列出所有种类的列表,包含那些没有产品在其中的种类:

SELECT CategoryName,
ProductName
FROM Categories LEFT JOIN Products
ON Categories.CategoryID = Products.CategoryID;

在此示例中,类标识符是联接字段,但它并不会包含在查询结果之中,因为它没有被包含在 SELECT 语句中。要包含联接的字段,请在 SELECT 语句中输入字段名 - 在这个示例中为 Categories.CategoryID


注意

?使用 INNER JOIN 运算创建一个查询,且该查询只包含在联接字段中有相同数据的记录。
?在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写嵌套的 INNER JOIN。请参阅 INNER JOIN 主题中有关使用嵌套的讨论,从其中可获知如何在其它联接中编写嵌套联接的信息。
?可以链接多个 ON 子句。若需更多信息,请参阅在 INNER JOIN 主题中的子句链接的讨论。

?如果您想试图联接包含Memo 数据类型或 OLE Object 数据类型的字段,将会发生错误。
三色 2010-12-18
  • 打赏
  • 举报
回复
其实我是想写一个简易查询分析器,为了我写的客户端可以查询大部分数据。
但是有些特别需求查询只能通过sql语句来完成。
所以有了这样的需求
luofenghen 2010-12-18
  • 打赏
  • 举报
回复
一起返回嘛 只能建个零时数据集 插入进去
建议写成存储过程
ningweidong 2010-12-18
  • 打赏
  • 举报
回复
你想一块返回干什么

7,763

社区成员

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

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