delphiadotclientdatasettdatasetprovider

TClientDataSet error "Trying to modify read-only field"


I use the next chain

TADOQuerry->TDataSetProvider->TClientDataSet

to got data for Items and ItemType table and work with it offline. Item TADOQuery's SQL property contains a simple query

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's even simpler:

select * from ItemType

now - for cdsItems I modify TypeName field to be an look-up field and chain it to cdsItemType - nothing uncommon - and bound cdsItems to a grid. But when I try to modify data through using combobox in grid - it throws an error "Trying to modify read-only field".

I set to all fields of both TCliendDataSet ReanOnly:= false. Also, after I got data into TClientDataSets - using an for - I set again to all fields ReadOnly:=False. But even that I still got "Trying to modify read-only field".

Used database is MS SQL Server 2005 Express edition.


Solution

  • FOUND!!!!

    The bug where located in the type of TypeID column of GetItems query (ADOQuery type) - when I loaded all the field into it - the TypeID where added as TAutoIncField - when I changed it to TIntegerField - everything goes well.