Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Из Excel в Access - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: _Boroda_, китин  
Из Excel в Access
Gustav Дата: Вторник, 23.04.2013, 10:31 | Сообщение № 21
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цитата (anvg)
По поводу первичного ключа. У вас же товар приходит по какой-то накладной или нечто подобное. Её и можно добавить в качестве элемента ключа: дата, название, накладная. Или вариант: дата, название, время ввода в таблицу.

Мне кажется, что если в первичный ключ "просятся" более трёх полей и таблица ни с чем больше не связана этим ключом (т.е. когда ключ не "наследуется" из какой-то родительской таблицы типа Накладные в дочернюю (эту) таблицу типа Строки накладной), то надо просто добавить одно поле ID записи и сделать его ключом таблицы. И, соответственно, все проверки сравнения между Excel и Access типа "добавлено/не добавлено" вести далее, опираясь на это поле, которое имеет прозрачный смысл "Номер записи". Добавлять время регистрации записи можно, конечно, но это дополнительное поле, которое возможно ранее специально не вели, и оно может претить пользователям. Кроме того, если этот таймштамп проставляется автоматически по заполнению строки, то возможна же одновременная вставка нескольких записей копи-пастом...


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Цитата (anvg)
По поводу первичного ключа. У вас же товар приходит по какой-то накладной или нечто подобное. Её и можно добавить в качестве элемента ключа: дата, название, накладная. Или вариант: дата, название, время ввода в таблицу.

Мне кажется, что если в первичный ключ "просятся" более трёх полей и таблица ни с чем больше не связана этим ключом (т.е. когда ключ не "наследуется" из какой-то родительской таблицы типа Накладные в дочернюю (эту) таблицу типа Строки накладной), то надо просто добавить одно поле ID записи и сделать его ключом таблицы. И, соответственно, все проверки сравнения между Excel и Access типа "добавлено/не добавлено" вести далее, опираясь на это поле, которое имеет прозрачный смысл "Номер записи". Добавлять время регистрации записи можно, конечно, но это дополнительное поле, которое возможно ранее специально не вели, и оно может претить пользователям. Кроме того, если этот таймштамп проставляется автоматически по заполнению строки, то возможна же одновременная вставка нескольких записей копи-пастом...

Автор - Gustav
Дата добавления - 23.04.2013 в 10:31
Serge_007 Дата: Вторник, 23.04.2013, 10:34 | Сообщение № 22
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Gustav)
надо просто добавить одно поле ID записи и сделать его ключом таблицы

Цитата (Serge_007)
Как вариант, думаю можно нумеровать строки в Excel, а ключевым полем сделать аналогичное в Access
smile

Цитата (anvg)
У вас же товар приходит по какой-то накладной или нечто подобное
Нет. Речь вообще не о товаре. Просто надо было что-то написать в примере smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Gustav)
надо просто добавить одно поле ID записи и сделать его ключом таблицы

Цитата (Serge_007)
Как вариант, думаю можно нумеровать строки в Excel, а ключевым полем сделать аналогичное в Access
smile

Цитата (anvg)
У вас же товар приходит по какой-то накладной или нечто подобное
Нет. Речь вообще не о товаре. Просто надо было что-то написать в примере smile

Автор - Serge_007
Дата добавления - 23.04.2013 в 10:34
Gustav Дата: Вторник, 23.04.2013, 11:44 | Сообщение № 23
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Хочу обратить внимание, что метод CopyFromRecordset объекта Range работает и в случае DAO (а не только ADO):

Цитата
Excel Developer Reference
Range.CopyFromRecordset Method
Copies the contents of an ADO or DAO Recordset object onto a worksheet, beginning at the upper-left corner of the specified range.


Поэтому можно отобранные аксессные строки выгрузить на лист Excel:
[vba]
Код
Sub fromRecordset()
   
      Dim dbe As Object 'DAO.DBEngine
      Dim db  As Object 'DAO.Database
      Dim rst As Object 'DAO.Recordset
           
      Set dbe = CreateObject("DAO.DBEngine.120")
      Set db  = dbe.OpenDatabase("C:\...\file.accdb")
      Set rst = db.OpenRecordset("SELECT * FROM Таблица1 WHERE 1=1")

      Range("A1").CopyFromRecordset rst          
           
End Sub
[/vba]
А потом просто операцией присваивания передать диапазон выгрузки в массив VBA - ну, а дальше уже, как говорится, дело техники и фантазии.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеХочу обратить внимание, что метод CopyFromRecordset объекта Range работает и в случае DAO (а не только ADO):

Цитата
Excel Developer Reference
Range.CopyFromRecordset Method
Copies the contents of an ADO or DAO Recordset object onto a worksheet, beginning at the upper-left corner of the specified range.


Поэтому можно отобранные аксессные строки выгрузить на лист Excel:
[vba]
Код
Sub fromRecordset()
   
      Dim dbe As Object 'DAO.DBEngine
      Dim db  As Object 'DAO.Database
      Dim rst As Object 'DAO.Recordset
           
      Set dbe = CreateObject("DAO.DBEngine.120")
      Set db  = dbe.OpenDatabase("C:\...\file.accdb")
      Set rst = db.OpenRecordset("SELECT * FROM Таблица1 WHERE 1=1")

      Range("A1").CopyFromRecordset rst          
           
