Office中国论坛/Access中国论坛

标题: Select语句中 为什么 top 的值不能用参数 ? [打印本页]

作者: 红过刘德华    时间: 2006-6-18 17:50
标题: Select语句中 为什么 top 的值不能用参数 ?
PARAMETERS 组 Long, items_lng Short;
SELECT TOP [items_lng] 交易基本数据.物理单号ID, 交易基本数据.组号ID, 交易基本数据.序列号ID, 交易基本数据.人员号ID, 交易基本数据.加盟店编号ID, 交易基本数据.获赠次数, 交易基本数据.推荐人增援物理单号ID, 交易基本数据.是否结算, 交易基本数据.自定义次数
FROM 交易基本数据
WHERE (((交易基本数据.组号ID)=[组]) AND ((交易基本数据.是否结算)=False))
ORDER BY 交易基本数据.序列号ID;

top 值 一使用参数就 报错 ! 其它用参数都没有问题.

感谢!

[em06]

[此贴子已经被作者于2006-6-18 9:55:50编辑过]


作者: wuaza    时间: 2006-6-18 18:39
SQL语句中包括top在内的一些关键字是不能用变量的。如表名。
作者: andymark    时间: 2006-6-18 19:22
可以在窗体中实现[attach]18571[/attach]

作者: 红过刘德华    时间: 2006-6-19 14:33
Private Sub Command0_Click()
Dim Sql As String
Dim AQueryDef As QueryDef
Dim Message, Title, Default, MyValue
Title = "请输入Top Number"    ' 设置标题。
Default = 20      ' 设置缺省值。
MyValue = InputBox(Message, Title, Default)
CurrentDb.QueryDefs.Refresh
Set AQueryDef = CurrentDb.QueryDefs("查询1")
AQueryDef.Sql = "SELECT TOP " & MyValue & " *  FROM 教师"
If (Err) Then
   Exit Sub
End If
AQueryDef.Close
CurrentDb.QueryDefs.Refresh
DoCmd.OpenQuery "查询1"
End Sub

这是用 DAO 的方式,需要查询中必需含有“查询1”的查询,如果ADO来编写,可以直接VBA 书写 sql 语句。这样不是不需要在查询中创建“查询1”了吗?这两种方式那个更好呢?

如果查询中有多个参数,如何用 ADO 来实现参数的传递?需要数组吗?

再次感谢!
作者: andymark    时间: 2006-6-19 19:46
ADO并不提供直接建立查询,这方面还是通过DAO或ADOX 实现 比较好


作者: 红过刘德华    时间: 2006-6-19 21:05
那么 ADO 是否可以调用 带 参数 的查询呢?

再次感谢!
作者: andymark    时间: 2006-6-19 21:44
在ADO上加上参数可以,反过来可能得不能你想要的效果,

把你的例子传上来看看




作者: SecurID    时间: 2013-6-29 00:45
内行看门道!外行看热闹
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3