Прежде всего, формы и отчеты MS Access не хранят никаких данных, но применяют визуальную интерактивность с данными таблицы или запроса во время выполнения.
Во-вторых, ваш вопрос показывает, как работает MS Access многогранная вещь , которая одновременно является GUI приложением и базой данных. Из-за этого ваши два подхода (win32com
и pyodbc
) несколько отчетливо отличаются и частично перекрываются. Как правило, есть два способа взаимодействия с этим программным обеспечением:
Front-End
Просто используйте установленное программное обеспечение Microsoft Office, MSAccess.exe со всеми включенными функциями пользовательского интерфейса для проектирования и использования его объектов: таблиц, запросов, форм, отчетов, макросов и модулей.
Через программный код, интерфейс к Microsoft Получите доступ к библиотеке объектов через внешний клиент, такой как Excel VBA, Python или любой другой язык или API, подключенный к COM.
В Python использование win32com
позволяет получить доступ к GUI объектам MS Access, который включает формы и отчеты, а также любым другим методам Access, таким как DoCmd.TransferSpreadsheet
или Application.ImportXML
. Для выполнения запросов вам необходим доступ к базовой базе данных объекта приложения Access. В целом, для этого подхода требуется полнофункциональное приложение Office MSAccess.exe, установленное на клиентских компьютерах.
Back-End
Подключитесь к базовой базе данных файла .accdb
(или .mdb
), например ODB C или OLEDB, используя практически любой современный язык общего назначения, например Python, с соответствующими библиотеками.
В Python использование pyodbc
(или adodbapi
) позволяет только взаимодействовать с базой данных Jet / ACE (файлы Windows .dll). Вы не можете взаимодействовать с любыми GUI объектами, включая формы и отчеты, но только с таблицами и хранимыми запросами и только с использованием SQL, называемым прикладным уровнем здесь Python. В целом, для этого подхода НЕ требуется полнофункциональное приложение Office MSAccess.exe, установленное на клиентских компьютерах.
С учетом сказанного, для ваших конкретных потребностей c, вам может не потребоваться более длинный и расширенный интерфейс win32com
, так как формы доступа предназначены для ввода / обновления / удаления данных в базовых таблицах. Другими словами, они являются удобными средствами обработки данных. Поэтому просто обведите необходимость пользовательского интерфейса и напрямую импортируйте извлеченные данные Word в таблицу базы данных за формой с помощью pyodbc
, гораздо более простого внутреннего метода.
В частности, чтобы ответить на ваши вопросы:
Я написал Python скрипт, который извлекает строки из документов Word. Цель состоит в том, чтобы затем вставить эти строки в уже существующую форму в базе данных Access, сохранить ее, создать дубликат формы, вставить различные строки из следующего документа Word, сохранить, повторить.
Во-первых, никто не должен дублировать реальный объект формы, кроме данных. Вместо этого вставьте данные в источник данных за формой, используя объект cursor
и параметризацию:
# APPEND QUERY WITH PARAMETERS
sql = """INSERT INTO myTableBehindmyForm (Field1, Field2, Field3, ...)
VALUES (?, ?, ?, ...)
"""
# EXECUTE QUERY WITH TUPLE OF BINDED VALUES
cursor.execute(sql, (word_string1, wordstring2, wordstring3, ...))
Форма уже содержит все необходимые мне поля, и она имеет кнопки «сохранить» и «создать дубликат». У меня проблемы с выяснением того, как вставить строки в форму доступа.
Чтобы сохранить, просто передайте вышеуказанный запрос и повторите его, повторите вызов cursor.execute
:
# EXECUTE QUERY WITH TUPLE OF BINDED VALUES
cursor.execute(sql, (word_string1, wordstring2, wordstring3, ...))
conn.commit()
# EXECUTE QUERY WITH TUPLE OF BINDED VALUES
cursor.execute(sql, (word_string1, wordstring2, wordstring3, ...))
cursor.execute(sql, (word_string1, wordstring2, wordstring3, ...))
conn.commit()
Большинство из того, что я нашел, было о том, как заполнять таблицы в Access, и я не уверен, как транскрибировать этот код для работы с формами или откуда этот код берется вообще.
Опять же, не нужно работать с формами (без данных GUI объекты), а просто с таблицами за формами. Поэтому go с pyodbc
или любым совместимым MS Access и Python DB-API для обработки ваших потребностей в данных.