如果table2里没有所需的数据就进table1里面查询

wingq 2009-06-15 03:21:29
这样他提示:错误类型:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配: 'exists'

[code=VBSCRIPT]sj(0)="1"
sj(1)="2"
sj(2)="3"
for i=0 to 2
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
if exists (sql="select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')") then
sql="select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
else
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
end if

rs.open sql,conn
if rs.eof and rs.bof then
else
for j=0 to 2
renyuan4(i,j)=rs.fields(j).value
next
rs.close
end if
set rs = nothing
[/code]
...全文
42 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wingq 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 mrshelly 的回复:]
建议 UNION 后,再 TOP 就行了....
[/Quote]

top?不太明白唉~~

SELECT *
FROM XZB_RYChange
WHERE 日期 = '2009-1-1' AND JZcode = '4'
UNION
SELECT *
FROM XZB_Template
WHERE 日期 = '2009-1-1' AND JZcode = '4'
wingq 2009-06-16
  • 打赏
  • 举报
回复
银狐大人,你的代码我这还是问题呀!

[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: '>' 附近有语法错误。

~~~~(>_<)~~~~ 各位大神们帮帮忙吧!!!
mrshelly 2009-06-16
  • 打赏
  • 举报
回复
建议 UNION 后,再 TOP 就行了....
wingq 2009-06-16
  • 打赏
  • 举报
回复
楼上的,你就表嘲笑我了吧!!!泪流!!我现在看着也很囧啊!!!我昨天为嘛脑抽会这么折腾。。。。
银狐被占用 2009-06-16
  • 打赏
  • 举报
回复
楼主强啊。SQL函数放到ASP里来写。

sj(0)="1" 
sj(1)="2"
sj(2)="3"
for i=0 to 2
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="if exists (select count(*) FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')>0) select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4' else SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
rs.open sql,conn
if rs.eof and rs.bof then
else
for j=0 to 2
renyuan4(i,j)=rs.fields(j).value
next
rs.close
end if
set rs = nothing
wingq 2009-06-16
  • 打赏
  • 举报
回复
藏*无限大人,你问我的三个关键字是“值长,班长,主控”在表2都没有再去表1查,还是只要有一个没有就去表1里查?

是这样的,只要改了一个,我就默认他全改了,在表二里都写一遍,不管他改得是值长还是班长,反正我都存到表二里,这样是没问题了的吧!

这样还牵扯到一个问题就是时间段的问题,如果,我改的是时间段1那么在表二中只有一,我就只能查出时间段1,时间段2,3都会是空的了,这样我就只有和上面一样,把它一天三个时段全写一遍存到表2里面?但是一次写入三行字段可行吗?我现在只会一次写入一行字段。

呜~~问题比较多,先在这谢谢帮我忙的各位大人们了!!
wingq 2009-06-16
  • 打赏
  • 举报
回复
唔,昨天下班被赶走了,抱歉,抱歉~

这个就是实现这样的功能,有一个模版表,他里面的数据是不能动的,叫表一,还有个专门用来存放修改过的模版表里的数据,叫表二,他们的表结构都是一样的,就是管理员通过修改后的数据放入到表二里,然而,我要查询所要的信息的时候,首先要看表二里有没有这条信息,就是修改过的信息,要是有,就用表二里的,没有就再去表一里面查找。
  • 打赏
  • 举报
回复
什么意思?
wingq 2009-06-15
  • 打赏
  • 举报
回复
只要有一个就要去查!!
wingq 2009-06-15
  • 打赏
  • 举报
回复
恩exists我是被人误导了要这么做的,才死命的用exists的,现在不用exists,我可以怎么来两个表的查询?

  • 打赏
  • 举报
回复
你是三个关键字在表2都没有再去表1查,还是只要有一个没有就去表1里查
  • 打赏
  • 举报
回复
这个清楚,但是你的本身就有问题
sj(0)="1"
sj(1)="2"
sj(2)="3"
for i=0 to 2
if where="" then
where=" 时间段序号='"&sj(i)&"' "
else
where=where&" or 时间段序号='"&sj(i)&"' "
end if
next
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and ("& where &") and (JZcode='4')"
if rs.eof and rs.bof then
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and ("& where &") and (JZcode='4')"
'这里再领带打开一个rs对象
else
'不然你要做什么,感觉这么写是不对的,还有exists不是你那么用的
'for j=0 to 2
'renyuan4(i,j)=rs.fields(j).value
'next
end if
rs.close
set rs = nothing
wingq 2009-06-15
  • 打赏
  • 举报
回复
以下是我就是查询一个表1里的,但现在就是有张表2,我得先查询表2里,有没有所需的数据,要有就显示表2的,没有再去查询表1.
sj(0)="1" 
sj(1)="2"
sj(2)="3"
for i=0 to 2
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
rs.open sql,conn
if rs.eof and rs.bof then
else
for j=0 to 2
renyuan4(i,j)=rs.fields(j).value
next
end if
rs.close
set rs = nothing
next
wingq 2009-06-15
  • 打赏
  • 举报
回复
我承认我是笨蛋,人家是半瓶醋,我是五分之一还不知有没有,唉····

藏*无限大人!我真的很膜拜你!很佩服!!

可是你给我的这段到底是麻意思呀???我狠茫然啊?

我要先在表2里面查询一遍有没有需要的记录,要有就用它,要没有就再去表1里面找,是这样啊!
  • 打赏
  • 举报
回复
sj(0)="1" 
sj(1)="2"
sj(2)="3"
for i=0 to 2
if where="" then
where=" 时间段序号='"&sj(i)&"' "
else
where=where&" or 时间段序号='"&sj(i)&"' "
end if
next
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and ("& where &") and (JZcode='4')"

即可
  • 打赏
  • 举报
回复
没这么写的大哥!!
服了
wingq 2009-06-15
  • 打赏
  • 举报
回复
这样写么显示了啊?
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
rs.open sql,conn
if rs.eof and rs.bof then
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
if rs.eof and rs.bof then
else
for j=0 to 2
renyuan4(i,j)=rs.fields(j).value
next
end if
else
for j=0 to 2
renyuan4(i,j)=rs.fields(j).value
next
end if
rs.close
set rs = nothing
haichengxp 2009-06-15
  • 打赏
  • 举报
回复
没见过这种用法的
wzwmu 2009-06-15
  • 打赏
  • 举报
回复
sql="select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
rs.open sql,conn
if rs.eof and rs.bof then
sql="SELECT 值长,班长,主控 FROM XZB_TempLate where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')"
end if
rs.open sql,conn
ttt2 2009-06-15
  • 打赏
  • 举报
回复
if exists (sql="select 值长,班长,主控 FROM XZB_RYChange where (日期 = '"&b&"') and (时间段序号='"&sj(i)&"') and (JZcode='4')") then

没这么用的吧

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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