2013-08-22 46 views
0

我是VBA for MSAccess的新成員。我想要做的是從每組名稱中創建一個新表,例如使用MS Access VBA創建從範圍表

Name Email Company 

Abby [email protected] Time  
BeeT [email protected] Share  
BeeT [email protected] Share  
BeeT [email protected] Share  
Carol [email protected] Total  
Carol [email protected] Total 

我想要做的就是從每個記帳名稱創建一個新表,以便在這種情況下會出現例如3個新表

Name Email Company 

Abby [email protected] Time 
Name Email Company 

BeeT [email protected] Share  
BeeT [email protected] Share  
BeeT [email protected] Share 
Name Email Company 

Carol [email protected] Total  
Carol [email protected] Total 

回答

0

有幾種方法可以做到這一點。你實際上可以遍歷表,如果表已經存在,那麼你可以將數據追加到表中。如果沒有,那麼你可以創建一個新表。這涉及到檢查數據庫對象是否存在現有名稱,這是更多的工作。

最簡單的方法是爲每個結算名稱創建一個表格,然後過濾您的原始表格以添加適當的行。

Dim db as Database 
dim rec as Recordset 
Dim rec2 as Recordset 
Dim tbl As TableDef 
Dim fld As Field 
Dim fld2 as Field 

Set db = CurrentDB 
set rec = db.OpenRecordSet ("Select DISTINCT Company from YourTableName") 

Do While rec.EOF = False 
    Set rec2 = db.OpenRecordSet ("Select DISTINCT * from YourTableName WHERE Company = '" & 
    rec("Company") & "") 
    Do While rec2.EOF = False 
     Set tbl = dbs.CreateTableDef(Rec2("Company")) 
     Set fld = tbl.CreateField(Rec2("Name"), dbText) 
     Set fld2 = tbl.CreateField(Rec2("Email"), dbText) 

     tbl.Fields.Append fld 
     tbl.Fields.Append fld2 
     db.TableDefs.Append tbl 
     db.TableDefs.Refresh 
     rec2.MoveNext 
    Loop 
    rec.MoveNext 
Set rec2 = Nothing 
Loop 

Set db = Nothing 
Set rec = Nothing 
Set rec2 = Nothing 
+0

我在週末試過了,但失敗了。我繼續觸及語法錯誤 – user2706943

+0

我需要確切地知道錯誤是什麼,以及它發生的是什麼行。我可以幫助你,但我需要更詳細的反饋。 –

+0

嗨約翰尼,我設法得到這個決心,但是出來的不是它創建了一個名爲share的表格,而是兩個字段名爲BeeT和[email protected]。我真正想要的是創建一些隨機表,如Table1,Table2,Table3,每個表都有字段名稱,電子郵件和公司的數據,如公司的數據,如表1,字段名稱,電子郵件,公司數據Abby [email protected]時間,和表2,字段名稱,電子郵件,公司數據BeeT [email protected]分享等 – user2706943