A.D.Tejpal
adtp at touchtelindia.net
Mon Jun 13 00:19:22 CDT 2005
Bruce, So long as the source table has a primary key field, simplified function Fn_RowNum() as given below, gets sequential row numbers, starting from 1. Its use in a sample query is demonstrated below. This function has an additional advantage that the output is stable as compared to alternatives using increments to static or global variables, where the results are volatile, prone to change with repeat navigation (up and down) through the column concerned. Q_Source is the source query (where contents of source table / tables are duly collected and sorted as desired), while ID is the name of primary key field in source table. If raw data in a single source table is desired to be used directly, without any sorting, name of this table can be used (in lieu of Q_Source), in the sample query given below. Best wishes, A.D.Tejpal -------------- Sample Query (for generating sequential row numbers) Based upon source query Q_Source. (ID is the name of primary key field). ===================================== SELECT Q_Source.*, Fn_RowNum("Q_Source","ID",[ID]) AS RowNum FROM Q_Source; ===================================== Fn_RowNum() - User defined function ===================================== Function Fn_RowNum(ByVal QueryName As String, _ ByVal PrimaryKeyName As String, _ ByVal PrimaryKeyValue As Long) As Long ' Returns Row number for the record having primary key field ' named PrimaryKeyName with a value = PrimaryKeyValue, ' in source query named QueryName Dim Rct As Long Dim rst As DAO.Recordset Rct = 0 Set rst = CurrentDb.OpenRecordset(QueryName) rst.FindFirst PrimaryKeyName & " = " & PrimaryKeyValue If Not rst.NoMatch Then Rct = rst.AbsolutePosition + 1 End If Fn_RowNum = Rct rst.Close Set rst = Nothing End Function ===================================== ----- Original Message ----- From: Bruen, Bruce To: AccessD at databaseadvisors.com Sent: Friday, June 10, 2005 07:38 Subject: [AccessD] Generating a rownumber field in a query Hi folks, I want to output a sequence number as a field in a query result. Everytime the query runs it should restart the sequence number from 1. The query appends rows to a "testscript" table, every new test cycle we generate a new set of test scripts which is made up of all the tests in the previous cycle plus new tests that were added during the execution of the last cycle. The natural key for the output table is the cycle number + the sequence number. Cycle Seq Testname ..... 1 1 blah 1 2 blah blah ... 2 1 blah blah 2 2 blah blah blah etc The cycle number is input as a parameter to the append query. But how can I generate the sequence numbers? tia bruce