powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление таблицы при импорте из Excel
25 сообщений из 42, страница 1 из 2
Обновление таблицы при импорте из Excel
    #32608480
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно сделать вот какую штуку: Выбрать записи из таблицы Профессии, у которых [Профессия]= xlwProd.Worksheets(1).Cells("B4").Value и [№ ЕТКС]= xlwProd.Worksheets(1).Cells("B6") (результат, наверное, надо будет присвоить recordset через DAO), ну и дальше позаполнять графы Оценка1, Оценка2, Оценка3 из соответствующих ячеек экселевского файла и сохранить изменения таблице. Подскажите как получить нужные записи в рекордсете.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608563
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если в экселевском файле не слишком много нерегулярностей, то удастся прилинковаться к нему и работать как с таблицей Аксесса.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608581
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычЕсли в экселевском файле не слишком много нерегулярностей, то удастся прилинковаться к нему и работать как с таблицей Аксесса.

Что значит не слишком много нерегулярностей, и как можно прилинковаться?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608594
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
zrumchikЧто значит не слишком много нерегулярностей, и как можно прилинковаться?
Прилинковаться - через правый клик в списке таблиц.

Но проблема в том, что Эксель - не база данных. У него нет типов полей. Аксесс сам распознаёт типы полей в экселевском файле на основании данных. Но если где-нибудь в колонке, которая по идее содержит числа, юзеры понарисовали всяких нечисловых символов, то эта колонка уже не будет распознана как числовое поле.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608613
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычПрилинковаться - через правый клик в списке таблиц.

Но проблема в том, что Эксель - не база данных. У него нет типов полей. Аксесс сам распознаёт типы полей в экселевском файле на основании данных. Но если где-нибудь в колонке, которая по идее содержит числа, юзеры понарисовали всяких нечисловых символов, то эта колонка уже не будет распознана как числовое поле.

C типом данных всё будет нормально. Мне главное получить нужный набор записей рекордсете, а как это как сделать - не знаю. Ведь при содании SQL запроса нельзя ссылаться на ячейки рабочей книги экселя, или можно? Плюс ко всему в другом случае параметры отбора записей находятся на разных страницах, так что как прилинковаться к целой книге, а не к листу я вообще не понимаю. Да и что такое "прилинковаться" я тоже не сильно понял. Саныч, расскажи поподробней.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608635
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я имел в виду создать прилинкованную таблицу.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608705
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саныч, так там структура таблицы корявая, и из-а этого будут проблемы с типом данных: в одном столбце там находится и числа, и текст, и данные, и заголовки... хотя это лучше чем ничего. Придётся потом бегать по записям, писать кучу запросиков, чтобы выцепить нужную ячейку в таблице.

Есть ещё вопросы: как сделать всё тот же запрос на отборку записей из таблицы Профессия, где в качестве параметров будут данные прилинкованных таблиц. А можно ли содавать прилинкоавнные таблицы программно, вставив в форму аналог стандартной виндовской кнопки "Обзор..."?

И кроме прилинкованных таблиц нет другого метода провернуть эту штуку?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608711
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал прилинкованную табличку. Попез! На тех местах, где встречаются цифры в текстовых полях он пишет #Число!
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608725
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подстрогай руками свою табличку
или
OLE-оле-олеоле:-)
в смысле Excel.Application
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608767
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю сделать так: данные из экселевских файлов добавлю в какую-нибудь временную таблицу. Потом обновлю нужную таблицу с помощью данных из временной, и сотру временную.

Осталось написать запрос на обновление, который бы делал вот что:

Брал первую запись таблицы Временная, фиксировал там значение столбца "Выполняемая работа" - параметр А , выбирал все записи из таблицы Обновляемая с условием Выполняемая работа = А и переносил данные из первой записи таблицы Временная (столбцы Оценка1, Оценка2, Оценка3) в выбранные записи таблицы Обновляемая (столбцы Оценка1, Оценка2, Оценка3).

Затем надо перейти ко второй записи таблицы Временная и повторить всю эту хню, и так до конца таблицы Временная.

Как будет выглядеть SQL запрос, делающий это??
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608779
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharkПодстрогай руками свою табличку
или
OLE-оле-олеоле:-)
в смысле Excel.Application

Таких таблиц тут дофига, и каждую ручками обрабатывать... Хочется чтобы всё это делалось программно и надо было только указать имя файлика, данные которого нужно импортировать.

А как сделать через Excel.Application?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608806
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Dim xlApp as Object, wbk as Object, rs as DAO.Recordset
Set xlApp = CreateObject("Excel.Application")
Set wbk = xlApp.Workbooks.Open("C:\Doc\Raznoe\MyFile.xls")
xlApp.Visible = True 'или False, если надо невидимо для юзера
Set rs = CurrenDB.Openrecordset("Select * from Table1 Where [Профессия]= " & wbk.WorkSheets("Отчет").Range("A4").Value)
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608831
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Витал
Код: plaintext
1.
2.
3.
4.
Dim xlApp as Object, wbk as Object, rs as DAO.Recordset
Set xlApp = CreateObject("Excel.Application")
Set wbk = xlApp.Workbooks.Open("C:\Doc\Raznoe\MyFile.xls")
xlApp.Visible = True 'или False, если надо невидимо для юзера
Set rs = CurrenDB.Openrecordset("Select * from Table1 Where [Профессия]= " & wbk.WorkSheets("Отчет").Range("A4").Value)


А если несколько параметров, т.е. Профессия = А4 и Организация = В5 ? Куда в такой конструкции присобачить and?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608862
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Set rs = CurrenDB.Openrecordset("Select * from Table1 Where [Профессия]= " & wbk.WorkSheets("Отчет").Range("A4").Value & " And [Организация ]= " & wbk.WorkSheets("Отчет").Range("В5").Value)
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32608875
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Витал, спасибо Саныч!
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609222
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вставить в форму кнопку "Обзор" (Browse), что бы вручную выбирать открываемый файл?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609232
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 написать "обзор" можно на любой кнопке
2 специальной кнопки обзор(целевой) не существует
3 код подкладываемый под любую кнопку с надписью "обзор" зависит от версии Access - 2000/2002/2003 - делать легче(для mdb прототип выглядет вот так)+ поищи по конфе по слову FileDialog
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Function XFileDial(Optional MyPath As String) As Variant
'диалог выбора файла *.mdb на выходе Null или путь
'подключить Microsoft Office XX Object Library
Dim MyDial As FileDialog
Set MyDial = Application.FileDialog(msoFileDialogOpen)
MyDial.AllowMultiSelect = False
MyDial.Filters.Clear
MyDial.Filters.Add "Access", "*.mdb"
MyDial.Title = "Выбор файла для Link-таблицы"
MyDial.Show
If MyDial.SelectedItems.Count >  0  Then
                  XFileDial = MyDial.SelectedItems( 1 )
                                  Else
                  XFileDial = Null
End If
 Set MyDial = Nothing
End Function


...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609245
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shuhard1 написать "обзор" можно на любой кнопке
2 специальной кнопки обзор(целевой) не существует
3 код подкладываемый под любую кнопку с надписью "обзор" зависит от версии Access - 2000/2002/2003 - делать легче(для mdb прототип выглядет вот так)+ поищи по конфе по слову FileDialog


Спасибо за код и за то, что понял мой вопрос. =)
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609289
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я совсем чайник, подскажите что делать.

ошибка type mismatch на такой строке:
rs.Fields(0) = xlwProd.Worksheets(1).Cells("B4")

в экселевском файле на этом месте написано "Кузнец". Пробовал поменять строку на rs.Fields(0)= "Кузнец" - всё работает. А тут чего?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609295
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
rs.Fields(0) = xlwProd.Worksheets(1).Cells(2,4)
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609298
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в примерах тебе писали
Код: plaintext
1.
...Range("A4").Value 
может не спроста ?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609309
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё раз спасибо за помощь и терпение!
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609326
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас просто взвою волком. ДАнные читать стал, а цикл вовремя остановить не хочет! Пишу:

Код: plaintext
1.
2.
3.
4.
Do Until xlwProd.Worksheets( 2 ).Cells(RowNumber,  1 ).Value = Null
что-то там

RowNumber= RowNumber+ 1 
Loop 

Как можно эту штуку заставить остановиться? Т.е. как определить, что ячейка, к которой он обращается пустая?
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609330
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
http://www.sql.ru/faq/faq_topic.aspx?fid=213
вопрос 19, ответ 2.
...
Рейтинг: 0 / 0
Обновление таблицы при импорте из Excel
    #32609337
zrumchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Do Until IsNull(xlwProd.Worksheets(2).Cells(RowNumber, 1).Value) = True

Написал такую штуку, тоже не работает...
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление таблицы при импорте из Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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