2017-02-08 3 views
1
**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» в одну таблицу. ниже мой код. Мне нужна помощь в инструкции цикла.Петля через текстовый файл «Fixed Length» с использованием textfieldparser vb.net

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 
+0

Я думаю, что вам нужно 'Если fields6 (0) .trim() = "1502" ...' вместо 'Если Не (IsNothing (fields6 (0) = "1502")) ... '. –

+0

Какая у вас проблема? Посмотрите на [ask] - вы увидите, что в идеале вам нужно добавить описание ожидаемого поведения и фактического поведения - приветствия. –

ответ

0

Я нашел решение для своего вопроса. Я использовал streamreader вместо textfieldparser. Так что теперь я получаю все значения для линий из текстового файла

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 
Смежные вопросы