数据库使用的是 access2000,delphi用的是6.0表结构如下: 商品清单 : 货号(主键),名称....
供货商清单: 供货商号(主键),名称
采购单 : id (自动增长,主键),货号,供货商号,数量,单价..
采购单历史:id (自动增长,主键),货号,供货商号,数量,单价..(基本跟采购单相同)
采购单为输入时的表,正式确认后按一表单上的记帐按钮存入"采购订单历史". (为了简单,采购单没有使用主从表,只使用了单一表)输入界面:
DBNavigator , DBDGrid,adoConnetion ,记帐按钮
AdoDataSet采购单 : select id,货号,供货商号,数量,单价 from 采购单
adoDataSet商品清单: select 货号,品名 from 商品清单
adoDataSet供货商 : select 供货商号,名称 from 供货商清单 AdoDataSet采购单,添加全部字段后,添加2个Lookup字段。
一个为 PinMing(品名):
LookUpDataSet: adoDataSet商品清单
KeyField: 货号,
LookupKeyFields:货号,
LookupResult: 品名
一个为 Mingcheng(供货商名称) LookUp字段的设置应该是没问题的。 现在问题是,在dbGrid新增一记录后,post 或移动记录,毫无问题,但假如再
修改新增的记录,比如修改数量或单价后若post或移动记录,就会提示
"无法为更新定位行。一些值可能已在最后一次读取后已更改"问题在哪里?怎么解决,或是否应当采用其他方法?
供货商清单: 供货商号(主键),名称
采购单 : id (自动增长,主键),货号,供货商号,数量,单价..
采购单历史:id (自动增长,主键),货号,供货商号,数量,单价..(基本跟采购单相同)
采购单为输入时的表,正式确认后按一表单上的记帐按钮存入"采购订单历史". (为了简单,采购单没有使用主从表,只使用了单一表)输入界面:
DBNavigator , DBDGrid,adoConnetion ,记帐按钮
AdoDataSet采购单 : select id,货号,供货商号,数量,单价 from 采购单
adoDataSet商品清单: select 货号,品名 from 商品清单
adoDataSet供货商 : select 供货商号,名称 from 供货商清单 AdoDataSet采购单,添加全部字段后,添加2个Lookup字段。
一个为 PinMing(品名):
LookUpDataSet: adoDataSet商品清单
KeyField: 货号,
LookupKeyFields:货号,
LookupResult: 品名
一个为 Mingcheng(供货商名称) LookUp字段的设置应该是没问题的。 现在问题是,在dbGrid新增一记录后,post 或移动记录,毫无问题,但假如再
修改新增的记录,比如修改数量或单价后若post或移动记录,就会提示
"无法为更新定位行。一些值可能已在最后一次读取后已更改"问题在哪里?怎么解决,或是否应当采用其他方法?
如果是这样的话,你得已经处理,让当前只对一个表操作insert等
或close,open
但 DXDBGrid 需要 Keyfield 的问题大家是怎么解决的?