この問題については (このサイトや他のサイトに) たくさんの投稿がありますが、私が読んだすべての解決策にはSQL
クエリが含まれており、そのような解決策を探しているわけではありません。
3 つのDataTables
( vb.NET
) があり、それらを最初の列 ( を含む) で結合したいと考えていますTimeStamp
。
たとえば、とDataTables
呼ばれる3 つがあり、次のように満たされているとします。TAB01
TAB02
TAB03
TAB01 TAB02 TAB03
TimeStamp Value1 | TimeStamp Value2 | TimeStamp Value3
2019/10/09 09:00:00 0.2334 | 2019/10/09 09:00:00 1.1212 | 2019/10/09 09:00:00 2.1221
2019/10/09 09:01:00 0.1111 | 2019/10/09 09:01:00 4.1211 | 2019/10/09 09:01:00 3.1766
2019/10/09 09:02:00 2.6566 | 2019/10/09 09:02:00 3.2122 | 2019/10/09 09:02:00 0.1322
DataTable
次のように 4 番目(たとえば)を埋めるにはどうすればよいTAB04
ですか?
TAB04
| TimeStamp Value1 Value2 Value3 |
| 2019/10/09 09:00:00 0.2334 1.1212 2.1221 |
| 2019/10/09 09:01:00 0.1111 4.1211 3.1766 |
| 2019/10/09 09:02:00 2.6566 3.2122 0.1322 |
問題は非常に単純に思えます (私の最初の試みは、コレクションを使用して 3 つのテーブルすべてからデータを保存し、次に を照合しTimeStamps
て 4 番目のテーブルを埋めることでした)。TimeStamps
ただし、 3 つのテーブルの が互いに一致することを保証できないため、コレクション手法は最悪の選択肢のように見えます。
この質問にアプローチする別の方法はありますか?
アップデート:
ここで、 a を使用して2 つの異なるテーブルの列の間にaDataSet
を作成するこのアプローチを見つけました。DataRelation
'Create DataSet:
Dim ds As DataSet = New DataSet
'Add tables to DataSet:
ds.Tables.Add(TAB01)
ds.Tables.Add(TAB02)
'Create DataRelation:
Dim dr As DataRelation = New DataRelation("dr", TAB01.Columns(0), TAB02.Columns(0))
'Add DataRelation to DataSet:
ds.Relations.Add(dr)
これまでのところとても良いです(上記のコードの構文を完全に理解しています。ただし、リンクに記載されているように、コマンド:
DGV1.DataSource = ds
DataGridView
(named DGV1
) を table として自動的に埋める必要がありますTAB04
。このコードには何も入力されていないためDGV1
、何かが不足しています。これは有効な方法ですか?もしそうなら、私は何が欠けていますか? なぜDGV1
はまだ空なのですか?