2013-07-31 3 views
1

С обычными таблицами, я могу получить доступ к имени столбца, используяПолучить имя столбца из таблицы запроса

SELECT column_name FROM INFORMATION_SCHEMA_COLUMNS WHERE table_name = '" & Tbl & "' " 

и он работает ...

, но во время выполнения VBA кода я также должен получить имя столбца не из таблиц, а из таблицы, полученной после запроса, как я могу получить это в VBA?

Dim Qry as QueryDef 
Dim MrgTbls as QueryDef 
Dim T1 as String 
Dim T2 as String 
Dim SQLJoin as String 

...

Set MrgTbls = CurrentDb.CreateQueryDef(Qry.Name, SQLJoin) 

... и позже я хочу создать такой запрос

SELECT column_name FROM INFORMATION_SCHEMA_COLUMNS WHERE table_name = 'MrgT' 

, который ничего не возвращает, так как таблицы MrgT не в INFORMATION_SCHEMA_COLUMNS, в отличие от других таблиц.

+0

Можете ли вы добавить более подробную информацию? С какими объектами вы работаете? Например. rs.fields (i) .name –

+0

В качестве «в стороне» 'Dim T1, T2, SQLJoin As String' определяет две переменные типа' Object' и только один из типов 'String'. Кроме того, если 'QryName' имеет тип' QueryDef', как вы можете назначить строку 'QryName'? –

+0

Как вы используете 'SELECT column_name FROM INFORMATION_SCHEMA_COLUMNS' в базе данных Access? –

ответ

1

Чтобы получить имена столбцов из QueryDef, вы можете использовать Fields коллекции:

Dim firstColumnName As String 
firstColumnName = MrgTbls.Fields(0).Name 

В качестве альтернативы вы можете использовать чистый SQL и системные таблицы MSysObjects и MSysQueries. См. here для получения подробной информации о структуре этой таблицы.

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