2017-02-01 19 views
0

DataTableから別のものに行をコピーしようとしていますが、データがまだデータベーステーブルに保存されていない行のみコピーします。1つのDataTableから別のDataTableへの行のコピーなし

本のSQL側は、私は私の第二DataTableに発見し、私のグリッドのDataSourceとして設定された行を追加するとき、それは、しかし、列の正しい数を返します、正常に動作している、表示されたデータがありません行セレクタが表示されているため、追加された行があります。

私は間違って何をしていますか、なぜデータがコピーされないのですか?

lftable = New DataTable 

Try 
    For Each dc As DataColumn In lineTable.Columns 
    lftable.Columns.Add() 
    Next 

    Dim ds As New DataSet 

    For Each row As DataRow In lineTable.Rows 
    Dim da As New OleDbDataAdapter("SELECT * FROM [Order_Freight] WHERE [Order_Number] = ? AND [Product_Code] <> ?", con) 
    da.SelectCommand.Parameters.Add("@num", OleDbType.Integer).Value = orderNum 
    da.SelectCommand.Parameters.Add("@prod", OleDbType.VarChar).Value = row.Item("Product_Code") 
    da.Fill(ds) 

    For Each dr As DataRow In ds.Tables(0).Rows 
     Dim nRow = lftable.Rows.Add() 
     nRow.ItemArray = dr.ItemArray() 
    Next 
Next 

ugProducts.DataSource = lfTable 

DataSource

enter image description here

+0

をlftableするlineTableで列のみをコピーする

' For Each dc As DataColumn In lineTable.Columns ' lftable.Columns.Add() > ' lftable.Columns.Add(dc) ' Next 

利用DataTable.Clone()@ AlexB。コンパイルエラー - 式は値を生成しません – David

+0

はい私のコメントはナンセンスでした。私の答えを見てください。 –

答えて

1

それを割り当てた後、グリッドのスクリーンショット列を正しく入力します。

For Each dc As DataColumn In lineTable.Columns 
    lftable.Columns.Add(new DataColumn(dc.ColumnName, dc.DataType)); 
Next 

をあなたはあなたが提供することができますRow.Add関数のオーバーロードを使用することができますItemArray直接:

For Each dr As DataRow In ds.Tables(0).Rows 
     lftable.Rows.Add(dr.ItemArray) 
     'nRow.ItemArray = dr.ItemArray() <-- remove 
Next 
+0

ええと、同じ結果.... – David

+0

あなたは何を得ますか? –

+0

画像と同じもの – David

0

の代わりにこのコード:

lftable = lineTable.Clone(); 

そして

For Each dr As DataRow In ds.Tables(0).Rows 
     lftable.Rows.Add(dr.ItemArray) 
    Next 
+0

これは、 "列 'Product_ID'はすでに別のDataTableに属している"エラーを返します – David

+0

これは動作しません。 @Davidは新しいDataColumnオブジェクトを作成し、これを 'lftable.Columns.Add(new DataColumn(dc.ColumnName、dc.DataType));' –

+0

@AlexBのようなコレクションに追加する必要があります。 "型System.Data.DataColumnの値を 'String'型に変換することはできません" – David

関連する問題