Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158

Запрос к внешнему файлу

16.02.2021, 17:00. Показов 5989. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
очередной вопрос новичка

можно ли делать запрос к внешнему файлу Excel так что бы не блокировать этот файл?

у меня почти такой запрос

SQL
1
2
3
SELECT *
FROM [Лист1$] AS Prkz 
IN 'N:\info\src\shtoto.xls'[Excel 8.0;HDR=YES;IMEX=1;ACCDB=YES ];
запускается одно (или несколько) справочное приложение Access c начальным запросом на получение данных из таблицы и всё - файл Excel заблокирован - только на чтение - что бы заменить его надо "завершить" все приложения Access
но у кого из сотрудников запущен справочник не узнать
приходится ждать начала следующего рабочего дня, что бы обновить информацию..

поэтому вопрос - можно ли делать запрос к внешнему файлу Excel так что бы не блокировать этот файл?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2021, 17:00
Ответы с готовыми решениями:

Путь к внешнему файлу Oracle Developer
День добрый, возникла небольшая проблема, не пойму как указать путь к внешнему (dbf) файлу на Oracle Developer?

Путь к внешнему файлу / Необрабатываемое исключение в приложении
Здравствуйте! В программе на с# WF при наведении на картинку, она должна быть заменена на другую. Картинка лежит в папке с exe файлом....

Не могу указать путь к внешнему txt файлу в Java EE Eclipse
Здравствуйте! Подскажите пожалуйста, я пишу простенькую программку для андроид на работу с текстовыми файлами. нужно указать внешний txt...

44
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
18.02.2021, 22:03  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от shanemac51 Посмотреть сообщение
корректируется внутренняя таблица аксесса, а не внешняя екселя
Так это и правильно, внешняя таблица должна быть доступна для изменений (например мной), а внутренняя - это некий справочник (только на чтение)
Но сейчас, как только запускается Access приложение, происходит единственный запрос к таблице и она оказывается заблокирована - её не перезаписать... а надо обновлять данные
Я пробовал разные варианты - не получается пока...

Eugene-LS предложил считать данные средствами VBA и закрыть(освободить) файл - я до марта не смогу это попробовать, а интересно... тогда можно будет периодически обновлять внутренние данные...
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
19.02.2021, 01:21
Цитата Сообщение от kahsel Посмотреть сообщение
внешняя таблица должна быть доступна для изменений
А что будет после ваших изменений? Один поменял в Акцесс, второй в Эксель. Какие сохранять будем?
1
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
19.02.2021, 01:38
Цитата Сообщение от alvk Посмотреть сообщение
Один поменял в Акцесс, второй в Эксель. Какие сохранять будем?
Очинь харошый вапрос!
Однаврименно - то, некак! - к сожалению
0
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
19.02.2021, 08:44  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
А что будет после ваших изменений? Один поменял в Акцесс, второй в Эксель. Какие сохранять будем?
По условиям задачи: приложение в Access - это витрина для информации, все изменения производятся только во внешнем файле формата Эксель.

Прошу не сбивать обсуждение с исходных условий... Пожалуйста!!!

Добавлено через 20 минут
Цитата Сообщение от kahsel Посмотреть сообщение
внешняя таблица должна быть доступна для изменений (например мной), а внутренняя - это некий справочник (только на чтение)
Приложение в Access - это витрина для информации

Работа у меня такая (вторая) - гружу информацию и делаю для неё интерфейсы для удобства пользования и сохранности,
То есть у пользователей не должно быть возможности её менять
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
19.02.2021, 08:46
Цитата Сообщение от kahsel Посмотреть сообщение
все изменения производятся только во внешнем файле формата Эксель
Тогда просто копируйте данные из Excel файла - в таблицу Access, с привязкой к параметрам файла (Название, (Путь), дата редакции, размер). Будет хоть видно "свежесть данных"
0
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
19.02.2021, 08:51  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Тогда просто копируйте данные из Excel файла - в таблицу Access,
Какими средствами? если с помощью мастера - то тогда даже второй пользователь не может нормально запустить приложение - блокировка Excel файла ..

Поэтому и вопрос возник - Как это сделать, что бы не было блокировки!
(и кстати - в рабочем проекте у всех данных есть дата их изменения/внесения)
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
19.02.2021, 09:08
Лучший ответ Сообщение было отмечено kahsel как решение

Решение

Цитата Сообщение от kahsel Посмотреть сообщение
Какими средствами?
Подлинковка листа книги Excel:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Function LinkExcelList(filePath As String, listName As String, tableName As String) As Long
' es 18.01.04
' Подлинковка листа книги Excel в режиме: READONLY - редакция данных не доступна
' Возвращает код ошибки или 0
'-------------------------------------------------------------------------
'Аргументы:
'   filePath   = Полный путь к файлу
'   listName   = Название листа
'   tableName  = Название таблицы (в текущей базе)
'-------------------------------------------------------------------------
Dim strLink As String
Dim tdf As TableDef
'Удаляем старую таблицу (если есть)
On Error Resume Next
    DoCmd.DeleteObject acTable, tableName
    Err.Clear
