vb 多表查询SQL语句

heshengyuboy 2011-04-19 01:14:35
我有一个数据库文件,里面的表结构是这样的
(表名)部门:
(字段名)代码;名称
(表名)仓库:
(字段名)代码;名称
(表名)出入库单据:
(字段名)出入库类型;编号;日期;供应商代码;客户代码;部门代码;保管员代码;收货员代码;发货员代码
(表名)出入库分录:
(字段名)编号;分录号;物料编码;计量单位代码;实收数量;单价;金额;收料仓库;实发数量;单位成本;成本;销售单价;销售金额;发货仓库代码
(表名)供应商:
(字段名)代码;名称
(表名)计量单位:
(字段名)代码;名称
(表名)客户:
(字段名)代码;名称
(表名)物料:
(字段名)代码;名称
(表名)职员:
(字段名)代码;名称;性别;所属部门代码
出入库单据表和出入库分录表以编号连接,其他各表均通过各自代码与其他表对应字段链接
在VB6.0中怎么写这个的查询代码啊,请各位大侠帮帮我

...全文
358 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
chzhh123 2011-11-22
  • 打赏
  • 举报
回复
这个问题解决了吗?
回复者设的SQL中的主连接关系永将出入库单据改为出入库分录
lxq19851204 2011-04-19
  • 打赏
  • 举报
回复
scmd=scmd &" 出入库分录.单价 as 单价,出入库分录.金额 as 金额 "
多了一个"
lxq19851204 2011-04-19
  • 打赏
  • 举报
回复
Dim sCmd as String 
sCmd="select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码, "
scmd=scmd &" 供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,"
scmd=scmd &" 出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,"
scmd=scmd &" "出入库分录.单价 as 单价,出入库分录.金额 as 金额 "
scmd=scmd & " From 出入库单据 "
sCmd=scmd & " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 "
scmd=scmd & " left join 供应商 on 出入库单据.供应商代码=供应商.代码 "
scmd=scmd & " left join 客户 on 出入库单据.客户代码=客户.代码 "
scmd=scmd & " left join 物料 on 出入库分录.物料编码=物料.代码 "
Debug.print sCmd
adoPrimaryRS.Open sCmd, db,adopenkeyset,adlockreadonly

先把Debug.print sCmd 打印出来的sCmd放在查询分析器中查询一下结果,看正确与否?

heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 xyctc 的回复:]
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金……
[/Quote]
不行,这样改了之后出现操作符丢失错误
Billy 2011-04-19
  • 打赏
  • 举报
回复
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码",db, adOpenKeyset, adLockReadOnly

说了注意红色双引号的位置
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
检查过了,连接没有问题,字段名也没问题
但是还是出错阿
饮水需思源 2011-04-19
  • 打赏
  • 举报
回复
1,请检查db是否已经与数据库建立连接
2,请检查SQL语句中表名与字段名是否正确
king06 2011-04-19
  • 打赏
  • 举报
回复
码 " ,db, adOpenKeyset, adLockReadOnly '这后面几个是参数
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码 ,db, adOpenKeyset, adLockReadOnly"

是这么写的阿,还是那样的
饮水需思源 2011-04-19
  • 打赏
  • 举报
回复
adoPrimaryRS.Open " select ... from ... " , db,adopenkeyset,adlockreadonly
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 leftie 的回复:]
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\库存管理.mdb;"

Set adoPrimaryRS = ……
[/Quote]
还是一样啊
饮水需思源 2011-04-19
  • 打赏
  • 举报
回复
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\库存管理.mdb;"

Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码 ",db,adopenkeyset,adlockreadonly

Set grdDataGrid.DataSource = adoPrimaryRS
饮水需思源 2011-04-19
  • 打赏
  • 举报
回复
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\库存管理.mdb;"

Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码 ",db,adopenkeyset,adlockreadonly Set grdDataGrid.DataSource = adoPrimaryRS
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dbcontrols 的回复:]
ON后面的不是条件?


引用 7 楼 heshengyuboy 的回复:
我没写条件阿
[/Quote]
那是建立表与表之间关系的方式,不是筛选条件啊
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
改完之后提示:连接无法用于此操作。在此上下文中它可能已被关闭或无效。
我的代码是这样的
 Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\库存管理.mdb;"

Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码 "
Set grdDataGrid.DataSource = adoPrimaryRS
dbcontrols 2011-04-19
  • 打赏
  • 举报
回复
ON后面的不是条件?

[Quote=引用 7 楼 heshengyuboy 的回复:]
我没写条件阿
[/Quote]
饮水需思源 2011-04-19
  • 打赏
  • 举报
回复
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额 " _
& " From 出入库单据 " _
& " inner join 出入库分录 on 出入库单据.编号=出入库分录.编码 " _
& " left join 供应商 on 出入库单据.供应商代码=供应商.代码 " _
& " left join 客户 on 出入库单据.客户代码=客户.代码 " _
& " left join 物料 on 出入库分录.物料编码=物料.代码 "
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
我这么写了之后
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as 物料名称,出入库分录.实收数量 as 实收数量,出入库分录.单价 as 单价,出入库分录.金额 as 金额_"
From 出入库单据_
inner join 出入库分录 on 出入库单据.编号=出入库分录.编码_
left join 供应商 on 出入库单据.供应商代码=供应商.代码_
left join 客户 on 出入库单据.客户代码=客户.代码_
left join 物料 on 出入库分录.物料编码=物料.代码

提示缺少语句结束
king06 2011-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heshengyuboy 的回复:]
VB code
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 出入库单据.编号 as 编码,出入库单据.日期 as 日期,出入库单据.供应商代码 as 供应商代码,供应商.名称 as 供应商名称,出入库单据.客户代码 as 客户代码,客户.名称 as 客户名称,出入库分录.物料编码 as 物料编码,物料.名称 as……
[/Quote]
按1F的写法.
也不用那么多括号.
heshengyuboy 2011-04-19
  • 打赏
  • 举报
回复
我没写条件阿
加载更多回复(6)

7,785

社区成员

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

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