Как вставить данные в столбец Мастера поиска в Access через ODBC? - PullRequest
0 голосов
/ 27 марта 2019

Что такое оператор SQL для вставки данных в столбец мастера поиска в Microsoft Access через ODBC?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Возможно, вам удастся заставить это работать, но если вы решите изменить ссылки на базу данных (скажем, с теста на продукт), вы потеряете информацию поиска.Имейте в виду, что для любой формы вы можете использовать мастер комбинированного окна и получить те же результаты, и вам не нужно добавлять поиски на уровне таблицы.Это ОЧЕНЬ плохая идея пытаться выполнять реляционные объединения на уровне таблиц.Поскольку пользователи НИКОГДА не должны редактировать таблицы (таблицы) напрямую, но всегда использовать форму или произносить отчет, необходимость в этой функции и подходе не требуется.Мастер поля со списком в форме будет делать то же самое, и приведет к тем же результатам.Таким образом, этот столбец должен оставаться стандартным типом данных длинного столбца, и поле со списком в форме представит список из другой таблицы, а затем захватить + сохранить идентификатор PK из этой другой таблицы.

В результате ТОЛЬКОПреимущество использования поиска на уровне таблиц заключается в том, что вы позволяете пользователям открывать + редактировать таблицы напрямую, и, как отмечалось, это очень плохая идея.Что произойдет, если вам нужен идентификатор этого столбца, но теперь он возвращает некоторый текст, потому что это поиск.

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

Поэтому я настоятельно рекомендую вам сделатьне делай этого.Как уже отмечалось, поскольку обычно можно изменить базу данных, на которую указывает приложение Access, или даже сказать, изменить имя сервера базы данных, то при указании (повторном связывании) таблиц в Access вы потеряете параметры поиска.

0 голосов
/ 29 марта 2019

Драйвер ODBC для Microsoft Access можно вставить в однозначное поле поиска, просто вставив значение.

crsr.execute("INSERT INTO LookupTest (SingleValueLookupField) VALUES (?)", 'ListValue7')

Драйвер ODBC для Microsoft Access не может вставить элементы в многозначное поле поиска. Для этого из Python вам нужно будет использовать pywin32 и Access DAO, например,

import win32com.client

# ...

dbe = win32com.client.Dispatch("DAO.DBEngine.120")
db = dbe.OpenDatabase(r'C:\Users\Public\Database1.accdb')

# adding multi-value items to an existing row in table [LookupTest]
rst_table = db.OpenRecordset("SELECT * FROM LookupTest WHERE ID=1", 2)  # dbOpenDynaset
rst_multivalue_lookup_field = rst_table.Fields('MultiValueFromList').Value
rst_table.Edit()
rst_multivalue_lookup_field.AddNew()
rst_multivalue_lookup_field.Fields('Value').Value = 'ListOption2'
rst_multivalue_lookup_field.Update()
rst_multivalue_lookup_field.AddNew()
rst_multivalue_lookup_field.Fields('Value').Value = 'ListOption5'
rst_multivalue_lookup_field.Update()
rst_table.Update()

db.Close()
...