2015-07-01 6 views
0

У меня есть строка запроса SQL. В этой строке находятся несколько разных столбцов данных, все из одной таблицы. Для упрощения, вот краткий пример: SELECT 'A'.'B', 'A'.'C', 'A'.'D' Где 'A' - это псевдоним. Мой вопрос: есть ли способ использовать VBA для выполнения этой строки запроса и удалить все экземпляры псевдонима 'A' и просто вернуть столбцы данных 'B', 'C', 'D'? Пожалуйста, не полный код, мне нравятся стартовые точки. Мне нравится заполнять фигуры самостоятельно. Это помогает процессу обучения.Использование VBA для удаления псевдонима из строки запроса SQL?

+0

Что является целью удаления этих псевдонимов? Если есть 2 таблицы с одинаковым именем столбца, ваш запрос будет терпеть неудачу, потому что он будет слишком неоднозначным для механизма, по которому столбцы будут извлекаться из этой таблицы. Псевдоним помогает определить, какой столбец является правильным. – TTeeple

+0

Ваш пример SQL дезинформирован. Одиночные кавычки не используются для псевдонимов таблиц и столбцов. Кроме того, пометьте свой вопрос базой данных, которую вы фактически используете. –

+0

Полагаю, я должен был быть более ясным. Я знаю, что псевдоним важен и необходим при использовании запроса, но мне просто нужны поля ''B', 'C', 'D'' для других целей. Прошу прощения за двусмысленность. (все еще новый для этого сайта) – Constuntine

ответ

1
  1. Восстановление SQL под QueryTable так:

Восстановление SQL:

Range("A1").Select 'Your query worksheet 
With Selection.QueryTable 
    queryText = .CommandText 
End With 
  1. Затем замените псевдонимы на LEFT, RIGHT, INSTR или RegExp объект (если вы хотите узнать что-то полезное и быстрое использование RegExp - регулярные выражения). Если вам понадобится пример regex, дайте мне знать в комментариях. Если вы хотите изучить Regex в VBA, я сделал tutorial here.

  2. Заменить запрос и обновить QueryTable

Заменить и обновить запрос

Range("A1").Select 'Your query worksheet 
With Selection.QueryTable 
    .CommandText = queryText 
    .Refresh BackgroundQuery:=False 
End With 
+0

Спасибо. Я верю, что это то, что мне нужно. – Constuntine

1

Вы выбираете прямо со стола? Переход прямо из таблицы даст вам имя столбца, если вы не выполняете какую-либо функцию в своем запросе. Другой вариант:

Выберите [A] AS ColumnName, [B] AS имя_столбца2 и т.д.

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