On Error GoTo LinkExcelListErr
'Задаем строку подключения
    strLink = "Excel 8.0;DATABASE=" & filePath
    Set tdf = CurrentDb.CreateTableDef(tableName)
    tdf.Connect = strLink
'Задаем название листа
    tdf.SourceTableName = listName & "$"
'Удаление старой (если есть)
    If DCount("*", "MSysObjects", "[Name]='" & tableName & "' AND Type=6") > 0 Then
        CurrentDb.TableDefs.Delete tableName
    End If
 
'Создание подлинкованной таблицы
    CurrentDb.TableDefs.Append tdf
    Set tdf = Nothing
    CurrentDb.TableDefs.Refresh
    DoEvents
    Exit Function
 
LinkExcelListErr:
    LinkExcelList = Err.Number
    MsgBox "Функция [LinkExcelList] привела к ошибке:" & vbCrLf & _
    Err.Description & vbCrLf & " Err#" & Err.Number, vbCritical
End Function


01. Подключили
02. Запросиком импортировали данные ...
03. Удалили подключенное
Всё.
Файл свободен!
1
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
19.02.2021, 10:08  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Подлинковка листа книги Excel:
Красиво, однако!!!
Вот наступит март - разберусь!!!
Спасибо!!
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
19.02.2021, 11:04
Цитата Сообщение от kahsel Посмотреть сообщение
По условиям задачи: приложение в Access - это витрина для информации, все изменения производятся только во внешнем файле формата Эксель.
Телега впереди лошади? Успехов в вашем нелёгком труде.
0
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
19.02.2021, 11:48  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Телега впереди лошади? Успехов в вашем нелёгком труде.
А прокомментировать - Что не так??? Углубить тезис? Помочь в познании истины?
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
19.02.2021, 12:27
Цитата Сообщение от kahsel Посмотреть сообщение
А прокомментировать - Что не так???
Видимо ув. alvk, хотел сказать, что имея в руках MS Access - работать с табличками MS Excel - это как копать траншею чайной ложкой сидя в экскаваторе
Что то в этом есть.
Не всё же сразу ...
0
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
19.02.2021, 12:46  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
имея в руках MS Access - работать с табличками MS Excel - это как копать траншею чайной ложкой сидя в экскаваторе
Ну это смотря на то, какая информация грузится ".. всё относительно.."
у меня неоднократно возникали ситуации, когда информацию было гораздо проще загрузить в MySQL редактируя в NotePad++ дамп базы данных
сотни фотографий к выставкам МДФ
десятки доп.видов к товарам в интернет-магазины
чего я только не грузил...

Возможно, когда я сочиню правильные формы и десяток процедур - в Access это будет быстрее и удобнее...

