2013-10-14 112 views
1

我使用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表数据是尽管将TDBAdvGridGoEditing属性设置为True,但不可编辑。

我从TDBAdvGrid获取所有列,当从单个表中选择数据时可编辑。

+1

什么类的类型是'UniQuery1'?你使用什么组件/技术?后端数据库类型是什么? –

+0

@Marcus,后端数据组件是UniQuery,UniConnection,UniDataSource,SQLiteUniProvider都来自类似于SQLQuery,SQLConnection,DataSource等的通用数据访问组件(UniDAC)函数。我面对的TDBAdvGrid的编辑问题只与连接高级)查询从2个表中选择数据的位置。如果仅从一个表中选择数据,则所有列都是TDBAdvGrid可编辑。 –

+2

这与'TDBAdvGrid'无关。通过TDataSet编辑连接表格非常(非常)棘手。并非所有的提供商都支持它,并且AFAIK每个提供商(在您的情况下UniDAC)都以不同的方式实施它。通常在连接表时,“主”表(具有PK)可通过TDataSet进行编辑。我建议你联系UniDAC。 – kobik

回答

1

它可以通过两种方式

1)把两条表(在我的情况UniTable)组件的形式,并通过使用Master Detail Relation加入他们来完成。

2)如果一个人想用UniQuery做到这一点只有通过UniQueryUpdatingTable属性设置为两个表即TableName1 TableName2用空格隔开。