Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2018, 16:43   #1
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию Добавление нескольких записей (строк) в таблицу одним запросом

Подскажите как одним запросом добавить несколько строк в таблицу посредством VBA.

Сейчас использую цикл и следующим кодом добавляю данные

SQL1 = "INSERT INTO Таблица1 ( Поле1, Поле2 ) VALUES(" & a1 & "," & a2 & ");"
DoCmd.RunSQL SQL1

Но так я добавляю только одну строку. А мне например нужно 100 шт добавить и при цикле комп загибается(((

Какие есть варианты решения данной задачи подскажите плиз?
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 17:29   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

--сформировать текстовый файл (хоть тысячу строк)
--прилинковать этот файл к базе
--и одним запросом закинуть в основную таблицу


применяла часто

иногда даже не закидывала, а использовала обращение в запросах к линкованной таблице

можно и не линковать, а прописывать путь к текстовику прямо в запросе
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 23.05.2018, 17:53   #3
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
Радость

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
--сформировать текстовый файл (хоть тысячу строк)
--прилинковать этот файл к базе
--и одним запросом закинуть в основную таблицу


применяла часто

иногда даже не закидывала, а использовала обращение в запросах к линкованной таблице

можно и не линковать, а прописывать путь к текстовику прямо в запросе

Может у вас есть какойто пример а то я не силен в этом?
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 18:02   #4
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Если пробую таким образом (пример ниже) и если строк 1000 то пишет "Слишком сложный запрос"

[NO PARSE]INSERT INTO Таблица1
SELECT *
FROM (select top 1 "абвд" AS Поле1, 123 AS Поле2 from msysobjects

union all

select top 1 "еёжз" AS Поле1, 987 AS Поле2 from msysobjects

union all

select top 1 "мрст" AS Поле1, 300 AS Поле2 from msysobjects) AS test1;
[/NO PARSE]
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 18:21   #5
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

я имею в виду другое


Код:
k=freefile
open "c:\temp\rabtxt.txt" for output as #k
print #k,"ggggg";s9;12341

print #k,"ggggg";s9;12342
print #k,"ggggg";s9;12343
print #k,"ggggg";s9;12344

.....
print #k,"ggggg";s9;12999
close #k
теперь файл "c:\temp\rabtxt.txt" можно или прилинковать или напрямую прописать в запросе

я обычно линковала, чтобы можно было просмотреть заранее для ввода в основную таблицу
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 23.05.2018, 20:28   #6
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

а если мне постоянно нужно добавлять данные в БД? Как тогда линк сработает? И как вообще линковать?)
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 20:30   #7
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Я все же понаглею)) может есть какой-то пример этого ликования?
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 20:49   #8
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

вы можете формировать этот тхт хоть каждую минуту, линковка при этом не пострадает

после формирования --дописать в аксесс-таблицу и можно снова формировать тхт

я обычно добавляла еще имя порции(и в тхт тоже)
оно нужно для анализа спорных ситуаций(вдруг кто-то запустил импорт повторно одну и ту же порцию
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 23.05.2018, 21:25   #9
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Пытаюсь таким образом загрузить, но ругается на спецификацию spec_01.....


INSERT INTO Таблица1
SELECT 'C:\Users\User\Desktop\1111\rabtxt. txt' AS Поле1, *
FROM [file.txt] IN 'C:\Users\User\Desktop\1111'[Text;DSN=spec_01,IMEX=1,Hdr=No];
sasha_prof вне форума Ответить с цитированием
Старый 23.05.2018, 21:51   #10
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

попробуйте,если у вас количество поле совпадает
INSERT INTO Таблица1
SELECT *
FROM [file.txt] IN 'C:\Users\User\Desktop\1111'[Text;DSN=spec_01,IMEX=1,Hdr=No];

но я обычно делаю это мастером, а не пытаюсь угадать синтаксис
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось shanemac51; 23.05.2018 в 21:53.
shanemac51 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура.Множественное добавление в таблицу одним запросом Deep-Minimal SQL, базы данных 5 21.12.2015 14:51
Как одним запросом добавить копию записи в таблицу? ЛюбительПИ Microsoft Office Access 5 28.10.2015 10:28
добавление нескольких записей в форме elepre Microsoft Office Access 1 18.04.2014 23:35
Выборка и подсчет кол-ва записей одним запросом WennY SQL, базы данных 1 02.07.2013 16:00
Обновление двух строк одним запросом L_M SQL, базы данных 5 03.02.2011 02:01