|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Пытаюсь вставить данные с листа Excel в базу Access, но запрос не проходит (Automation error). Скорее всего проблема в том, что таблица в которую добавляю данные имеет связь один ко многим ( табл. Actions - поле NR_ID ), и для вставки данных в поле NR_ID нужно вытащить данные из поля ID таблицы Actions_NR которые соответствуют записи по Actions_NR.DATA=#4/1/2005#. SQL знаю слабенько, помогите сформировать правильный запрос. Базу прилагаю...... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:12 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Импортируйте данные во временную таблицу ХОТЬ КАК-НИБУДЬ. А потом уже из неё кладите данные (возможно, с обработкой) в боевые таблицы. А ошибка, скорее всего, потому, что просто не поддерживается объединение типа Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:21 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
авторА ошибка, скорее всего, потому, что просто не поддерживается объединение типа FROM tableA, tableB INNER JOIN tableC Ну а если сформировать как-то подзапрос типа..... Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:33 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanНу а если сформировать как-то подзапрос типа.....Вы эта... подставьте вместо переменной xlBase что-нить очевидное, типа C:\file.xlsx да посмотрите, что получилось в переменной SQL. И прикиньте, как оно соотносится с синтаксисом SQL-языка... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:40 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
авторВы эта... подставьте вместо переменной xlBase что-нить очевидное Это Вы к чему? намек на то, что запрос в принципе не рабочий да? Вы ошибаетесь - прекрасно работает, но в данном случае приходится использовать INNER JOIN и вот тут возникает проблема. Но я уверен, сформировать запрос можно - вот только моих знаний не хватает :( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:48 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanПытаюсь вставить данные с листа Excel в базу Access, но запрос не проходит (Automation error). Скорее всего проблема в том, что таблица в которую добавляю данные имеет связь один ко многим ( табл. Actions - поле NR_ID ), и для вставки данных в поле NR_ID нужно вытащить данные из поля ID таблицы Actions_NR которые соответствуют записи по Actions_NR.DATA=#4/1/2005#. SQL знаю слабенько, помогите сформировать правильный запрос. Базу прилагаю...... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
http://www.sql.ru/forum/actualfile.aspx?id=21290520] Приложенный файл (Stocks.zip - 29Kb) нечем посмотреть accdb Почему ? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 17:25 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
авторнечем посмотреть accdb Почему ? Код: vbnet 1.
SELECT * ... тут идет выборка из листа Excel(A1:A8) SELECT *, Actions_NR.ID ..... тут выборка из поля ID табл. Actions_NR . В принципе в ячейке А1 имя столбца - PRICE , по этому можно написать и так: Код: vbnet 1.
... но я и так делал - не проходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 17:37 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Может с UNION скомбинировать ? Код: vbnet 1. 2. 3. 4. 5. 6. 7.
с таким запросом выдает "Неопознанная ошибка" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 23:56 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanЭто Вы к чему? намек на то, что запрос в принципе не рабочий да? Вы ошибаетесь - прекрасно работает Да ну? Берём bormman Код: vbnet 1. 2. 3. 4. 5. 6.
Подставляем предложеное мной xlBase = "C:\file.xlsx". Получаем в переменной SQL значение Код: sql 1. 2. 3. 4. 5. 6. 7.
Вы и дальше намерены утверждать, что запрос "прекрасно работает"? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 07:40 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanавторнечем посмотреть accdb Почему ? Код: vbnet 1.
SELECT * ... тут идет выборка из листа Excel(A1:A8) SELECT *, Actions_NR.ID ..... тут выборка из поля ID табл. Actions_NR . В принципе в ячейке А1 имя столбца - PRICE , по этому можно написать и так: Код: vbnet 1.
... но я и так делал - не проходит.без Код: sql 1.
как себя ведёт запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 09:36 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
AkinaДа ну? Берём..... Вы и дальше намерены утверждать, что запрос "прекрасно работает"? Выше я сказал, что работает прекрасно, НО без INNER JOIN и соотв. попыток вытянуть данные с табл. Actions_NR . Вот можете убедиться - прикрепил zip (внутри база+ексель). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:46 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Прогер_самоучкабез Код: sql 1.
как себя ведёт запрос? Да все так же ... Automation error ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:48 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanПрогер_самоучкабез Код: sql 1.
как себя ведёт запрос? Да все так же ... Automation errorИ тут же пишите bormmanВыше я сказал, что работает прекрасно, НО без INNER JOIN и соотв. попыток вытянуть данные с табл. Actions_NR Залейте данные, а потом апдейте. Как вам такой вариант ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:58 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
ИМХО, запрос надо строить исключительно на листе Excel без всяких INNER JOIN. А Actions.NR_ID получить функцией DLookup и ли подчиненным запросом в качестве источника поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:00 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Без INNER JOIN я имел в виду запрос только к листу ексель без попыток выбрать данные в одном запросе и с листа ексель и с таблицы акса. Постом выше я прикрепил файл - посмотрите. Вообще вопрос стоит не типа "дайте мне скорее решение" - решение у меня есть и не одно.... я хочу решить вопрос более "изящно" что-ли :) ну и положить в копилку что-то новое. Конечно, можно скинуть данные с листа в таблицу Т, а уже потом другим запросом вставить данные из Т в рабочую базу или просто тупо использовать Loop с конструкцией INSERT INTO VALUE... но это все лишние телодвижения... ну в общем надеюсь вы меня понимаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:19 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanБез INNER JOIN я имел в виду запрос только к листу ексель без попыток выбрать данные в одном запросе и с листа ексель и с таблицы акса. Постом выше я прикрепил файл - посмотрите. Вообще вопрос стоит не типа "дайте мне скорее решение" - решение у меня есть и не одно.... я хочу решить вопрос более "изящно" что-ли :) ну и положить в копилку что-то новое. Конечно, можно скинуть данные с листа в таблицу Т, а уже потом другим запросом вставить данные из Т в рабочую базу или просто тупо использовать Loop с конструкцией INSERT INTO VALUE... но это все лишние телодвижения... ну в общем надеюсь вы меня понимаете.лично я вижу, что вы пытаетесь решить, а не ищите на готовенькое. Иначе даже бы отвечать не стал ;) bormmanПостом выше я прикрепил файл - посмотрите.если бы мог, то давно бы посмотрел Прогер_самоучканечем посмотреть accdb 21290860 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:06 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Кривцов АнатолийИМХО, запрос надо строить исключительно на листе Excel без всяких INNER JOIN. А Actions.NR_ID получить функцией DLookup и ли подчиненным запросом в качестве источника поля.На сколько помню, именно так есть. Поэтому и спросил работает ли без иннер джоина(без второй таблицы) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:07 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Проверьте вот такой вариант: Код: vbnet 1. 2. 3. 4. 5.
Код: sql 1. 2. 3. 4. 5.
И ещё - это всё же ADODB, и мне кажется, что литерал даты там должен быть не #4/1/2005#, а '2005-01-04'... ну и проверьте, как вообще ADODB относится к Jet-style имени экселевской таблицы... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:13 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Прогер_самоучкаесли бы мог, то давно бы посмотрел Вот то же но в формате 97-2003 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:54 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
AkinaПроверьте вот такой вариант: Код: vbnet 1. 2. 3. 4. 5.
Нет, не проходит. Мне кажется, что причину нашел. Начал проверять запрос по кускам, и выяснил что акс никак не хочет принимать имена полей без имен таблиц в SELECT... например это проходит : Код: vbnet 1. 2. 3.
а это нет : Код: vbnet 1. 2. 3.
и поэтому в этом месте " SELECT PRICE, Actions_NR.ID " & _ акс не знает что ему брать с листа... И ещё - это всё же ADODB, и мне кажется, что литерал даты там должен быть не #4/1/2005#, а '2005-01-04' Принимает оба варианта. проверьте, как вообще ADODB относится к Jet-style имени экселевской таблицы... Где бы такое почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:13 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanНет, не проходит. Мне кажется, что причину нашел. Начал проверять запрос по кускам, и выяснил что акс никак не хочет принимать имена полей без имен таблиц в SELECT... например это проходит : Код: vbnet 1. 2. 3.
а это нет : Код: vbnet 1. 2. 3.
логично, чёрт побери. У вас же же в двух таблицах это поле встречается, прога сама должна догадаться какое поле вы имели в в иду ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 09:42 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Видимо так: Код: sql 1. 2. 3. 4.
В вашем xlsm файле в колонке ID присутствует только значения 3, что соответствует значению записи с Actions_NR с нужной датой. Чтоб втащить эти данные, никакой INNER JOIN не нужен. Или это пример не наглядный? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 09:55 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Или так: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 14:58 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
Прогер_самоучкаУ вас же же в двух таблицах это поле встречается, прога сама должна догадаться какое поле вы имели в в иду ? Да точно... уже шарики за ролики пошли Кривцов Анатолий В вашем xlsm файле в колонке ID присутствует только значения 3, что соответствует значению записи с Actions_NR с нужной датой. Чтоб втащить эти данные, никакой INNER JOIN не нужен. Или это пример не наглядный? Нет, это поле ID на листе xl я вставил для примера и проверки будет ли работать если данные брать только с листа xl - если только с листа, то все работает: Код: vbnet 1. 2. 3.
Но данные для поля Actions.NR_ID надо брать с таблицы Actions_NR.ID , т.е. рабочие данные беру с листа xl а данные для поля Actions.NR_ID беру с табл. Actions_NR.ID ... если Вы откроете базу, то там видно, что таблицы связаны (один ко многим) и что бы мне добавить данные на дату которая уже есть в табл. Actions_NR - нужно знать ID этой записи для вставки ее в поле NR_ID табл. Actions И все это я хочу сделать в одном запросе... но пока облом Вариации в Ваших примерах то же не работают ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 15:59 |
|
Помогите сформировать запрос на добавление
|
|||
---|---|---|---|
#18+
bormmanНет, это поле ID на листе xl я вставил для примера и проверки будет ли работать если данные брать только с листа xl Это чтоб запутать чужих и сбить с толку своих? Тогда попробуйте то, о чем я писал ранее: Код: sql 1. 2. 3.
или Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 16:33 |
|
|
start [/forum/topic.php?fid=45&startmsg=39621321&tid=1611561]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 170ms |
0 / 0 |