一个SQL语句的错误问题

Setmrs=mcn.Execute("select*from表1ainnerjoin表1bona.姓名=b.姓名where课程=var_课程and年龄=var_年龄")... Set mrs = mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名 where 课程 = var_课程 and 年龄 = var_年龄 ")
实时错误:
该特定字段'课程'可以参考SQL语句中 FROM 子句列表中的多个表,怎么会这样啊?
wangzhiqing999,你好
按照你的改写 执行后 出现“变量 var_”未定义啊????
我执行:Set mrs =mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名")后
下句用消息框显示:MsgBox mrs("学分")
错误:在对应所需名称或序数的集合中,未找到项目!
展开
 我来答
百度网友8d4a00c2
2010-10-15 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:47.1万
展开全部
Set mrs = mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名 where 课程 = var_课程 and 年龄 = var_年龄 ")

这句错在这里,有两种可能:
1:如果你的var_课程和var_年龄是要放到数据库中比较的值,请这样写SQL语句:
Set mrs = mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名 where 课程 = 'var_课程' and 年龄 = 'var_年龄 '")
原因:如果不加单引号,这条语句到数据库执行的时候,会把var_课程和var_年龄看做是两个变量,而不是字符串!所以就会报出现“变量 var_”未定义的错误!

2:如果你的var_课程和var_年龄是程序中的变量,请这样写你的SQL语句:
Set mrs = mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名 where 课程 = '"+var_课程+"' and 年龄 = '"+var_年龄 +"'")
原因:如果是变量,你把变量名直接写到字符串里面去了,程序在执行的时候是不会把变量的值代进去的,只会用你的变量名!所以也会报出现“变量 var_”未定义的错误!

至于你的这个错误:
下句用消息框显示:MsgBox mrs("学分")
错误:在对应所需名称或序数的集合中,未找到项目!

应该是没有学分这一列。
笑着笑着醒来了
2010-10-14 · TA获得超过3653个赞
知道大有可为答主
回答量:4501
采纳率:66%
帮助的人:1956万
展开全部
你这个课程前面也加上表名,包括var_课程,年龄也是一样,你再试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2010-10-15 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3351万
展开全部
select * from 表1 a inner join 表1 b on a.姓名=b.姓名
上面都还好
下面 估计有问题
where 课程 = var_课程 and 年龄 = var_年龄
var_课程 与 var_年龄
是你 程序里面的变量。 数据库无法获取的
可以修改为
Set mrs = mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名 where 课程 = '" + var_课程 + "' and 年龄 = " + var_年龄 )
由于我不清楚你这个程序是什么语言写的, 字符串 连接的部分,都是 +
如果是 VB 的, 请用 &

-----

出现“变量 var_”未定义
你程序里面没有 var_课程 与 var_年龄 的?

那你就直接
mcn.Execute("select * from 表1 a inner join 表1 b on a.姓名=b.姓名")
吧。

---
你那个表1 里面, 到底有啥字段啊?
MsgBox mrs("学分")
没有, 你就 MsgBox mrs("姓名")
看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tpywocao
2010-10-15 · 超过18用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:47.5万
展开全部
应该是"a.课程=var_课程 and a.年龄 = var_年龄"或者"b.课程=var_课程 and b.年龄 = var_年龄"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月铘
2010-10-16
知道答主
回答量:18
采纳率:0%
帮助的人:20.4万
展开全部
其实你开始的错误已经说的很明白了啊, 字段“课程”,在a,b两个表中都有,它分不清应该显示哪个表的。。
你可以a.列名,...这样把列明全部列出来。

但是我看你写的sql,所使用表连接没有任何含义啊?
a和b都是表1,姓名和姓名关联。。等于关联后的数据还是表1
你直接 select * from 表1 where 课程 = var_课程 and 年龄 = var_年龄
不就行了么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式