-
September 5th, 2012, 02:15 PM
#1
[RESOLVED] Copy from datatable to new datatable
Hi all,
Hoping for some pointers / advice.........
I have a winforms application that imports data from a flat file into a datatable.
I need to select certain columns from this import & use there to populate a second datatable, as well as a dataview grid.
The following is the code that I am using to import the data :-
Code:
// Select & open file
private void button1_Click_1(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "Select a File to import";
fdlg.InitialDirectory = @"c:\";
fdlg.FileName = txtFileName.Text;
fdlg.Filter = "Comma Seperated Values Files|*.csv";
fdlg.FilterIndex = 1;
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
txtFileName.Text = fdlg.FileName;
ImportRaw();
Application.DoEvents();
}
}
// Import file into DataTable
private void ImportRaw()
{
if (txtFileName.Text.Trim() != string.Empty)
{
try
{
// Populate the DataTable
DataTable dtRaw = GetDataTableRaw(txtFileName.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
public static DataTable GetDataTableRaw(string strFileName)
{
ADODB.Connection oConn = new ADODB.Connection();
oConn.Open("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\";", "", "", 0);
string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName) + "]";
ADODB.Recordset rs = new ADODB.Recordset();
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter();
DataTable dtRaw = new DataTable();
rs.Open(strQuery, "Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\";",
ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);
adapter.Fill(dtRaw, rs);
return dtRaw;
}
I've tried various things to select the columns I want into a new datatable & linked to a datagridview - all with no success unfortunately. I'll be using a cmd button to launch the copy.
eg:- DataTable dtSelectedColumns = dtRaw.DefaultView.ToTable(false, dgcolumn1, dgcolumn2, dgcolumn3, dgcolumn4);
Any suggestions would be great.
Thanks.
-
September 6th, 2012, 01:23 AM
#2
Re: [RESOLVED] Copy from datatable to new datatable
I see you have marked your thread resolved. Mind sharing your answer??
-
September 6th, 2012, 02:39 PM
#3
Re: [RESOLVED] Copy from datatable to new datatable
I had part of the code in the incorrect scope, so it was localised to a command button & not being shareable.
I then used this code to copy the selected columns to the second datatable :-
DataTable2= DataTable1.DefaultView.ToTable(false, column1, column2, column3, column4);
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|