我想創建一個唯一的數字表格,該表格具有一個文本框以輸入要生成的唯一編號的數量以及一個運行程序的按鈕。到目前爲止,我使用的是VBA和SQL的組合(本質上,VBA代碼在while循環中運行SQL查詢)。 VBA代碼如下:Microsoft Access查詢試圖根據日期創建唯一序號的表格
Option Compare Database
Private Sub Command10_Click()
'Get number of iterations
Dim i As Integer
'Ensure that Form is open
DoCmd.OpenForm "Interface"
'Set i as value inputed into the Form
i = Forms![Interface]![Text6]
'Clear t3
DoCmd.RunSQL "DELETE * FROM t3"
'Generate as many control numbers as wanted
Do While i > 0
'Generate Control number
DoCmd.OpenQuery "Control", acViewNormal, acEdit
'Clean up duplicates
DoCmd.OpenQuery "Dup_Cont", acViewNormal, acEdit
'Populate t3 with only new control numbers
DoCmd.OpenQuery "New Numbers", acViewNormal, acEdit
'reduce i by 1
i = i - 1
Loop
'Open t3 as a ReadOnly table
DoCmd.OpenTable "t3", acViewNormal, acReadOnly
End Sub
是使用的SQL查詢如下:
「控制查詢」
INSERT INTO t1 (DATE, DATE_NUM, CONTROL_NUMBER, UNIQUE_NUM)
SELECT DISTINCT
'C77A' & Year(Date()) & Format(Month(Date()),'00') & Format(Day(Date()),'00') AS DATE_A,
IIf([DATE] Like [DATE_A],Count(*)+1,1) AS DATE_NUM,
[DATE_A] & Format([DATE_NUM],'000') AS CONTROL_NUM,
Year(Date()) & Format(Month(Date()),'00') & Format(Day(Date()),'00') & Format(IIf([DATE] Like [DATE_A],Count(*)+1,1),'000') AS UNIQUE_NUM
FROM t2
GROUP BY t2.DATE;
「Dup_Cont查詢」
SELECT DISTINCT
t1.DATE,
t1.DATE_NUM,
t1.CONTROL_NUMBER,
t1.UNIQUE_NUM INTO t2
FROM t1;
「新數字查詢「
INSERT INTO t3 (CONTROL_NUMBER)
SELECT Max(t2.CONTROL_NUMBER)
FROM t2;
該代碼當前的功能是使用[C77A] [Date] [Sequential Number]格式根據運行查詢的日期創建唯一控制號並打開最新控制號的表,但因爲運行控制查詢的某些原因會創建數字的重複項,我添加了Dup_Control查詢以僅提取表格的唯一編號而不顯示重複項。
我希望如果有人能告訴我如何壓縮這或至少知道爲什麼我與「控制查詢」重複。
樣品T1
DATE | DATE_NUM| CONTROL_NUM | UNIQUE_NUM
-------------------------------------------------------
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 2 |C77A20140829002|20140829002
C77A20140829 | 3 |C77A20140829003|20140829003
樣品T2
DATE | DATE_NUM| CONTROL_NUM | UNIQUE_NUM
-------------------------------------------------------
C77A20140829 | 1 |C77A20140829001|20140829001
C77A20140829 | 2 |C77A20140829002|20140829002
C77A20140829 | 3 |C77A20140829003|20140829003
你有在控制查詢創建重複的唯一編號數據的小樣本? – 2014-08-29 15:07:25
是的,我會編輯原始帖子以包含它以及所需表格的樣本 – Frank 2014-08-29 16:31:25
因此,如果您將數字10放在框中並按下按鈕,您希望DATE_NUM字段從1增加到10,然後使UNIQUE_NUM字段從1增加到10?另外,Control查詢引用一個名爲「t2」的表。 「t2」的內容是你上面發佈的內容嗎?或者在「t2」中只有一個日期字段? – 2014-08-29 17:16:03