Я использую базу данных Microsoft Access (просьба не предлагать мне использовать какую-либо другую базу данных, так как у меня нет такого выбора в этой конкретной ситуации). Поскольку таблица базы данных доступа не может содержать более 255 столбцов, я использую метод вертикальной обработки раздела базы данных, в котором я разделил информацию на 5 разных таблиц. Каждая таблица имеет 100 столбцов, а первый столбец - первичный ключ. (Пожалуйста, не предлагайте мне нормализацию базы данных здесь). Теперь мне нужно прочитать данные из этих пяти таблиц, чтобы я мог экспортировать их в файл Excel.Как объединить несколько DataTables в один DataTable.
В других целях для этого я выполнил следующие шаги, но не смог понять, как объединить несколько таблиц.
Я читаю каждую из этих таблиц и помещаю их в отдельный DataTable в тот же DataSet. (Поскольку я использую базу данных Access, я не могу выбрать все столбцы из всех таблиц)
Я объявившие Отношения на этих пять таблицах
Теперь мне нужно, чтобы объединить эти DataTables в один DataTable. Это означает, что у меня будет всего 496 столбцов. Я исключаю первичные ключи из 4 таблиц, так как это одна и та же информация. Как это сделать?
Dim conn As OleDbConnection = New OleDbConnection Conn ="Connection string stuff goes" Dim FinalDS As New DataSet Dim DataSet1 As New DataSet Dim DataSet2 As New DataSet SQLstr1 = "SELECT * FROM Table1" SQLstr2 = "SELECT * FROM Table2" SQLstr3 = "SELECT * FROM Table3" SQLstr4 = "SELECT * FROM Table4" SQLstr5 = "SELECT * FROM Table5" Dim DA1 As New OleDb.OleDbDataAdapter(SQLstr1, cn) Dim DA2 As New OleDb.OleDbDataAdapter(SQLstr2, cn) Dim DA3 As New OleDb.OleDbDataAdapter(SQLstr3, cn) Dim DA4 As New OleDb.OleDbDataAdapter(SQLstr4, cn) Dim DA5 As New OleDb.OleDbDataAdapter(SQLstr5, cn) Try DA1.Fill(FinalDS, "Tl") DA2.Fill(FinalDS, "T2") DA3.Fill(FinalDS, "T3") DA4.Fill(FinalDS, "T4") DA5.Fill(FinalDS, "T5") Dim DataRelation1 As New DataRelation("R1", _ FinalDS.Tables("T1").Columns("ID"), _ FinalDS.Tables("T2").Columns("ID")) Dim DataRelation2 As New DataRelation("R2", _ FinalDS.Tables("T2").Columns("ID"), _ FinalDS.Tables("T3").Columns("ID")) Dim DataRelation3 As New DataRelation("R3", _ FinalDS.Tables("T3").Columns("ID"), _ FinalDS.Tables("T4").Columns("ID")) Dim DataRelation4 As New DataRelation("R4", _ FinalDS.Tables("T4").Columns("ID"), _ FinalDS.Tables("T5").Columns("ID")) FinalDS.Relations.Add(DataRelation1) FinalDS.Relations.Add(DataRelation2) FinalDS.Relations.Add(DataRelation3) FinalDS.Relations.Add(DataRelation4) FinalDS.Relations.Add(DataRelation5) 'Here I need to combine all these five DataTables into one DataTable 'So that I can use Export it to excel from that one Final DataTable instead of reading data from five different DataTables. 'My Exporting to excel logies goes here which simply supporse to reads data from final DataTable which has 496 columns. Catch ex As Exception MsgBox(ex.Message) End Try
@ HansUp, да, вы правы, мне было любопытно и протестировано с 300 полями. Получить исключение «Слишком много заданных полей» - Удалено мой ответ – Steve