在 LibreOffice Base 7.1.1.2 数据库背后编写代码。我想捕获 SQL 错误并为用户提供比 HyperSQL 发出的更好的消息。我编写了一个派生自 XSQLErrorListener 的 Python 类并实现了 errorOccured 方法(请注意,方法名称必须这样拼错,因为为 XSQLErrorListener 编写 LibreOffice 对象模型的人就是这样做的)。我注册了侦听器,并使用 com.sun.star.sdb.SQLErrorEvent 类型的事件向我的代码传递了回调。此结构包含一个成员 Reason,它是 UNO 类型“any”,其中包含所需的错误数据。 Python 无法使用此成员。我让它在 LibreOffice basic 中工作,它有一个可以接收 Reason 数据的 Variant 类型。有没有人用 Python 处理过此类数据,如果是,如何处理?我无法使用“mri”扩展查看 Reason(Python 抛出异常)。
我希望收到带有 SQLErrorEvent 对象的回调,并且收到了。我希望检查它的 Reason 成员,它是 UNO 类型“any”,但 Python 似乎无法做到这一点,或者我不知道该怎么做。