Sqlite Lazarus无法生成正确的InsertSQL,如何补救?

Sqlite Lazarus无法生成正确的InsertSQL,如何补救?,sqlite,lazarus,freepascal,Sqlite,Lazarus,Freepascal,我正在使用Lazarus并试图将付款记录插入SQLite数据库,但显然InsertSQL并没有自动生成正确的insert语句,我发现我不能简单地使用.ParamByName将参数分配给.InsertSQL,就像我可以分配给.SQL属性一样 我的数据库中有客户表和付款表。付款表如下: 支付密钥:主键,整数,唯一,不为空。标识表中的单个付款行。 支付客户:整数,不为空。外键链接到my Customers表中的整型非空主键。 支付金额:整数。(是的,我将支付金额存储为整数,但这在这里并不重要。) 我在

我正在使用Lazarus并试图将付款记录插入SQLite数据库,但显然InsertSQL并没有自动生成正确的insert语句,我发现我不能简单地使用.ParamByName将参数分配给.InsertSQL,就像我可以分配给.SQL属性一样

我的数据库中有客户表付款表付款表如下:

支付密钥:主键,整数,唯一,不为空。标识表中的单个付款行。
支付客户:整数,不为空。外键链接到my Customers表中的整型非空主键。
支付金额:整数。(是的,我将支付金额存储为整数,但这在这里并不重要。)

我在我的SQLQuery.SQL中使用了SELECT*FROM Pay_Customer=:CustomerKey,并通过SQLQuery.ParamByName('CustomerKey').Text以编程方式每次分配:CustomerKey。这使我能够在DBGrid中很好地导航现有记录,但当我尝试插入新付款时,操作在“Pay_Customer Not NULL”条件下失败。显然,Lazarus不知道在Pay_Customer字段中使用什么值,因为我是通过编程方式传递它的

有办法补救吗?如果需要,我可以编写自己的InsertSQL,我只是不知道如何将这个客户参数传递给它。我非常希望使用InsertSQL/UpdateSQL/DeleteSQL,因为它们可以让我轻松地使用股票DBGrid/DBNavigator组件和逻辑

谢谢你的建议,也很抱歉对我的问题如此冗长

-萨姆

编辑:我正在使用Lazarus1.6(FPC3.0.0)。我已在SQLite3Connection.Params中的SQLite中启用了外键(foreign_keys=on)