我有一個表,其中有一個欄位,有單一和重復的條目,比方說字:
| en | enid | 蘋果 | 13 | |
|---|---|---|---|---|
| 3 | 3 | |||
| 3 | ||||
| 水 | 水 | 水 | 水 | 4 |
| 4 | 4 | |||
| 4 |
欄位 "en "包含英語單詞。欄位 "enid "是一個將要創建的欄位,它將根據欄位 "en "用數字填充,以便重復的單詞得到相同的數字。
有什么辦法可以自動填充 "enid "欄位嗎?
uj5u.com熱心網友回復:
的函式RowNumber。
' 在一個選擇、追加或創建查詢中建立連續的行號。
' 具有初始自動重置的選項。
' 可以選擇傳遞一個分組鍵來重置行數。
' 對于每一個分組鍵。。
'
' 使用方法(典型的選擇查詢有一個索引的ID):
' SELECT RowNumber(CStr([ID]) ) AS RowID, *
' FROM SomeTable
' WHERE (RowNumber(CStr([ID])) <> RowNumber(",",True));
'
' 使用方法(典型的選擇查詢有一個ID,沒有索引):
' SELECT RowNumber(CStr([ID]) ) AS RowID, *
' FROM SomeTable
' WHERE (RowNumber(",",True)=0);
'
' 用法(含組鍵):
' SELECT RowNumber(CStr([ID]), CStr[GroupID]) AS RowID, *
' FROM SomeTable[/span
' WHERE (RowNumber(CStr([ID])) <> RowNumber(",",True));
'
' Where陳述句在運行查詢時重置了計數器。
' 并且在瀏覽選擇查詢時需要。
'
' 用法(典型的追加查詢,手動重置):
' 1. 手動重置計數器:
' Call RowNumber(vbNullString, True)
' 2.運行查詢:
' INSERT INTO TempTable ( [RowID] )
' SELECT RowNumber(CStr([ID]) ) AS RowID, *
' FROM SomeTable;
'
' 用法(典型的追加查詢,自動重置):
' INSERT INTO TempTable ( [RowID] )
' SELECT RowNumber(CStr([ID]) ) AS RowID, *
' FROM SomeTable
' WHERE (RowNumber(",",True)=0);
'
' 2020-05-29. Gustav Brock, Cactus Data ApS, CPH.。
'
Public Function RowNumber( _)
ByVal Key As String, _
Optional ByVal GroupKey As String, _
Optional ByVal Reset As Boolean) _
As Long Long _
' 不常見的字串,將GroupKey和Key組合為一個復合鍵。
Const KeySeparator As String = "¤§¤"
' 預期接受的錯誤代碼。
Const CannotAddKey As Long = 457
Const CannotRemoveKey As Long = 5
Static Keys As New Collection
Static GroupKeys As New Collection
Dim Count As Long
Dim CompoundKeyAs String
On Error GoTo Err_RowNumber
If Reset = True Then
' 擦除鍵的集合和組鍵計數。
Set Keys = Nothing
Set GroupKeys = Nothing
Else
' 創建一個復合鍵來唯一識別GroupKey和它的Key。
' 注意:如果不使用GroupKey,將只添加一個元素。
CompoundKey = GroupKey & KeySeparator & Key
Count = Keys(CompoundKey)
If Count = 0 Then
' 這個記錄沒有被列舉出來。
'
' 如果組鍵是新的,則會失敗,讓Count為零,
' 或者檢索已經用這個組鍵列舉的記錄數。
Count = GroupKeys(GroupKey) 1
If Count > 0 Then
' 該組鍵已被記錄。
' 洗掉它,以允許它被重新創建,持有新的計數。
GroupKeys.Remove (GroupKey)
Else
' 這條記錄是第一條擁有這個組鍵的記錄。
' 因此,計數為1.。
Count = 1
End If
' (Re)create the group key item with the value of the count of keys.
GroupKeys.Add Count, GroupKey
End If
' 添加鍵和其列舉。
' 這將是:
' 使用無組鍵。相對于完整的記錄集。
' 使用一個組鍵。 相對于組鍵。
' 如果鑰匙已經被創建,將會失敗。
Keys.Add Count, CompoundKey
End If
' 回傳鍵值,因為這是一個行計數器。
RowNumber = Count
Exit_RowNumber:
Exit 功能
Err_RowNumber: Function
Select Case Err
Case CannotAddKey
' 鍵已存在,因此不能再添加。
恢復 接下來
Case CannotRemoveKey
' GroupKey不存在,因此不能被移除。
Resume Next
Case Else
' 一些其他錯誤。忽略不計。
恢復 Exit_RowNumber
End Select
End Function[/span
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314447.html
標籤:

