2017-10-06 66 views
0

我想从表中选择预定义数量的随机记录(使用种子)。访问将表单变量传递给SQL命令

我写了下面的,但它不工作

SELECT TOP ([Forms]![Form1]![NumerofElements]) * 
FROM TableA 
ORDER BY Rnd(-(100000*ID)*[Forms]![Form1]![Seed]) 

你对我怎么可以在SQL直接传递中报告的表格(Form1)这些信息的任何想法?

+0

就我所知,您不能动态更改这个“TOP”数量。它需要被硬编码到查询中。不过,您可以使用VBA来修改查询。 –

回答

0

不,TOP不带参数。

您可以使用该SQL创建查询:

Sql = "SELECT TOP {0} * FROM TableA ORDER BY Rnd(-Timer()*[ID])" 

,然后用替换:

YourQuery.SQL = Replace(Sql, "{0}", ([Forms]![Form1]![NumerofElements])) 

,然后使用该查询。

+0

我还会在'CInt'函数中包装'[Forms]![Form1]![NumerofElements]'以防止可能的SQL注入。不幸的是,你不能在这里使用参数 –

+0

@ErikvonAsmuth:好主意。 – Gustav

+0

我需要把这两个行在VBA编辑器?然后我怎样才能调用查询?此外,它表示即使存在,也无法找到'Form1'。非常感谢! – smaa