2014-07-14 54 views
1

我剛剛從我們現有的會計程序(包括我們公司的所有產品)中獲得了excel表格。 我立即注意到字段「HOOFDGROEP」(轉換爲「類別」)和「SUBGROEP」(轉換爲「子類別」)不包括主鍵,但字符串值。 我將此表導入訪問權限,但現在我想創建2個獨立的表,「類別」和「子類別」。這樣我可以索引數據庫。我用了一個SQL查詢,提取各組這樣的:索引現有數據庫的最快方法

INSERT INTO Hoofdgroepen 
SELECT DISTINCT HOOFDGROEP 
FROM Artikelen 

但是現在我如何快速更換所有記錄的「HOOFDGROEP」到它的索引值字段,而無需手動或發現做/更換?

正如我儘可能快地創建一個名爲hoofdgroepen這樣的表(通過上面的查詢實現)想要一個例子:

ID HOOFDGROEP 
3 Cat V 
4 Contante betalingskorting 
5 Diversen 

出這一點:

ID §kop_artikel  A_ inv_ product  HOOFDGROEP 
238 80010077   Chappe    Cat V          
239 80010517   Beton per m3  Cat V          
240 9799044704539  Betalingskorting Contante betalingskorting 
241 9799044704537  Viszak klein  Diversen   
242 9799044704538  Viszak middel  Diversen  

,然後作出這樣的表成爲:

ID §kop_artikel  A_ inv_ product  HOOFDGROEP 
238 80010077   Chappe    3          
239 80010517   Beton per m3  3          
240 9799044704539  Betalingskorting 4 
241 9799044704537  Viszak klein  5 
242 9799044704538  Viszak middel  5 
+0

「* I [..]注意到領域[..]不包括主鍵,但字符串值*」 - 沒有任何意義。主鍵也可以是字符串值。 –

+0

然後我認爲我學到的主鍵是錯誤的,我想實現例如「材料」類別,獲得索引:1,以便「材料」不會發生數千次 – Boyen

+0

[閱讀索引文檔] (http://office.microsoft.com/en-us/access-help/prevent-duplicate-values-in-a-field-HA010283317.aspx#BM1)並回來,如果你仍然無法實現你想要的東西。 –

回答

1

類似這樣的:

Dim sSQL As String 
Dim db As Database 

Set db = CurrentDb 

sSQL = "SELECT t.HOOFDGROEP INTO HOOFDGROUP " & _ 
"FROM aTable t " & _ 
"GROUP BY t.HOOFDGROEP;" 

db.Execute sSQL, dbFailOnError 

sSQL = "ALTER TABLE HOOFDGROUP ADD COLUMN ID AUTOINCREMENT" 

db.Execute sSQL, dbFailOnError 

sSQL = "SELECT t.ID, t.[§kop_artikel], t.[A_ inv_ product], HOOFDGROUP.ID INTO " & _ 
"aNewTable " & _ 
"FROM aTable t INNER JOIN HOOFDGROUP ON t.HOOFDGROEP = HOOFDGROUP.HOOFDGROEP;" 

db.Execute sSQL, dbFailOnError 

取決於你想要什麼,你可能還需要:

ALTER TABLE HOOFDGROUP ADD PRIMARY KEY(ID) 
+0

這是什麼語言?我在哪裏使用這個? – Boyen

+0

當試圖單獨使用sql查詢時,除了最後一個(不是主鍵)之外的所有工作都給了我這個錯誤:結果表不允許有多個AutoNumber字段 – Boyen

+0

CLng(HOOFDGROEP.ID)AS HOOFDGROEPID修復了這個問題, 謝謝! – Boyen

相關問題