2016-10-01 2 views
0

У меня есть доступ к db с некоторыми таблицами, запросами, макросами ... и т. Д. Одна таблица является результатом запроса и используется для заполнения sharepoint. В этой таблице есть столбец [Пользователь], у которого нет записей, но я хотел бы заполнить список пользователей перед загрузкой в ​​sharepoint.Доступ: Обновить запрос со списком пользователей

Ex. таблица имеет 58 строк, и я хочу использовать 10 пользователей.

Row1 - Пользователь 1

Стр2 - Пользователь 2

...

Row10 - Пользователь 10

Row11 - Пользователь 1

и так далее ...

Я действительно не знаю, что это лучший способ сделать это.

Может ли кто-нибудь мне помочь? Благодарю.

+0

Не совсем понимаю. Вы упоминаете, что таблица не имеет записей, но затем описывает таблицу с 58 строками. – Parfait

+0

Он сказал, что в столбце нет записей - я думаю, что он имеет в виду, что есть записи, а только то, что столбец пользователя пуст/нуль. – DHW

ответ

2

Я бы предложил использовать Visual Basic для приложений (VBA) для этого.

Создайте новый модуль, а затем создайте процедуру, которая будет заполнять данные. Его относительно просто - вы хотите прокрутить всех пользователей и обновить родительскую таблицу.

Для моего кода я предполагаю, что у вас есть одна таблица с результатами вашего запроса (с пустым полем «Пользователь») и что у вас есть другая таблица, содержащая всех ваших пользователей (с использованием имени поля «UserName»)

Public Sub PopulateUsers() 
    Dim dbs As DAO.Database 
    Dim rstUsers As DAO.Recordset 
    Dim rstComputers As DAO.Recordset 

    ' Open up our tables 
    Set dbs = CurrentDb 
    Set rstUsers = dbs.OpenRecordset("Users") 

    ' If there are no users then complain and quit 
    If rstUsers.EOF Then 
    rst.Close 
    MsgBox "There are no users to populate", vbInformation, "Error" 
    Set rstUsers = Nothing 
    Exit Sub 
    End If 

    Set rstComputers = dbs.OpenRecordset("ComputerUsers") 

    ' Loop through all of our computer records 
    Do Until rstComputers.EOF 
    rstComputers.Edit 
    rstComputers!User = rstUsers!UserName 
    rstComputers.Update 
    rstUsers.MoveNext 
    If rstUsers.EOF Then 
     rstUsers.MoveFirst 
    End If 
    rstComputers.MoveNext 
    Loop 

    ' Close tables 
    rstUsers.Close 
    rstComputers.Close 

    ' Clear object references to free up memory 
    Set dbs = Nothing 
    Set rstUsers = Nothing 
    Set rstComputers = Nothing 

    debug.print "Users Populated" 
End Sub 

Вы можете нажать Control + G, чтобы открыть окно, а затем введите «PopulateUsers».

+0

Спасибо, что это очень важно, что мне нужно. Теперь мне просто нужно выяснить, почему цикл не упорядочивает пользователей. –

+0

Если вы хотите, чтобы пользователи заказывали, вы можете либо создать упорядоченный запрос для пользователей, либо заменить dbs.OpenRecordset («Пользователи»), либо вы можете напрямую встраивать SQL: dbs.OpenRecordset («SELECT * FROM USERS ORDER BY UserName»)) – DHW

Смежные вопросы