| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Equation в Word и таблица в Access |
| Автор: Loiste 29.9.2005, 11:54 |
| Есть такая задача.. Имеется файл Word с вопросами и вариантами ответов по математике. В файле есть не только текст, но и формулы - объекты Equation. Возможно ли связать формулы, находящиеся в вордовском документе с ячейками таблицы в Access? Чтобы не заполнять формулами базу данных, иначе ее размер будет слишком большой. Данная связь нужна для того, чтобы потом в форме Access подставлять эти формулы в вопросы и ответы. |
| Автор: Akina 29.9.2005, 12:41 | ||||
Конечно нет. Файл Ворда не может быть источником данных связанной таблицы.
Ты можешь хранить объекты MS Eq в полях Аксессовой БД (тогда БД действительно будет пухлая) или выдергивать их из прилагаемого Вордового документа программно непосресдтвенно при загрузке БД или при выводе на экран формы. Но я бы пошел по пути разделенных БД, в т.ч. отдельная БД для хранения формул. Это минимизирует накладные расходы и убережет от глюков с возможными изменениями в файле с формулами. |
| Автор: Loiste 29.9.2005, 13:45 |
| Есть еще один запасной вариант. Есть идея сделать отдельно для каждого вопроса и ответа свой файл Word с текстом, формулами и т.д (один вопрос - один файл). и связывать его с базой данных Access через поле OLE. Тогда файлы с вопросами и ответами можно было бы хранить в отдельных папках и при необходимости подставлять их в форму работы с вопросами и тестами. Только желательно, чтобы в таблице Access хранились ссылки (то есть отдельная ячейка ссылается на отдельный документ), а не сами файлы. Так, чтобы при изменении файла в Word изменения отражались и в формах отображения в Access. Хотелось бы узнать Ваше мнение как специалиста об этом варианте. Столько мороки с этими заданиями по математике. |
| Автор: Akina 29.9.2005, 15:30 | ||
| Loiste А может взять готовую систему создания "угадаек"? а?
ну и храни путь к файлу - в поле типа стринг. и программно выдергивай файл на всеобщее обозрение. еще рекомендация - упрости себе жизнь и храни Вордовые документы в RTF. |
| Автор: Loiste 30.9.2005, 13:02 | ||||
Готовую не получится. Надо разрабатывать свою. Вузовскую.
Это упростит обращение к файлу? Прошу прощения, если мои вопросы кажутся ламерскими. Просто мне раньше не приходилось работать с объектами Microsoft. В идеале было пожелание хранить и вопросы и ответы в одном файле Word (так как они уже набраны по всем предметам по одному образцу). Эти документы как-то подключать к базе и программе и выдергивать оттуда вопросы и ответы. |
| Автор: Akina 30.9.2005, 13:36 | ||||
Нет, это упростит их вывод. Вместо OLE-контейнеров можно будет использовать RichTextBox. Добавлено @ 13:37
МожнО, конечно... но это неправильно. Нет идеологии. Нельзя плясать от того что есть, надо сразу делать по уму. |
| Автор: Loiste 30.9.2005, 14:33 | ||
А что бы вы посоветовали? Просто, если хранить такое количество формул в базе ее размер станет чрезвычайно большим. К тому же, если делать все с чистого листа, то вбивать все эти данные придется мне, а это несколько десятков документов |
| Автор: Akina 30.9.2005, 14:51 | ||
1) Я уже предлагал борьбу с размером - путем отделения данных от интерфейса, вынесением формул в отдельную БД. 2) Забудьте вообще о том что что-то в Ворде есть - представьте что нет НИЧЕГО. И именно с этого положения начинайте. Разработайте систему хранения и вывода формул, удобную именно вам. 3) Создайте отдельно средства для проведения тестирования и средства для ввода/корректировки вопросов и вариантов ответов. Тогда эти данные придется вбивать тому кто за это отвечает. 4) Крайний случай - хранить формулы в виде рисунков (захват с экрана из Ворда). Вообще, если несложно - выкуси из какого-нить задания в формате Ворда пару номерочков и приаттачь сюда - посмотреть о чем собсно речь-то идет. |
| Автор: likhobory 1.10.2005, 01:11 | ||
как вариант: сохраняем формулы документа средствами VBA в EMF-формате и кидаем в БД |
| Автор: Loiste 3.10.2005, 09:35 | ||
Хорошо. Сегодня постараюсь приаттачить. Но, может, тогда просто вордовский файл приаттачить? Не весь конечно, я оставлю только отдно задание. А пока. Не подскажите примерчик как из Access прочитать *.doc с помощью word.paragraphs ? Что-то не могу найти такой.. |
| Автор: likhobory 3.10.2005, 13:07 | ||
http://forum.vingrad.ru/index.php?showtopic=63299&hl=paragraphs |
| Автор: Akina 3.10.2005, 13:56 | ||
а я что-то другое сказал? |
| Автор: Loiste 3.10.2005, 14:53 | ||
Хм..похоже, сегодня не получится.. Спасибо за терпение |
| Автор: Akina 3.10.2005, 15:32 | ||
ничего, мы до завтра подождем. |
| Автор: Loiste 4.10.2005, 09:54 | ||
| Всем доброго дня А как по вордовскому документу осуществить поиск слова? Так правильно будет?:
И как прочитать следующий абзац, после того, в котором находится это слово? Или, перебирая параграфы, проверять условием? Только больно не бейте. Я не волшебник - я только учусь)) |
| Автор: likhobory 4.10.2005, 10:38 | ||||||
поскольку используешь Selection , то поиск будет идти только в выденном диапазоне,если нужен поиск в опред диапазоне - используй Range или Content - для поиска по всему доку.
|
| Автор: Loiste 4.10.2005, 12:48 | ||||||||||
При:
Так?:
Добавлено @ 12:54
Какого типа должен быть NextParText? Строка не подходит, параграф тоже. |
| Автор: likhobory 4.10.2005, 14:30 |
| именно строка, проверяй, где-нть нахимичил |
| Автор: Loiste 4.10.2005, 14:31 |
| Я уже замучала вопросами Как вставить данные из буфера обмена (скопированные из Word) в ячейку таблицы Access (поле OLE)? |
| Автор: Loiste 4.10.2005, 14:43 | ||
Подставила строку. Работает Но..почему-то через раз о_О Один раз запускаю все работает. Запускаю второй раз на этой строке выдает ошибку: Remote server machine does not exist or is unavailable Еще раз запускаю, снова работает. И так все время.. |
| Автор: likhobory 4.10.2005, 15:17 | ||
проверь, не создаешь ли несколько word-объектов, а лучше код выложи
что именно копируешь?? |
| Автор: Loiste 4.10.2005, 15:28 | ||
обзац с текстом и формулой Equation |
| Автор: likhobory 4.10.2005, 16:35 |
| покажи док. с формулами. уже обсуждалось - если не хочешь раздувать БД - храни в ней только ссылки на файлы с формулами какая версия офиса ?? |
| Автор: Loiste 5.10.2005, 09:12 |
| Я сейчас хочу по другому сделать. Я из этого файла читаю данные и создаю отдельные вордовские файлы для вопросов и ответов. Это у меня уже получилось Хочу связать программно каждый такой файл с ячейкой Access (поле OLE). А это пока не знаю как организовать. Не подскажите? И у меня еще вопросик. Как программно очистить буфер обмена в ворде перед его закрытием. А то у меня ворд закрывается, а буфер не очищается. Вот примерный файлик. Я сейчас с ним экспериментирую |
| Автор: Loiste 5.10.2005, 09:37 | ||
Вот мой код. В коде русские слова пришлось написать латинскими буквами. Смысл такой. Открывается документ "Новый" и читаются его параграфы. Соответственно вопросы и ответы отправляются в разные файлы ворда, сохраняются и закрываются. Для каждого вопроса создается отдельный файл и для каждого ответа также создается отдельный файл. При этом копирование и вставка информации происходит через буфер обмена. Но код выполняется через раз. Один раз выполняется. В другой выдает ошибку: Remote server machine does not exist or is unavailable и запускает отладчик ставя курсор на строку 38: Selection.Paste |
| Автор: Akina 5.10.2005, 10:38 |
| Модератор: на время решения проблемы, озвученной в предыдущем постинге, тема переносится в соотв. раздел. |
| Автор: Loiste 5.10.2005, 12:45 | ||||
| Так..Я организовала все так, что в ячейки соответствующих таблиц заносятся пути к соответствующим файлам так:
и так:
На форме разместила элемент "Присоединенная рамка объекта" и связываю его с документами Ворд через ссылки в поле таблицы. Как организовать все так, чтобы при нажатии кнопки эта связь менялась на ссылку из следующей ячейки таблицы и в Присоединенной рамке был виден соответствующий ей объект? Если я объявляю все переменные и открываю таблицу в процедуре нажатия кнопки, то выходит, что таблица каждый раз открывается заново. Если открываю ее в General, в процедуре нажатия кнопки он не видит открытый объект таблицы и ругается. |
| Автор: likhobory 5.10.2005, 16:37 |
| еще раз: какая версия офиса ?? |
| Автор: Akina 5.10.2005, 16:49 |
| Модератор: Сколько можно мешать вопросы в кучу??? Придерживайтесь правила: один топик = один вопрос. |
| Автор: Loiste 6.10.2005, 07:40 | ||
Сорри, забыла указать. Office 2000 Модератор: Сколько можно мешать вопросы в кучу??? Придерживайтесь правила: один топик = один вопрос. Прошу прощения. Буду исправляться |
| Автор: likhobory 7.10.2005, 09:36 |
| баловаться с ole конечно интересно, но в данном случае есть ряд отрицательных моментов: 1. получаешь кучу мелких word-доков, причем размер каждного будет от 20 kb, вне зависимости от контента 2. придется повозиться с корректным отображением всего этого хозяйства в БД ИМХО всю текстовую инфу из дока сохраняй в соотв. полях БД, а формулы сохраняй в графическом формате (опять же советую EMF) и при работе с базой просто подставляй новый путь к Picture - и проще и ресурсы сэкономишь |
| Автор: Loiste 7.10.2005, 10:15 |
| Я бы так и сделала, но есть одно НО Выше был прикреплен лишь примерный макет. В настоящих вопросах и ответах в каждом ответе или вопросе может быть от 1 до нескольких формул, рисунков, графов. А может не быть вообще. И, когда они есть, они обычно располагаются в тексте где угодно. Как же тогда организовать просмотр всего этого дела, если хранить текст отдельно от всех графических компонентов? У меня была такая мысль вначале.Но очень быстро прошла Так что пока я остановилась на таком варианте: Исходный вородовский файл я программно разбиваю на маленькие файлики и записываю пути к ним в поля соответствующих таблиц (Вопросы, Ответы) для дальнейшего обращения к ним. На форме, источником для которой является таблица (Вопросы или Ответы) размещаю Свободную рамку объекта (устанавливаю связь с документами через ссылки) и при переходе по записям таблицы в рамке отображается содержимое соответствующего документа. |
| Автор: likhobory 7.10.2005, 10:35 | ||
напрасно, сколько бы рисунков не было, наверняка их кол-во ограничено опред. числом, так что вполне можешь их раместить на форме и при необходимости ссылаться на них из текста |
| Автор: Loiste 7.10.2005, 12:52 |
| это все придется делать мне. делать рисунки из всех объектов, прописывать ссылки на них в тексте. я же говорю. мне принесли готовые документы и никто не будет набирать все эти задания еще раз, сколько бы я не просила. а мне лишней работой заниматься тоже не хочется В любом случае, всем спасибо за помощь! |
| Автор: likhobory 7.10.2005, 13:36 | ||
зачем ?? делай все программно - пробегись в цикле по всем формулам дока и сохрани их в графике + путь кидай в соотв. поле базы |