Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 合并具有不同列名的两个数据表_Vb.net_Datagridview_Datatable - Fatal编程技术网

Vb.net 合并具有不同列名的两个数据表

Vb.net 合并具有不同列名的两个数据表,vb.net,datagridview,datatable,Vb.net,Datagridview,Datatable,我有两个列名称不同的DataTable,因为它们是从两个不同的MySQL表填充的 数据表1有ID,Name,品牌,流派和创建者 数据表2有ID、Name、Brand、Type和EntryCreator 我想合并它们,以便在DataGridView1中显示它们。是的 DataTable2.Columns(3.ColumnName=“流派” DataTable2.列(4).ColumnName=“创建者” 然后 DataTable1.Merge(DataTable2,false,Missing

我有两个列名称不同的DataTable,因为它们是从两个不同的MySQL表填充的

  • 数据表1有
    ID
    Name
    品牌
    流派
    创建者
  • 数据表2有
    ID
    Name
    Brand
    Type
    EntryCreator
我想合并它们,以便在
DataGridView1
中显示它们。是的

DataTable2.Columns(3.ColumnName=“流派”
DataTable2.列(4).ColumnName=“创建者”

然后

DataTable1.Merge(DataTable2,false,MissingSchemaAction.Add)
BindingSource1.DataSource=DataTable1
DataGridView1.Source=BindingSource1


但在显示时,它仅显示来自
DataTable2

的数据。问题可能是因为Merge使用表的PrimaryKey查找要更新的现有记录,如果找不到,则添加新记录。如果是这种情况,则应禁用通过数据适配器填充表时检索的PrimaryKey信息

dataTable1.PrimaryKey = Nothing
dataTable2.PrimaryKey = Nothing
dataTable1.Merge(dataTable2, false, MissingSchemaAction.Add)
....
现在Merge找不到匹配项,因此DataTable2中的每条记录都被添加到dataTable1中。但是,我要提醒您注意此dataTable1上其他操作的性能和正确性。

现在没有PrimaryKey集,这可能是更新和删除行时出现问题的原因(当然,如果您有这些操作)

您是否已将两个表的PrimaryKey值都设置为ID字段?我使用“MySqlAdapter”来填充它们。如果它从我的MariaDB数据库复制PK,我会,否则我不会。(我没有将ID列声明为Primay Key)您可以简单地在MySqlDataAdapter中更改第二个表的查询,使其具有与第一个表相同的列名吗?IE选择。。。。键入作为品牌,EntryCreator作为创建者。。。。。这样,两个表将具有相同的列名称如果设置DataTable2.PrimaryKey=null会发生什么情况;DataTable1.PrimaryKey=null?对不起,我的意思是没有任何内容不是空的。将
.PrimaryKey
设置为2列会有帮助。OP说它们是不同种类的产品。也许ID和类型/类型可以提供唯一性。然后一个记录至少可以被更新或删除。这是可能的,但是我们没有足够的关于数据集和约束的信息