我使用TDBAdvGrid
组件显示数据库表中的数据。 它显示4列 - 组,简短描述,长描述,图像到DBAdvGrid从表。TDBAdvGrid不允许使用JOIN进行就地编辑查询
DBAdvGrid.PageMode = true
DBAdvGrid.Options中的选项goEditing设置为true。 DBAdvGrid的所有列的ReadOnly属性设置为False。
尽管如此,只有DBAdvGrid的第一列(组)才允许就地编辑。所有其他列就地编辑不起作用。
我的SQL查询是如下
UniQuery1.SQL.Text := 'Select g.name, u.label, u.description, u.image from ugroup g, emp u where u.usergroup_id = g.id';
随着它在TDBAdvGrid
但只有第一列显示结果,其示出了从ugroup
表数据正在被编辑的上述查询而其它3列,其示出了从emp
表数据是尽管将TDBAdvGrid
的GoEditing
属性设置为True,但不可编辑。
我从TDBAdvGrid
获取所有列,当从单个表中选择数据时可编辑。
什么类的类型是'UniQuery1'?你使用什么组件/技术?后端数据库类型是什么? –
@Marcus,后端数据组件是UniQuery,UniConnection,UniDataSource,SQLiteUniProvider都来自类似于SQLQuery,SQLConnection,DataSource等的通用数据访问组件(UniDAC)函数。我面对的TDBAdvGrid的编辑问题只与连接高级)查询从2个表中选择数据的位置。如果仅从一个表中选择数据,则所有列都是TDBAdvGrid可编辑。 –
这与'TDBAdvGrid'无关。通过TDataSet编辑连接表格非常(非常)棘手。并非所有的提供商都支持它,并且AFAIK每个提供商(在您的情况下UniDAC)都以不同的方式实施它。通常在连接表时,“主”表(具有PK)可通过TDataSet进行编辑。我建议你联系UniDAC。 – kobik