2014-07-14 28 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

相关问题