Python 如何通过ODBC将数据插入Access中的查找向导列?

Python 如何通过ODBC将数据插入Access中的查找向导列?,python,sql,ms-access,odbc,pyodbc,Python,Sql,Ms Access,Odbc,Pyodbc,通过ODBC将数据插入Microsoft Access中的查找向导列的SQL语句是什么?Microsoft Access ODBC驱动程序只需插入值即可将数据插入单值查找字段 crsr.executeINSERT进入LookupTest SingleValueLookupField值'ListValue7' Microsoft Access ODBC驱动程序无法将项插入多值查找字段。要从Python实现这一点,您需要使用和访问DAO,例如 导入win32com.client ... dbe=wi

通过ODBC将数据插入Microsoft Access中的查找向导列的SQL语句是什么?

Microsoft Access ODBC驱动程序只需插入值即可将数据插入单值查找字段

crsr.executeINSERT进入LookupTest SingleValueLookupField值'ListValue7'
Microsoft Access ODBC驱动程序无法将项插入多值查找字段。要从Python实现这一点,您需要使用和访问DAO,例如

导入win32com.client ... dbe=win32com.client.DispatchDAO.DBEngine.120 db=dbe.OpenDatabaser'C:\Users\Public\Database1.accdb' 向表[LookupTest]中的现有行添加多值项 rst_table=db.OpenRecordsetSELECT*FROM LookupTest,其中ID=1,2 dbOpenDynaset rst\U多值\U查找\U字段=rst\U表格。字段'MultiValueFromList'。值 rst_table.Edit rst_多值_查找_字段。AddNew rst\u多值\u查找\u字段。字段“值”。值=“列表选项2” rst\u多值\u查找\u字段。更新 rst_多值_查找_字段。AddNew rst\u多值\u查找\u字段。字段“值”。值=“列表选项5” rst\u多值\u查找\u字段。更新 rst_table.Update db.关闭
您可能可以让它工作,但是如果您决定更改数据库链接,比如从test到producton,您将丢失查找信息。请记住,对于任何表单,您都可以使用组合框向导获得相同的结果,而不必在表级别添加查找。在表级别尝试关系连接是一个非常糟糕的想法。由于用户永远不应该直接编辑表,而应该始终使用表单或报表,因此不需要使用此功能和方法。表单上的组合框向导将执行相同的操作,并产生相同的结果。因此,该列应保持标准的长列数据类型,表单上的组合框将显示另一个表中的列表,并从该另一个表中抓取并保存PK id

因此,在表级别使用查找所获得的唯一优势是允许用户直接打开并编辑表,这是一个非常糟糕的主意。如果您需要该列的ID,但它现在返回一些文本,因为它是一个查找,会发生什么

对于任何报表,您都可以简单地构建一个查询,并加入另一个表以提供文本描述部分,而不是显示ID


所以我强烈建议你不要这样做。如前所述,由于更改Access应用程序指向的数据库很常见,甚至可以说更改数据库服务器的名称,因此在Access中重新链接表时,将丢失查找设置

对于这种事情,您不会使用“向导”。只是编码

# insert data into 2 fields in a table    
import pyodbc

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\your_path\\MSACCESS.accdb;')
cursor = conn.cursor()

cursor.execute(''' INSERT INTO Table2 (ExplodeKey, ExplodeField)
                    VALUES(5, 'RMS')  ''')

conn.commit()

大家好,欢迎来到stackoverflow。若你们展示你们到目前为止所做的尝试,那个么得到答案的可能性更大。建议不要在表格中建立查找,而要在表格中建立组合框。RowSource将是一个SELECT语句。为什么要使用python而不是Access作为gui和VBA来管理?将数据插入与任何字段相同的字段。