TClientDataSet错误“尝试修改只读字段”

时间:2012-05-12 12:16:19

标签: delphi ado tclientdataset tdatasetprovider

我使用下一个链

TADOQuerry->TDataSetProvider->TClientDataSet

获取Items和ItemType表的数据并离线使用它。 Item TADOQuery的SQL属性包含一个简单的查询

select i.ID,i.Name, i.TypeID, i.Qnty, i.Price, it.TypeName 
from Items i join ItemType it on (it.ID = i.TypeID)

ItemType甚至更简单:

select * from ItemType

now - 对于cdsItems我将TypeName字段修改为查找字段并将其链接到cdsItemType - 没有什么不常见 - 并将cdsItems绑定到网格。 但是当我尝试通过在网格中使用组合框来修改数据时 - 它会抛出错误“试图修改只读字段”。

我设置了TCliendDataSet的所有字段ReanOnly:= false。 此外,在我将数据输入TClientDataSets后 - 使用for - 我再次设置为所有字段ReadOnly:= False。 但即便如此,我仍然“试图修改只读字段”。

使用过的数据库是MS SQL Server 2005 Express版。

1 个答案:

答案 0 :(得分:2)

<强> FOUND !!!!

位于GetItems查询的TypeID列类型中的错误(ADOQuery类型) - 当我将所有字段加载到其中时 - 添加为TAutoIncField的TypeID - 当我将其更改为TIntegerField时 - 一切顺利。