使用textfieldparser vb.net循环文本文件“Fixed Length”

时间:2017-02-08 10:12:35

标签: vb.net textfieldparser

**below is Textfile**
1010 IBFZEBMSKU28NOV16APTKS42490814
1015 APT55KUAPTKSS28NOV1628NOV1615.05.0016.05.00IRAPTMB254974DKUKU2297/72292700631550063155003                          KUWAIT AIRWAYS
101F 01ALOTAIBI/FAHADMR
1500 CC            01CCVI4439  AIBM6
1502 CC            01CCM  SFP    VI4439950000067487
1502 CC            01CEM  SFP    0418
1502 CC            01CDO  SFP    000
1502 CC            01PVO  SCC    KWD12
1510 LKR9800
1800 LKR9800
5030 31OCT16SYSVNKU0816LEID-0EEE99
7105 MKUWAIT AIRWAYS
1010 BWNALJMSKU28NOV16APTKS42490814

每行指的是sql中的单独表。 我需要将每一行导入表格。 我在将“1502”行导入到一个表时遇到了麻烦。下面是我的代码。我在循环语句中需要帮助。

 IFReader.SetFieldWidths(5, 14, 2, 6, 6, 0)
     Dim fields6 As String() = IFReader.ReadFields()
        For Each f6 In fields6
           If Not (IsNothing(fields6(0) = "1502")) Then
              cmd6.Parameters("@RecordType").Value = fields6(0)
                        cmd6.Parameters("@Primary_Form_Payment").Value = fields6(1)
              cmd6.Parameters("@FOP_SubItem_No").Value = fields6(2)
              cmd6.Parameters("@FOP_SubItem_Code").Value = fields6(3)
              cmd6.Parameters("@FOP_SubItem_Code1").Value = fields6(4)
              cmd6.Parameters("@UnknownText").Value = fields6(5)
              cmd6.ExecuteNonQuery()
            End If
            Next

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。我使用 streamreader 而不是textfieldparser。所以现在我从文本文件中获得 1502 的所有值

 Dim fs As New FileStream(txtPath, FileMode.Open, FileAccess.Read)
            Dim sr As New StreamReader(fs)
            sr.BaseStream.Seek(0, SeekOrigin.Begin)

            While sr.Peek() > -1
                str = sr.ReadLine
                Dim splitOut As String() = str.Split(" ")
  If splitOut(0) = "1502" Then
                        ppay = ""
                        fopno1 = ""
                        fopcode = ""
                        fopcode1 = ""
                        untxt = ""

                        ppay = str.Substring(5, 14)
                        fopno1 = str.Substring(19, 2)
                        fopcode = str.Substring(21, 6)
                        fopcode1 = str.Substring(27, 6)
                        untxt = str.Substring(33, str.Length - 33)

                        Dim sql6 As String = "INSERT INTO MCO_1502 VALUES(@Primary_Form_Payment,@FOP_SubItem_No,@FOP_SubItem_Code,@FOP_SubItem_Code1,@UnknownText)"
                        Dim cmd6 As New SqlCommand(sql6, con)


                        cmd6.Parameters.AddWithValue("@Primary_Form_Payment", ppay)
                        cmd6.Parameters.AddWithValue("@FOP_SubItem_No", fopno1)
                        cmd6.Parameters.AddWithValue("@FOP_SubItem_Code", fopcode)
                        cmd6.Parameters.AddWithValue("@FOP_SubItem_Code1", fopcode1)
                        cmd6.Parameters.AddWithValue("@UnknownText", untxt)
                        cmd6.ExecuteNonQuery()
End If
End While