End Sub
[/vba]
А потом просто операцией присваивания передать диапазон выгрузки в массив VBA - ну, а дальше уже, как говорится, дело техники и фантазии.

Автор - Gustav
Дата добавления - 23.04.2013 в 11:44
Serge_007 Дата: Вторник, 23.04.2013, 11:57 | Сообщение № 24
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Спасибо!
Я ещё поковыряюсь немного, потом вопросы задам, если они будут smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеСпасибо!
Я ещё поковыряюсь немного, потом вопросы задам, если они будут smile

Автор - Serge_007
Дата добавления - 23.04.2013 в 11:57
lex2 Дата: Четверг, 18.07.2013, 15:53 | Сообщение № 25
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем Здравствуйте ,
Задача примерно такая же как описана выше.
Но...Необходимо чтобы старые записи перезаписывались/обновлялись.

Есть датабаза. Записей/рядов в ней более 250 000.
Обновление содержит новые данные и скорректированные старые.
Как сделать так чтобы старые записи перезаписывались ?
В екселе есть макрос(нашел в инете) который работает только, если удалить записи из датабазы.

Файлы в приложении(zip).

Спасибо
К сообщению приложен файл: Team.zip (34.2 Kb)
 
Ответить
СообщениеВсем Здравствуйте ,
Задача примерно такая же как описана выше.
Но...Необходимо чтобы старые записи перезаписывались/обновлялись.

Есть датабаза. Записей/рядов в ней более 250 000.
Обновление содержит новые данные и скорректированные старые.
Как сделать так чтобы старые записи перезаписывались ?
В екселе есть макрос(нашел в инете) который работает только, если удалить записи из датабазы.

Файлы в приложении(zip).

Спасибо

Автор - lex2
Дата добавления - 18.07.2013 в 15:53
AndreTM Дата: Четверг, 18.07.2013, 16:10 | Сообщение № 26
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Что вам мешает работать средствами самого Акцесса? Зачем Excel-то понадобился для корректировки БД (возможно, многопользовательской).
Ну и напомню, заодно: имея базу в Access - вы просто можете подключить Excel'евские таблички к нему, а не пытаться управлять снаружи...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеЧто вам мешает работать средствами самого Акцесса? Зачем Excel-то понадобился для корректировки БД (возможно, многопользовательской).
Ну и напомню, заодно: имея базу в Access - вы просто можете подключить Excel'евские таблички к нему, а не пытаться управлять снаружи...

Автор - AndreTM
Дата добавления - 18.07.2013 в 16:10
lex2 Дата: Четверг, 18.07.2013, 17:52 | Сообщение № 27
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за ответ.
Я и не знаю как делать через Access.
Если у вас есть наработки , то интересно было бы взглянуть.
Можно ли запустить обновление Access скриптом из вне?

Коротко:
Мне надо будет запустить Excel скриптом из вне (сделано), (изначально часть инфы идет текстовым файлом и перерабатывается в Excel.) .Затем Excel обновит датабазу.
Обновлениые будет проводится автоматом с использованием Task Scheduler ежедневно.
 
Ответить
СообщениеСпасибо за ответ.
Я и не знаю как делать через Access.
Если у вас есть наработки , то интересно было бы взглянуть.
Можно ли запустить обновление Access скриптом из вне?

Коротко:
Мне надо будет запустить Excel скриптом из вне (сделано), (изначально часть инфы идет текстовым файлом и перерабатывается в Excel.) .Затем Excel обновит датабазу.
Обновлениые будет проводится автоматом с использованием Task Scheduler ежедневно.

Автор - lex2
Дата добавления - 18.07.2013 в 17:52
AndreTM Дата: Четверг, 18.07.2013, 23:32 | Сообщение № 28
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Мне надо будет запустить Excel скриптом из вне (сделано), (изначально часть инфы идет текстовым файлом и перерабатывается в Excel.) .Затем Excel обновит датабазу.
Вот именно про это я и говорю...
Зачем привлекать сторонние инструменты, если в Access и так всё есть (и намного больше того, что позволяет Excel - в части обработки данных)?
Но это уже история из другой оперы...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Мне надо будет запустить Excel скриптом из вне (сделано), (изначально часть инфы идет текстовым файлом и перерабатывается в Excel.) .Затем Excel обновит датабазу.
Вот именно про это я и говорю...
Зачем привлекать сторонние инструменты, если в Access и так всё есть (и намного больше того, что позволяет Excel - в части обработки данных)?
Но это уже история из другой оперы...

Автор - AndreTM
Дата добавления - 18.07.2013 в 23:32
Djubocco Дата: Четверг, 07.04.2016, 19:46 | Сообщение № 29
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
[moder]Читаем Правила форума, создаём новую тему. Эта тема закрыта[/moder]

Сорри, не заметил (


Сообщение отредактировал Djubocco - Пятница, 08.04.2016, 12:06
 
Ответить
Сообщение[moder]Читаем Правила форума, создаём новую тему. Эта тема закрыта[/moder]

Сорри, не заметил (

Автор - Djubocco
Дата добавления - 07.04.2016 в 19:46
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!