在访问查询中创建自动递增的字段

时间:2012-01-19 17:16:24

标签: sql function ms-access vba

我在访问中有一个查询,我需要它还有一个自动递增的字段。我无法将其物理添加到表格中。我试图为字段inc : incfun(1)

创建一个函数

编辑: 在我保存的查询中,我在设计模式中创建了一个名为INC : incfun(1)<的列 - 这就是我调用函数的方式。它将数据输出到INC列。

这是我在module1脚本文件中的函数。

Dim inc As Integer
Option Compare Database

Function incfun(num As Integer) '1 is first passed to function as 1
inc = num + 1 '1 added to global variable inc
incfun = inc  'inc value passed back to output of function.
End Function

编辑:每次刷新数据表时,它都会增加1,但不会自动增加所有行。无论如何要做到这一点?

2 个答案:

答案 0 :(得分:0)

你在做这样的事吗?

inc = incfun(1)
inc = incfun(1)

这两个调用都设置为等于参数(值= 1)+ 1.无论你调用它多少次inc = incfun(1)都会将inc设置为2。

使用inc = inc + 1,我认为这是更容易的解决方案。

或用以下函数替换函数体:

inc = inc + n
incfun = inc

答案 1 :(得分:0)

我知道这是旧的,但我也试图做这样的事情,我发现我的函数只在我没有参数的情况下调用一次,因为我真的不需要任何参数。只需要一个变量继续递增并返回它的值,但因为该函数只被调用一次,每一行都是1.我通过添加一个我没有使用的整数参数找到然后在其中一个中给出一个字段将表作为参数,它强制为每一行调用函数,从而得到所需的结果。

Dim inc As Integer 选项比较数据库

Public function autoInc(i As Long)As Integer inc = inc + 1 autoInc = inc 结束功能

然后在make table查询。

index:autoInc([sometable]。[numericalfield])