Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление / 11 сообщений из 11, страница 1 из 1
06.11.2016, 23:10
    #39342259
Fora74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Здравствуйте.
Не смог емко топик назвать.
В VBA собираю строку запроса на добавление. Искомая конструкция примерно такая:
Код: sql
1.
2.
3.
INSERT INTO tTest.Поле1,  tTest.Поле2
SELECT qInsertTest.(field0), qInsertTest.(field1)
FROM qInsertTest;


причем field0 и field1- это не имена полей, а индекс в коллекции fields.
Проблема в том, что таблица-источник имеет статичную структуру, но какие будут имена- заранее неизвестно.
Пока вижу решение- в цикле пробежаться по всем полям, а затем собирать строку запроса на обновление.
Может есть более изящное решение?
Спасибо.
...
Рейтинг: 0 / 0
06.11.2016, 23:13
    #39342260
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
А qInsertTest - это статический запрос, что ли?

Fora74Может есть более изящное решение?
Вообще желательно дать больше информации. А то полное ощущение, что ты "желаешь странного".
...
Рейтинг: 0 / 0
06.11.2016, 23:23
    #39342262
Fora74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Akina,

Вообще это продолжение ковыряния в соседнем топике http://www.sql.ru/forum/1236438/import-iz-html .
Там получилась временная таблица в html. Имена полей могут быть разными (например на русском или английском языке).
Данные из нее необходимо загрузить в таблицу в БД.
qInsertTest- запрос к этой таблице+ ключевое поле.
Теперь результаты qInsertTest необходимо поместить в tTest.
...
Рейтинг: 0 / 0
06.11.2016, 23:35
    #39342265
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Fora74qInsertTest- запрос к этой таблицеНу коли так, то у тебя есть его QueryDef. Возьми оттуда имена полей.
...
Рейтинг: 0 / 0
06.11.2016, 23:41
    #39342269
Fora74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Akina,
Я в первом посте писал про такое решение.
В общем то оно должно работать.
Просто по неопытности может я не вижу более простого решения.
...
Рейтинг: 0 / 0
07.11.2016, 08:22
    #39342335
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Ну вообще неопределённая структура - это нонсенс. Так что имхо правильнее думать в том направлении, чтобы избавиться от неопределённости в именах полей.
...
Рейтинг: 0 / 0
07.11.2016, 14:16
    #39342583
FORA74_guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Akina,
Со структурой как раз все в порядке- количество полей, типы данных все одинаково.
Привести к единообразности наименований полей наверно можно на предыдущем шаге.
Только это будет сложнее, нежели в данной задаче считывать наименования из коллекции.
Если предложений нет, я делаю вывод, что и решения нет.
Всем спасибо.
...
Рейтинг: 0 / 0
07.11.2016, 15:19
    #39342691
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
На чистом SQL это не сделаешь, по номерам столбцов можно обращаться только в ORDER BY, насколько я знаю. Так что проще всего коллекцию анализировать.
...
Рейтинг: 0 / 0
07.11.2016, 15:24
    #39342705
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
FORA74_guestПривести к единообразности наименований полей наверно можно на предыдущем шаге.
Только это будет сложнее, нежели в данной задаче считывать наименования из коллекции.
Не смеши. В конце твоей "предыдущей операции" сделать тупое
Код: vbnet
1.
TableDef.Fields(intNum).Name = "ConstName"


гораздо проще, чем потом трахаться с неизвестными именами полей
...
Рейтинг: 0 / 0
07.11.2016, 19:56
    #39342927
Fora74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
AkinaFORA74_guestПривести к единообразности наименований полей наверно можно на предыдущем шаге.
Только это будет сложнее, нежели в данной задаче считывать наименования из коллекции.
Не смеши. В конце твоей "предыдущей операции" сделать тупое
Код: vbnet
1.
TableDef.Fields(intNum).Name = "ConstName"


гораздо проще, чем потом трахаться с неизвестными именами полей
Попробовал. Не работает Ваш совет на присоединенных таблицах.
...
Рейтинг: 0 / 0
07.11.2016, 21:24
    #39342968
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление
Fora74Не работает Ваш совет на присоединенных таблицах.Понятное дело, это ж DAO. Перепишите то же на ADO, и всё заработает.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]