2010-11-03 1 views
0

Так позволяет сказать, что у меня есть некоторый код, как показано ниже, чтобы извлекать данные из другого файла доступа:MS Access - ADO набор записей, используя с SQL заявления для извлечения данных и построить таблицу

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 вместе в рутине?

Благодаря Джастин

ответ

3

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

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

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

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

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

+0

О, ничего себе ... так что спасибо Гансу! Я на самом деле просто спрашивал, потому что я играю с материалом ADO, просто начал с него работать, поскольку раньше я использовал DAO. На самом деле у меня нет реальной необходимости переводить таблицу из одной базы данных доступа в другую на работе, просто пробую разные вещи, чтобы немного узнать ADO. Мне нравится идея цикла, хотя, как вы указали, могут быть лучшие способы. Поэтому я должен был знать точные свойства таблицы, все поля и типы данных, чтобы это сделать правильно? как я буду строить таблицу в первую очередь? INSERT просто копирует то, что есть, но .. – Justin

+0

Я предполагаю, что притяжение его с помощью набора записей отличается от наличия обоих объектов в одной базе данных, потому что currentdb будет знать все эти свойства, что делает метод INSERT INTO выполнимым из-за этого? Имеет ли это смысл? – Justin

+0

Где я могу проверить метод сохранения для передачи XML? знаете ли вы ресурс с примером этого? спасибо, как всегда .... Я не забыл о приборной панели ни человек. как только у меня будет время сделать пустую копию, я выясню, как ее получить, поскольку я мог бы использовать ваш совет! – Justin

1

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

+0

круто спасибо за ресурс! – Justin

2

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

Вы также можете создать транзитное запрос, который затем можно использовать для SELECT * INTO MyNewTable FROM MyPassThroughQuery

+0

спасибо .... Я посмотрю, как создать PassThroughQuery! – Justin

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

  • Нет связанных вопросов^_^