当前位置:编程学习 > VB >>

<<请VB高手帮忙,SQL多表关联视图问题>>

我在VB中查询SQL数据库,代码如下:
Private Sub Command1_Click()

......

If Val(Hour(nw)) = Val(hh) And Val(Minute(nw)) = Val(mm) Then
    Rst.Open "select * from user order by ID", Conn, adOpenStatic, adLockOptimistic
    mx = Rst.RecordCount
   ......
End If
End Sub

其中红色部分为查询数据库中USER表,在VB中可以正常返回结果
但是我将语句改为Rst.Open "select * from view_user order by ID", Conn, adOpenStatic, adLockOptimistic
view_user为我自己所建立的有多表关联查询的视图,在VB中就无法返回结果了,

请高手帮忙啊,谢谢!!! --------------------编程问答-------------------- 可能是view_user中使用了数据库引擎不支持的access内置函数... --------------------编程问答--------------------
引用 1 楼 vbman2003 的回复:
可能是view_user中使用了数据库引擎不支持的access内置函数...

可以说具体点吗?我用的数据库是SQL SERVER 2000

视图我是这样建立的:
create view dbo.view_user
as 
select distinct
a.Person,c.cPsn_Name,c.Phone,
a.Company,b.cusname,d.iAmount,d.ID from customer a
left join customer b on a.Company = b.CusCode
left join person c on a.Person = c.cPsn_Num
left join Bill d on a.Company = d.cDwCode
where a.Company in (select cDwCode from Bill) and a.Person is not null and c.Phone is not null

--------------------编程问答-------------------- 多表关联视图用只读方式打开
Set Rst = Conn.Execute("select * from view_user order by ID", , adCmdText)
--------------------编程问答-------------------- 首先这句select * from view_user order by ID能不能直接在SQL server得到结果
如果不行,那就是视图的条件问题
如果行,那么你可以试一下改成这样
Rst.Open "select * from user order by ID", Conn, adOpenKeyset, adLockReadOnly --------------------编程问答-------------------- 首先这句select * from view_user order by ID能不能直接在SQL server得到结果
如果不行,那就是视图的条件问题
如果行,那么你可以试一下改成这样
Rst.Open "select * from user order by ID", Conn, adOpenKeyset, adLockReadOnly --------------------编程问答-------------------- --------------------编程问答-------------------- 在视图中将dbo.去掉试试,因为在VB中你访问数据库的用户可能不是dbo --------------------编程问答-------------------- 另外把order by ID放到视图中去 --------------------编程问答-------------------- --------------------编程问答-------------------- up
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,