![]() |
|
Модераторы: Akina |
![]()
|
|
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Здравствуйте! Нужно экспортировать данные из экселя в аксесс. Искал в сети, но всё найденное как-то фрагментарно. А мне бы основные варианты решений (там же вроде много путей) и стратегию. Главные моменты. Типа сначала делаем это, потом это потом это... Буду благодарен.
|
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Программно или вручную?
Если вручную, то access напрямую открывает excel файлы, в чем проблема то? можно и просто copy-paste. -------------------- Никогда не говори никогда |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Нет, надо вручную. Из VB, а не из VBA. Потом, возможно, надо будет перевести на VC++, но это еще далеко.
Добавлено @ 11:02 То есть, блин, прошу прощения - ПРОГРАММНО мне надо! |
|||
|
||||
| boevik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Если на VB, то это программно, т.е. надо написать програмку, которая в качестве source возьмет excel файл и загрузит в таблицу на access. Действительно стратегий куча, от открытия файла excel при помощи Excel object, считывания каждого поля и построения insert statment для загрузки данных в access, до связывания файла excel с access при помощи ADOX. Добавлено @ 11:13 К примеру, ADOX and excel (пример на сайте microsoft) Подцепить excel как таблицу, и тогда останеться перелить данные из одной таблицы в другую, при помощи
-------------------- Никогда не говори никогда |
||||
|
|||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Какая-то из этих стратегий наверняка является типичной и общепринятой, а какие-то другие - извращениями. Склонен думать, что общепринятый вариант - это связывание через ADOX. Не мог бы ты дать пример такого связывания или хотя бы "общую стратегию"?
То бишь: 1) Как делается подключение? 2) Если через Connection, то как будет выглядеть ConnectionString? 3) Как ADO будет понимать, где таблицы, где столбцы, где ключи и всё прочее? |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Можно долго спорить о реализации.
Первый способ, более гибкий, полный контроль за excel файлом, не зависим в какую базу данных данные попадают. Связывание через ADOX хорошо только для access, при переходе на дугую БД, работать не будет. Выбирай. -------------------- Никогда не говори никогда |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Я выбрал. Получилось следующее:
Однако есть проблемы: 1) как в SQL-запросе при создании таблицы определить автоувеличивающийся ключ (то, что в Аксесс поле типа "счетчик")? 2) В моем коде если убрать on error..., то вылезет еррор, что "тип поля не совпадает". Как создать таблицу с точно такими же полями, как в заданной таблице? 3) Может есть какой-то более лаконичный способ копирования записей из таблицы в таблицу? |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
При помощи sql statment можно создать новую таблицу из имеющейся
После запуска команды, создатся новая таблица new_table с идентичной структурой, не включая PK, индексы и autonumber. Поетому первый пункт остается открытым. -------------------- Никогда не говори никогда |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
А ничего, что эти таблицы в разных коннекшнах?
|
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Connection с access? Если с acces, то выполняется запрс и создатся таблица. Если с excel, то нельзя. -------------------- Никогда не говори никогда |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
По-моему, речь шла об экспорте-импорте, а не о связывании... или, как обычно, спросил не то что хотел?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Или как обычно меня не так поняли
Я знаю теперь, как создать рекордсет, связанный с экселевской таблицей. Теперь мне надо создать в файле mdb ТОЧНО ТАКУЮ ЖЕ таблицу и скопировать туда данные. В связи с этим два вопроса: 1) как скопировать структуру таблицы? 2) есть ли более простой (чем в моем листинге) или более правильный способ копирования данных из одной таблицы в другую точно такую же? Я не профессиональный программист и в программировании не знаю многих общепринятых вещей. Поэтому всё время думаю, не изобретаю ли велосипед. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
В буддизме (не дзен) на просветление предполагается тратить не одну жизнь. А я имею дело с необходимостью сравнительно сиюминутного характера. Ты предлагаешь заюзать метод DoCmd.TransferSpreadSheet? Но нет гарантии, что на компе юзера будет Access. Забьём на второй вопрос, оставим первый - как скопировать структуру таблицы, если она неизвестна? Открытый Recordset ведь не позволяет менять набор полей.
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |