我使用的是Windows 10
、Delphi 10.1
、SQLite3
、Woll2Woll DBGid
和DataSource
。SQL查询如下:
SELECT ID, Cast(Name AS CHAR(30)) FROM Cuisine ORDER BY Name
SQLite3
数据定义为ID: Integer
和Name: Text
。删除可以正常工作,但插入和编辑可以在本地工作,但它们不存储在数据库中。我预计问题是由CAST(Name AS CHAR(30))
引起的,但我无法确定这是否是问题所在,也无法在任何情况下获得DB的实际更新。我单独使用了TFDQuery
,与TFDUpdateSQL component ID
一起使用的是AutoIncrement
密钥
我使用了一个变通方法,创建了一个计算字符串字段:NameStr我通过计算字段上的get文本填充了这个字段,然后在前后事件中将计算字段值分配给SQL字段:Name。
过程TdmRecipe.qryCuisineBeforePost(数据集:TDataSet(;开始qryCuisineName。AsString:=qryCuisineNameStr。AsString;终止
PROCEDURE TdmRecipe.qryCuisineNameStrGetText(发件人:TField;VAR文本:STRING;显示文本:BOOLEAN(;开始文本:=qryCuisineName。AsString;结束;