Но пока быстрее - выделить строку в таблице, сдублировать её, скопировать по несколько параметров в несколько столбцов..
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
19.02.2021, 12:49
Цитата Сообщение от kahsel Посмотреть сообщение
Ну это смотря на то, какая информация ...
Это понятно.
Я просто попытался ответить на ваш вопрос (пояснить пост #29) .
...
Хоть в Excel, хоть в hex редакторе ... - лишь-бы вам было удобно.
0
510 / 164 / 22
Регистрация: 04.10.2015
Сообщений: 649
19.02.2021, 20:09
Проблему свели к простому копированию. И не надо париться.

Иногда самые сложные задачи решаются на рыбалке. ©
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
20.02.2021, 04:39
Цитата Сообщение от kahsel Посмотреть сообщение
Углубить тезис? Помочь в познании истины?
Лошадь(БД) - Акцесс, Телега(Построитель отчётов) - Эксель. Так понятно?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
20.02.2021, 05:02
Цитата Сообщение от kahsel Посмотреть сообщение
поэтому вопрос - можно ли делать запрос к внешнему файлу Excel так что бы не блокировать этот файл?
Вы из ЭКСЕЛЯ пытаетесь сделать базу данных, вы считаете это правильным решением?

Добавлено через 1 минуту
Заберите в акцес свой эксель полностью и удалите нафиг этот файл экселя, пусть сотрудники в акцес работают
0
510 / 164 / 22
Регистрация: 04.10.2015
Сообщений: 649
20.02.2021, 08:45
Лучший ответ Сообщение было отмечено kahsel как решение

Решение

Хотя такая задача никогда не была востребована мной, но стало дюже интересно.
Путем экспериментов установил следующее:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
' Есть книга XL Naklad.xls
' в этой книге есть лист Prim
' необходимо подключить заданный лист к текущей базе данных
Function Create_LnlkXL()
Dim tdf As TableDef
Dim strPath As String
Dim sTable As String
Dim listName As String
Dim strLink As String
 
' путь к файлу
strPath = "C:\Tmp\Nakld.xls"
' создаваемая таблица
sTable = "Prim"
' источник подключения
listName = "Prim$"
' 1-й вариант.  Во время выполнения запроса файл Excel открывается только в режиме чтения
strLink = "Excel 5.0;HDR=YES;IMEX=1;DATABASE=C:\Tmp\Naklad.xls"
' 2-й вариант. Во время выполнения запроса файл Excel полностью блокируется
'strLink = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=C:\Tmp\Naklad.xls"
' параметр Excel 5.0 зависит от версии Excel
Set tdf = CurrentDb.CreateTableDef(sTable, dbVariableField, listName, strLink)
' добавляем таблицу
CurrentDb.TableDefs.Append tdf
Set tdf = Nothing
CurrentDb.TableDefs.Refresh
' далее можно добавить обработчик ошибок
End Function
1
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
24.02.2021, 11:38  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Всё.
Файл свободен!
Выполнив февральские работы досрочно, возвращаюсь к интересному
- можно ли делать запрос к внешнему файлу Excel так что бы не блокировать этот файл?

Вариант andris2 работать сразу не захотел ( кнопка Test2 в примере ) - выдает ошибку, "Лист1" уже существует (нет обработчика - буду разбираться позже!)

Вариант Eugene-LS заработал сразу и частично решил проблему:
- если я запустил Access, то потом я не могу открыть файл-источник в Excel, он заблокирован
- если я открыл файл-источник в Excel, а потом запустил Access, то изменения внесенный в источник, по запуску обновления ( кнопка Test в примере ) - информация в таблице tbl_0 обновляется, но через некоторое время Access выдает ошибку - "Потеряна связь с Microsoft Excel для просмотра присоединенных листов." и "обнуляет" подформу... через некоторое время данные в подформе восстанавливаются, но сообщение об ошибке продолжает висеть..

если посмотреть информацию о таблице с полученной информацией ( tbl_0 ) - то она "привязана" к файлу исходнику..
Вложения
Тип файла: zip test_VBA_24.zip (339.9 Кб, 7 просмотров)
0
4 / 5 / 0
Регистрация: 03.02.2021
Сообщений: 158
24.02.2021, 14:07  [ТС]
Пример для работы по месту C:\Access_VBA, иначе надо поправить путь в Module1

Добавлено через 2 часа 22 минуты
Цитата Сообщение от Eugene-LS Посмотреть сообщение

Visual Basic
1
2
3
4
5
6
'Создание подлинкованной таблицы
 CurrentDb.TableDefs.Append tdf
 Set tdf = Nothing
 CurrentDb.TableDefs.Refresh
 DoEvents
 Exit Function
Все же для меня уже написано
Visual Basic
1
CurrentDb.TableDefs.Append tdf
то есть - внешняя таблица подключается... и не отключается, потому что метод Append
даже если попробую создать временную таблицу к которой сделаю подобное подключение, и содержимое которой скопирую с рабочую таблицу, то полноценно удалить Линк не получится... внешняя таблица остается в "зависе"
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
25.02.2021, 02:26
Цитата Сообщение от kahsel Посмотреть сообщение
и не отключается, потому что метод Append
А ну это старый глюк MSA, он при смене идеологии приложения сам формы не переделывает, и соответственно не может удалить таблицу уже открытую в форме.
Это можно обойти не переделывая формы а просто перенаправив поток данных в другую сторону.

Пример ниже ...
Вложения
Тип файла: zip test_VBA_v003.zip (61.7 Кб, 11 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2021, 02:26

Как отправить AJAX запрос к внешнему ресурсу для переадресации?
Как отправить ajax запрос к внешнему ресурсу ? Или хотя бы сделать на него переадрессацию в контролере ?

AJAX запрос к файлу, который сам делает AJAX запрос
Прошу прощение за название темы, но я не знаю как это коротко описать... Здравствуйте. На странице HTML я обращаюсь к файлу PHP: ...

запрос к файлу Xml
Напишите запрос к файлу Northwind.xml,для нахождения времени существования самых активных заказчиков,например компаний общая сумма заказов...

Запрос к php файлу
Добрый день столкнулся с небольшой проблемой и не могу найти решения, есть программа она обращается к одному php файлу с разными запросами,...

Post запрос к локальному файлу
У меня файл с js должен отправить post к php файлу, который лежит в той же папке, что и он, и путь должен быть относительным. Как правильно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru