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

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

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

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

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

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

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

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

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

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

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

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

А как сделать через Excel.Application?
...
Рейтинг: 0 / 0
16.07.2004, 17:31:07
    #32608806
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Код: 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
16.07.2004, 17:38:10
    #32608831
zrumchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Витал
Код: 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
16.07.2004, 17:46:47
    #32608862
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Set rs = CurrenDB.Openrecordset("Select * from Table1 Where [Профессия]= " & wbk.WorkSheets("Отчет").Range("A4").Value & " And [Организация ]= " & wbk.WorkSheets("Отчет").Range("В5").Value)
...
Рейтинг: 0 / 0
16.07.2004, 17:52:49
    #32608875
zrumchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Спасибо Витал, спасибо Саныч!
...
Рейтинг: 0 / 0
17.07.2004, 11:36:08
    #32609222
zrumchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Как вставить в форму кнопку "Обзор" (Browse), что бы вручную выбирать открываемый файл?
...
Рейтинг: 0 / 0
17.07.2004, 12:24:57
    #32609232
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
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
17.07.2004, 13:03:31
    #32609245
zrumchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление таблицы при импорте из Excel
Shuhard1 написать "обзор" можно на любой кнопке
2 специальной кнопки обзор(целевой) не существует
3 код подкладываемый под любую кнопку с надписью "обзор" зависит от версии Access - 2000/2002/2003 - делать легче(для mdb прототип выглядет вот так)+ поищи по конфе по слову FileDialog


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

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

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

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

RowNumber= RowNumber+ 1 
Loop 

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

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


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