2012-04-16 11 views
0

次のコードは、インポートされた行をOracleでテーブルを更新することになっています。しかし、それはCSVファイルからインポートされた最初の列だけでテーブルのすべての列を更新するようです。私は操作/変更する必要がある "ReadFields"プロパティを理解しています。私には、その緊急の提案を私に提供してください。ファイルのインポートに関するヒント

MsgBox("Saving...") 

    Dim parser As New FileIO.TextFieldParser("C:\Documents and Settings\test\Desktop\test.csv") 

    parser.Delimiters = New String() {","} ' fields are separated by comma 
    parser.HasFieldsEnclosedInQuotes = True 
    parser.TrimWhiteSpace = True 

    Dim i As Integer 

    For i = 0 To DataGridView1.ColumnCount - 1 


     **Dim CurrentField = parser.ReadFields()** 



     Dim sConnectionString As String = "Data Source=TEST;User ID=TEST;Password=TEST;" 

     Dim strSql As String = "INSERT INTO SHOP_MATERIAL_ALLOCT(ORDER_NO, LINE_ITEM_NO, CONTRACT, PART_NO, QTY_REQUIRED, QTY_PER_ASSEMBLY) VALUES (:ORDER_NO,:LINE_ITEM_NO,:CONTRACT,:PART_NO,:QTY_REQUIRED,:QTY_PER_ASSEMBLY)" 




     Using conn As New OracleClient.OracleConnection(sConnectionString) 
      Using cmd As New OracleClient.OracleCommand() 


       Dim adapter As New OracleDataAdapter 
       conn.Open() 
       cmd.Connection = conn 
       cmd.CommandText = strSql 
       cmd.Parameters.AddWithValue("ORDER_NO", CurrentField(i)) 
       cmd.Parameters.AddWithValue("LINE_ITEM_NO", CurrentField(i)) 
       cmd.Parameters.AddWithValue("CONTRACT", CurrentField(i)) 
       cmd.Parameters.AddWithValue("PART_NO", CurrentField(i)) 
       cmd.Parameters.AddWithValue("QTY_REQUIRED", CurrentField(i)) 
       cmd.Parameters.AddWithValue("QTY_PER_ASSEMBLY", CurrentField(i)) 



       cmd.CommandText = strSql 
       adapter.InsertCommand = New OracleCommand(strSql, conn) 
       adapter.UpdateCommand = cmd 
       'adapter.Update(table) 
       cmd.ExecuteNonQuery() 
       cmd.Connection.Close() 

       DataGridView1.DataSource = Nothing 
      End Using 
     End Using 
    Next 

End Sub 

答えて

2

FileIO.TextFieldParser.ReadFieldsメソッドは、入力文字列のすべてのフィールドを解析し、配列に格納します。上記の場合、返される配列の個々の値を繰り返し処理する必要がありますが、常にCurrentField(i)を使用しています。上記の関連する行を次のように置き換えてみてください:

cmd.Parameters.AddWithValue("ORDER_NO", CurrentField(0)) 
cmd.Parameters.AddWithValue("LINE_ITEM_NO", CurrentField(1)) 
cmd.Parameters.AddWithValue("CONTRACT", CurrentField(2)) 
cmd.Parameters.AddWithValue("PART_NO", CurrentField(3)) 
cmd.Parameters.AddWithValue("QTY_REQUIRED", CurrentField(4)) 
cmd.Parameters.AddWithValue("QTY_PER_ASSEMBLY", CurrentField(5)) 

共有して楽しんでください。

+0

ありがとうございましたBobさん、私の問題を解決しました!あなたはロック! – user1305070

関連する問題