Mam taką zagwozdkę mianowicie mam do pobrania z 30 plików dane i chcę utworzyć z nich jedną tabelę... Nie wiem czy coś lepszego jest ale załóżmy że skorzystam SQL i Union All. Dla przykładu podałem tylko pobieranie z dwóch plików. Dane pobiera mi ładnie z dwóch plików i sortuje.
Ale chciałbym by przy pobieraniu dostawiło mi jedną kolumnę w której byłaby zapisana nazwa pliku z którego pochodzą dane przy każdym wierszu. Czyli Test1.Text lub Test2.txt. I drugą kolumnę gdzie były złączone dane z dwóch pierwszych kolumn. Nie wiem czy to wszystko można wykonać przed dodaniem do datagridView??
Jak myślicie jak to wykonać najlepiej może import przeprowadzić w jakiś inny sposób bardziej wydajny ??
Z góry dziękuje za pomoc...
Oto mój kawałek kodu:
try
{
MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\\\192.168.107.121\\DaneTestowe;Extended Properties=\"Text;HDR=No;;FMT=TabDelimited\"");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Test1.txt] union all select * from [Test2.txt] ORDER BY Data", MyConnection);
MyCommand.TableMappings.Add("Table", "TestTable");
//Wczytanie do DtSet
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
ile_wierszy = (DtSet.Tables[0].Rows.Count);
int ile_kolumn = (DtSet.Tables[0].Columns.Count);
MyConnection.Close();
MessageBox.Show(ile_wierszy+" "+ile_kolumn);
dataGridView1.DataSource = DtSet.Tables[0];
}
catch (Exception ex)
{
//Wyświetlenie informacji o ewentualnym wyjątku
MessageBox.Show(" " + ex.ToString());
Application.Exit();
}
Edit: W sumie mogę dopisać np. 1 as Źródło przy SQL i będzie to samo i rozróżnię skąd pochodzi plik ;) a do złączenia użyć CONCAT() ale może proponujecie jakieś lepsze rozwiązanie ;)
EDIT:2 Ok poradziłem sobie CONCAT() nie istnieje tylko + pozwala na łączenie stringów z kolumn. Konwersja kolumny liczbowej lub innej na string w OLEDB jest możliwa za pomocą poleceń VBA np.: CStr(Inazwa_kolumny_liczbowej)