MS Access - набор записей ADO, использующий оператор SQL для извлечения данных и построения таблицы - PullRequest
0 голосов
/ 03 ноября 2010

Допустим, у меня есть некоторый код, подобный приведенному ниже, для извлечения данных из другого файла доступа:

Sub ADO_Recordset_OpenTable()
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim MyPath As String
MyPath = CurrentProject.Path

Set cn = New ADODB.Connection     
cn.Provider = "Microsoft Jet 4.0 OLE DB Provider"

cn.ConnectionString = "Data Source=C:\Users\Justin\Desktop\ExampleFile.mdb"
cn.Open

Set rs = New ADODB.Recordset
rs.Open "Schedule", cn, adOpenDynamic, adLockReadOnly, adCmdTable

' I would like to at this point build a table within the currentdb file 
'  with the data in the recordset. Either some kind of create table or
'  SQL INSERT?? Just trying to learn how to work with the data set

Итак, в примере есть мои комментарии. В основном хотелось бы знать, как создать таблицу из данных, содержащихся в наборе записей. Я полагаю, создание tabledef? Но это право DAO? и я не мог действительно использовать DAO и ADO вместе в рутине, верно?

Спасибо Justin

Ответы [ 3 ]

3 голосов
/ 03 ноября 2010

Вы можете использовать как ADO, так и DAO для разных объектов в рамках одной и той же процедуры.

Вы можете создать DAO.TableDef и изучить коллекцию Fields набора записей, создав новые поля TableDef, соответствующие каждому rs.Fields (i) .Name и rs.Fields (i) .Type

После того как вы создали структуру таблицы (TableDef), вы можете циклически проходить по строкам набора записей для построения и выполнения операторов INSERT для сохранения значений строк в вашей новой таблице.

Но мне кажется, что это слишком много работы. Мне больше нравится предложение SELECT INTO от Raj. Однако, так как вы уже знаете имя таблицы и путь к вашей MDB, я сначала достигну DoCmd.TransferDatabase и оставлю ADO только для задач, которые DAO не может выполнять вообще или не может делать так же удобно как ADO.

Наконец, если ваш основной интерес в этом вопросе - изучение возможностей, взгляните на метод Save набора записей. Вы можете сохранить с помощью adPersistXML, а затем импортировать сохраненный XML как новую таблицу в вашу текущую базу данных. См. Метод сохранения (ADO)

2 голосов
/ 03 ноября 2010

Я сделал это безобразным способом - проанализировал входящий набор записей ADO, скомпилировал оператор CREATE TABLE и выполнил его, а затем RBAR через набор данных ADO для вставки в локальную таблицу.создать сквозной запрос, который затем можно использовать для SELECT * INTO MyNewTable FROM MyPassThroughQuery

1 голос
/ 03 ноября 2010

Вы можете попробовать ADOX .

...