Набор данных, виртуальный или в таблице памяти в Access 2007 - PullRequest
1 голос
/ 10 августа 2011

Есть ли способ загрузить данные (например, из XML) в набор данных - временную таблицу памяти / набор записей, которую можно связать (привязать) к форме для предварительного просмотра? Я знаю, что в .NET есть наборы данных, но как насчет Access 2007?

Можно заполнить элемент управления меню / списка данными из файла XML, но он не будет масштабироваться так же, как непрерывная форма.

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Формы доступа, начиная с A2000, позволяют назначать набор записей, собранный в коде, на набор записей формы, который включает наборы записей ADO. Итак, если вы открыли набор записей ADO из своего XML-файла, вы сможете назначить его форме.

Тем не менее, обратите внимание, что это не то, что я когда-либо делал, так как мне это не нужно, и я знаю, что есть проблемы с наборами записей ADO и DAO и всевозможными небольшими несовместимостями, с которыми люди сталкиваются, когда делают это вещи.

1 голос
/ 15 августа 2011

Вот решение, основанное на этом примере: Создание наборов записей ADO в памяти - не забудьте сначала добавить ссылку в Инструменты> Ссылки, найти последний объект данных Microsoft ActiveX

Public Sub createDataSet(mekeNewSet As Boolean)
'requires reference addedd **Microsoft ActiveX Data Object**

Dim rs As ADODB.Recordset
Dim fld As ADODB.Field

Set rs = New ADODB.Recordset
With rs
    .Fields.Append "EmployeeID", adInteger, , adFldKeyColumn
    .Fields.Append "FirstName", adVarChar, 10, adFldMayBeNull
    .Fields.Append "LastName", adVarChar, 20, adFldMayBeNull
    .Fields.Append "Email", adVarChar, 64, adFldMayBeNull
    .Fields.Append "Include", adInteger, , adFldMayBeNull
    .Fields.Append "Selected", adBoolean, , adFldMayBeNull
    .CursorType = adOpenKeyset
    .CursorLocation = adUseClient
    .LockType = adLockPessimistic
    .Open
End With

With rs
    .AddNew
    .Fields(0) = 777
    .Fields(1) = "John"
    .Fields(2) = "Smith"
    .Fields(3) = "john.smith@something.com"
    .Fields(4) = 1
    .Fields(5) = True
    .Update
End With


Set Me.Recordset = rs

End Sub

Существует также возможность создать новый класс в VBA и затем создать коллекцию, как показано в этом руководстве: Использование пользовательских коллекций в Microsoft Access

Полное решение о том, как загрузить XML-данные и ввести их в рекордере, можно посмотреть здесь: Доступ к VBA - как загрузить файл XML и ввести его данные в набор записей

1 голос
/ 10 августа 2011

Нет, Access не знает наборов данных.
Но вы можете преобразовать набор данных в ADODB.Recordset.Access знает это, и вы можете связать его напрямую с непрерывной формой.

Вот фрагмент кода для преобразования наборов данных в ADODB.Recordsets (и наоборот):
http://dotnet -snippets.de / dns / ado-recordset-converter-SID525.aspx

Страница и комментарии в коде на немецком языке, но даже если вы не понимаете по-немецки, сам код прост
Вам просто нужна ссылка на Microsoft ActiveX Data Objects 2.8, а затем вам просто нужно вызвать этот метод:

public static ADODB.Recordset ConvertDataTableToRecordset(DataTable table)
...