一条奇怪的SQL语句:在VB和DatabaseTour执行结果不一样(急用)

AJNS 2004-11-24 01:17:53
我在开发的程序中用到这条SQL语句: select BGQX,MJ,ND,QWH,TM,WJBH,WZ,ZRZ,ZTC,DH,DOC_STATE from D_DA2004,SYSTEM.DOCUMENT_TABLE where DH=DOC_INSTANCE_ID(+)
其中:DH 属于 D_DA2004 ;DOC_INSTANCE_ID 属于DOCUMENT_TABLE
问题:
1.当 DOCUMENT_TABLE 里没有记录的时候,用Database Tour中执行返回正确的记录项,用VB的ADODB打开 数据库执行该语句却返回0条记录
2.当 DOCUMENT_TABLE 里有一条匹配记录的时候,用Database Tour中执行仍然正确,而用VB执行,则返回记录项的数量是无穷多,切只有一条正确记录

D_DA2004内容:
MJ WZ WJBH DZWJH QWH WB SJ ZTDW FLH FZ ND JH ZH XHBJ JYBJ FH QZH BGQX ZTC ZTGG ZTSL ZRZ TM DH SWH GH ZTLX

绝密 命令 1文件1文件编号 <null> 1文件1全识标 正本 1文件1时间 页 1文件1分类号 1文件1附注 2004 1.00 0.00 <null> 1 1.00 00001 永久 1文件1主题词 <null> 1.00 1文件1责任者 1文件1题名 00001-Y-WS.W-2004-001-001 <null> 管代号 纸张

机密 决定 1文件2文件编号 <null> 1文件2全识标 副本 1文件2时间 页 1文件2分类号 1文件2附注 2004 1.00 0.00 <null> 1 2.00 00001 永久 1文件2主题词 <null> 0.00 1文件2责任者 1文件2题名 00001-Y-WS.W-2004-001-002 <null> 管代号 纸张


国内 通令 2文件1文件编号 <null> <null> 副本 2文件1时间 页 <null> <null> 2004 2.00 0.00 <null> 1 1.00 00001 永久 2文件1主题词 <null> 0.00 责任者 2文件1题名 00001-Y-WS.W-2004-002-001 <null> 案号 纸张


DOCUMENT_TABLE,有记录时的内容:
DOC_ID DOC_TYPE DOC_STATE DOC_INSTANCE_ID
0+00001-Y-WS.W-2004-001-001 0.00 1.00 00001-Y-WS.W-2004-001-001

此时执行的结果为
BGQX MJ ND QWH TM WJBH WZ ZRZ ZTC DH DOC_STATE

永久 绝密 2004 1文件1全识标 1文件1题名 1文件1文件编号 命令 1文件1责任者 1文件1主题词 00001-Y-WS.W-2004-001-001 1.00

永久 机密 2004 1文件2全识标 1文件2题名 1文件2文件编号 决定 1文件2责任者 1文件2主题词 00001-Y-WS.W-2004-001-002 <null>

永久 国内 2004 <null> 2文件1题名 2文件1文件编号 通令 责任者 2文件1主题词 00001-Y-WS.W-2004-002-001 <null>
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AJNS 2004-11-24
  • 打赏
  • 举报
回复
感谢回复,我说的执行正确的意思,就是和理论上的结果一致,没有任何问题
无穷多就是用 recordset.movenext 可以执行无数次,永远倒不了recordset.eof=true
(+) 是 关键,必须的,不可能去掉,再次感谢
zhongfabai 2004-11-24
  • 打赏
  • 举报
回复
Oracle语法吧?
“用Database Tour中执行返回正确的记录项”:怎么个正确法?
“返回记录项的数量是无穷多”:无穷多?夸张了吧。

你把最后的 (+) 去掉,你确定要用左连接吗?
aohan 2004-11-24
  • 打赏
  • 举报
回复
vb里面的语句是怎么写的?

1,216

社区成员

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

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