我使用下一个链
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版。
答案 0 :(得分:2)
<强> FOUND !!!! 强>
位于GetItems查询的TypeID列类型中的错误(ADOQuery类型) - 当我将所有字段加载到其中时 - 添加为TAutoIncField的TypeID - 当我将其更改为TIntegerField时 - 一切顺利。