powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Унниверсальный запрос на объединение
16 сообщений из 16, страница 1 из 1
Унниверсальный запрос на объединение
    #39849668
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Не могу найти решения. Есть ограничения по выгрузке из учетной системы, поэтому данные выгружаются в эксель частями потом заливаются в аксесс. Для работы мне нужно объединить эти таблицы в одну. Но имена таблиц все время разные, одинаковый только формат. Можно ли написать универсальный запрос на объединение всех этих табличек в одну?
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849687
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marka0506.... поэтому данные выгружаются в эксель частями потом заливаются в аксесс.... И в Тулу из Москвы мы ездим через Владивосток
А что нельзя данные добавлять в тбл.АCCESS???
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849690
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие такие ограничения?
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849693
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ограничения на определенные даты и разумеется на количество строк, там не больше 10 тысяч.
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849694
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marka0506Можно ли написать универсальный запрос на объединение всех этих табличек в одну?Запрос - нельзя, Access даже не подозревает о существовании динамического SQL...

А вот модуль на VBA с этим справится играючи. Всего 5 строк кода-то и нужно...
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849697
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос тоже подойдет. Поможете?
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849700
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
file=dir("c:\folder\*.xls")
do until file=""
    docmd.runsql "insert into table (fieldnames) select * from [Лист1]!A2:X10000 in '" & file & "'[Excel 12.0; HDR=No; IMEX=1]"
    file=dir()
loop
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849731
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо! Разобралась.

For Each f1 In fc
s = f1.Name
strFullFileName = folderspec & s
DoCmd.RunSQL "insert into _СВОД select * from [Лист1$] in '" & strFullFileName & "'[Excel 12.0; HDR=yes; IMEX=1]"
Next
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849735
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно еще как то сделать чтобы в сведенной таблице в одном из столбцов указывалось наименование файл эксель. Чтобы при необходимости определять источник
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849736
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто мешает? вставляйте нужный литерал в запрос...

Код: vbnet
1.
DoCmd.RunSQL "insert into _СВОД select *,'" & s &  "' from [Лист1$] in '" & strFullFileName & "'[Excel 12.0; HDR=yes; IMEX=1]"
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39849740
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати... если уж не хотите указывать конкретный диапазон - указывайте хотя бы столбцы. А то запросто можете получить полей больше, чем в таблице назначения...

И добавьте WHERE по какому-нибудь полю - на случай, если точно так же добавятся пустые строки.
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39850197
Marka0506
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Спасибо!

У меня такая запись не работает. Ошибку дает.
Не совсем понимаю как в такой записи указать в какой конкретно столбец давать информацию о названии файла.
Я пока сделала так:

DoCmd.RunSQL "insert into _СВОД select * from [Лист1$] in '" & strFullFileName & "'[Excel 12.0; HDR=yes; IMEX=1]"
DoCmd.RunSQL "UPDATE _СВОД SET Источник= '" & Mid(s, 1, Len(s) - 5) & "' WHERE [Источник] Is Null"

Но если можно в одном запросе, то было бы конечно лучше.
Столбцы и строки пока не ограничиваю, выгрузка из системы всегда одинаковая, но если в какой то момент замечу, что выдает мне лишнее - ограничу.
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39850248
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marka0506У меня такая запись не работает. Ошибку дает.При возникновении ошибки следует:
1) Указывать точно, в какой строке кода возникла ошибка.
2) Указывать точно, какая ошибка - цитировать сообщение о ней, в самом крайнем случае приложить скриншот.
3) Для показанного типа кода - сначала собрать текст параметра в отдельной переменной:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
dim sql as string
sql="insert into _СВОД select * from [Лист1$] in '" & strFullFileName & "'[Excel 12.0; HDR=yes; IMEX=1]"
debug.print sql
docmd.runsql. sql
sql="UPDATE _СВОД SET Источник= '" & Mid(s, 1, Len(s) - 5) & "' WHERE [Источник] Is Null"
debug.print sql
docmd.runsql. sql


и показать его вместе с информацией по ошибке.
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39850260
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marka0506, вот эта маята с запросами а напаркуа?
создали объект, нашли лист, взяли данные хоть через currentregion, хоть ыерез usedrange, проанализировали, положили аккуратненько в таблицу, зачем сваливать в Аксесс в кучу? мало того что объем разбухает, так ведь потом обрабатывать то все равно надо.
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39850273
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marka0506Есть ограничения по выгрузке из учетной системы, поэтому данные выгружаются в эксель частями потом заливаются в аксесс. Для работы мне нужно объединить эти таблицы в одну. Но имена таблиц все время разные, одинаковый только формат

одно время мне часто приходилось объединять порции и умные excel и access меня то того утомили , что я стала объединять порции из екселя, программно формируя текстовый файл с добавлением апострофа перед каждым полем и имени порции в каждую строку
из строки где 12.10 -не дата и лидирующие нули 02 нельзя терять и 5557777777777777777 это расчетный счет
1010212.10555777777777777777720.12.2018
я делала
'101;'02;'12.10;'5557777777777777777;'20.12.2018;'имя_порции;'порядковый номер

далее импортировала в рабочую таблицу аксесс как символьные поля

и уже в а аксесс проверяла корректность данных, некоторую корректировку, иногда удаляла пачку(для правки исходника в ексель) и перезапись с основную таблицу

может это и лишние шаги, но они меня устроили на 100%, уж слишком плохое было качество исходников
...
Рейтинг: 0 / 0
Унниверсальный запрос на объединение
    #39850311
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАпрограммно формируя текстовый файл с добавлением апострофа перед каждым полем+100500

PS. Я думал, это только меня они смогли достать до того, что пришлось изобрести этот приём... наверное, даже ещё где-то в старых архивах валяется пара файлов с написанным универсальным модулем для подобной ерунды.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Унниверсальный запрос на объединение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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