創建

2015-10-20 86 views
0

我想在認爲是系統當前用戶的計算機名Access創建一個表當前訪問用戶的用戶列表。創建

我到目前爲止的代碼是

Option Compare Database 
Option Explicit 

Sub ShowUserRosterMultipleUsers() 
Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim i, j As Long 

Set cn = CurrentProject.Connection 

Dim dbs As Database, tbl As TableDef, fld As Field 
Set dbs = CurrentDb 

Set tbl = dbs.CreateTableDef("Users") 
Set fld = tbl.CreateField("User#", dbText) 

' The user roster is exposed as a provider-specific schema rowset 
' in the Jet 4.0 OLE DB provider. You have to use a GUID to 
' reference the schema, as provider-specific schemas are not 
' listed in ADO's type library for schema rowsets 

Set rs = cn.OpenSchema(adSchemaProviderSpecific, _ 
, "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

'Output the list of all users in the current database. 

Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _ 
"", rs.Fields(2).Name, rs.Fields(3).Name 

While Not rs.EOF 
    Debug.Print rs.Fields(0), rs.Fields(1), _ 
    rs.Fields(2), rs.Fields(3) 
    rs.MoveNext 
Wend 

tbl.Fields.Append ? 

End Sub 

我發現並更新了一下作品的代碼,但它只能輸出到即時窗口,其中debug.print應該,但我需要創建一個包含所有數據的表格。

任何幫助,將不勝感激。

在此先感謝。

+1

那麼是什麼阻止你?創建一個表,並將調用替換爲'Debug.Print',代碼將一行附加到表並設置字段值。你已經有代碼展示瞭如何從數據集中讀取字段('rs.Fields()')。 –

+0

我已經添加了創建表函數,在這一點上,我不知道如何將它調用到另一個表中。我想我無法設置rs.fields(0),這是我需要的,所以我可以把它叫做表格。你的回答在谷歌上搜索了一些不同的想法,我會繼續努力,謝謝。 – Cameron

+0

在'While Not rs.Eof'循環中,'tbl.Append'添加一條新記錄。 'tbl.Fields(0)'可以訪問第一個字段,就像'rs.Fields(0)'可以訪問記錄集的第一個字段。 '.Value'從現場IIRC讀取和/或寫入。 –

回答

2

明白了,這已被問過這個網站有趣的事情,將不得不嘗試更好的下一次搜索。

我的代碼,其工作原理是如下

Option Compare Database 
Option Explicit 
Sub ShowUserRosterMultipleUsers() 
Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim i, j As Long 
Dim db As Database 
Dim rsDao As DAO.Recordset 

Set cn = CurrentProject.Connection 
Set db = CurrentDb 
Set rsDao = db.OpenRecordset("Users", dbOpenTable, dbAppendOnly + dbFailOnError) 

' The user roster is exposed as a provider-specific schema rowset 
' in the Jet 4.0 OLE DB provider. You have to use a GUID to 
' reference the schema, as provider-specific schemas are not 
' listed in ADO's type library for schema rowsets 

Set rs = cn.OpenSchema(adSchemaProviderSpecific, _ 
, "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

'Output the list of all users in the current database. 
Do While Not rs.EOF 
    rsDao.AddNew 
    rsDao!User.Value = rs.Fields(0) 
    rsDao.Update 
    rs.MoveNext 
Loop 
End Sub 

這裏假設你有一個名爲「用戶」與列在它所謂的「用戶」表的數據庫,非常原始的,我知道。

測試,它帶來的一個用戶我,應該在那些數據庫以及其他任何帶。

感謝您的幫助,肯。

+0

當我使用這段代碼時,我確實在rs.Fields中有4行,當有4個用戶在線時,但是我從今天早上打開文件的第一臺計算機獲得了4次計算機ID。你知道該怎麼辦? –