Lazarus无法生成正确的InsertSQL,如何解决?

时间:2016-06-15 22:40:35

标签: sqlite lazarus freepascal

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

我的数据库包含客户付款的表格。 付款表格如下:

Pay_Key :主键,整数,唯一,非空。标识表中的单个付款行 Pay_Customer :整数,非空。外键链接到Customers表中的整数类型Not NULL主键 Pay_Sum :整数。 (是的,我将付款金额存储为整数,但这在这里并不重要。)

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

有没有办法解决这个问题?如果需要,我可以编写自己的InsertSQL,我只是不明白如何将此客户参数传递给它。我非常想使用InsertSQL / UpdateSQL / DeleteSQL,因为它们可以很容易地使用库存DBGrid / DBNavigator组件和逻辑来完成我正在做的事情。

感谢您提出任何建议,并对我的问题如此冗长感到抱歉。

萨姆

  

编辑:我正在使用Lazarus 1.6(FPC 3.0.0)。我在SQLite3Connection.Params(foreign_keys = on)

中启用了SQLite中的外键

0 个答案:

没有答案