SELECT a.ID,
a.AText,
(SELECT Count(ID)
FROM table1 b WHERE b.ID <= a.ID
AND b.AText Like "*a*") AS RowNo
FROM Table1 AS a
WHERE a.AText Like "*a*"
ORDER BY a.ID;
SELECT a.ID,
a.AText,
(SELECT Count(ID)
FROM table1 b WHERE b.ID <= a.ID
AND b.AText Like "*a*") AS RowNo
FROM Table1 AS a
WHERE a.AText Like "*a*"
ORDER BY a.ID;
SELECT x.ID,count(*) as RowNumber
FROM
(select distinct * from KZS_AllClass Where id in(3,6,9)) as x
inner join
(select distinct * from KZS_AllClass Where id in(3,6,9)) as y
on x.ID>=y.ID
group by x.ID
清空表全部记录后重置自动编号起始值
时 间:2012-05-17 06:33:34
作 者:www.microsoft.com QQ:77239897
摘 要:清空表全部记录后重置自动编号起始值
正 文:
Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean
'清空表全部记录后重置自动编号起始值
'You must pass the following variables to this function.
'strTbl:包含自动编号字段的表
'strCol:表中自动编号的字段名
'lngSeed:新自动编号的起始值
'必须同时引用 Microsoft ActiveX Data Objects 2.x 和 Microsoft ADO Ext 2.x for DDL and Security Libraries(其中 2.x 是指 2.1 或更高版本)
Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column
DoCmd.RunSQL "Delete * FROM " & strTbl & ""
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn
Set col = cat.Tables(strTbl).Columns(strCol)
col.Properties("Seed") = lngSeed
cat.Tables(strTbl).Columns.Refresh
If col.Properties("seed") = lngSeed Then
ChangeSeed = True
Else
ChangeSeed = False
End If
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing
End Function
Have Autonumber field start from a value different from 1 | Author(s) |
Dev Ashish & Alden Streeter | |
(Q) Can I change the starting value of a counter type field? Alternative method: You can make an Append query that just appends a value from a parameter, to just the auto-number field (as long as no other fields are required), e.g.: PARAMETERS [Number] Long; |
Dim myData As String
Dim myDb As DAO.Database
Dim myTbl As DAO.TableDef
Dim f As DAO.Field
myData = ThisWorkbook.Path & "\abc.mdb"
myTable = "清单"
mytablc = "基本信息"
On Error Resume Next
Kill myData
On Error GoTo 0
Set myDb = CreateDatabase(myData, dbLangChineseSimplified)
Set myTbl = myDb.CreateTableDef(myTable)
With myTbl
Set f = .CreateField("序号")
f.Type = dbLong
f.Attributes = dbAutoIncrField
.Fields.Append f
' .Fields.Append .CreateField("序号", dbLong, 50)
.Fields.Append .CreateField("定额编号", dbText, 50)
.Fields.Append .CreateField("工程名称", dbText, 200)
.Fields.Append .CreateField("单位", dbText, 20)
.Fields.Append .CreateField("人工费", dbSingle)
.Fields.Append .CreateField("材料费", dbSingle)
.Fields.Append .CreateField("机械费", dbSingle)
.Fields.Append .CreateField("基价", dbSingle)
.Fields.Append .CreateField("计算式", dbText, 255)
End With
myDb.TableDefs.Append myTbl
myDb.Close
Set myDb = Nothing
End Sub
excel中的sql没有排名函数,比较蛋疼,否则用now_number()可简单解决
不过你可以用多个组合字段使其唯一从而达到结果
select *,(select count(*)+1 from tb where a+b+c > t.a+t.b+t.c) as id from tb as t
其实更简单的方法是你在源表中按某种方式排完序后直接填充序列即可
Access数据库自增长字段值的修改及初始值的设置是本文我们主要要介绍的内容,Access的自增长字段的值的修改,发现原来Access自增长比起SQL Server的标识列有一定的灵活性。比如Access的自增长字段可以直接insert记录时指定数值,但是不要和已经有的记录的该字段值重复了,会主键冲突的,而SQL Server就不行了。
并且如果某个自增长序号已经有记录了,那么删除这条记录后还可以设定该值作为新记录的序号值。但是对于已有的记录,就不能修改自增长字段的值了,如果确需修改,有两种方法,要不就是删除原记录,重新插入数据时指定该字段值。要不就是去除自增长属性,修改成一个不重复的值保存后再将该字段类型设置成自动增长。
那么,如果想设定Access数据库自增长字段的初始值该怎么办呢,这个较为简单,可以通过特定SQL语句即可实现。
如果创建表结构时想设定自增长字段的初始值可以这条语句:
CREATE TABLE 表名 ( 自增长字段名 AUTOINCREMENT (1000, 10), ItemId LONG, Quantity LONG)
如果表结构已经存在,可以通过这条语句修改:
ALTER TABLE 表名 ALTER COLUMN 自增长字段名 COUNTER (2000, 50)
如果想复位自增长种子重新开始,可以这样:
ALTER TABLE 表名 ALTER COLUMN 自增长字段名 COUNTER (1, 1)
好了,SQL Server和Access两种数据库的自增长(标识列)都可以修改字段值了。有什么用呢,呵呵,很有用,对于我目前手同的工作来说,就是可以在程序中增加数据导入导出文本文件了,并且导入后一些关键的排序主键字段值不会发生改变,能保持原有数据的编号。
关于Access数据库自增长字段值的修改及初始值的设置的相关内容就介绍到这里了,希望本次的介绍能够对您有所收获!