2013-10-13 6 views
0

У меня есть файл журнала в формате txt. Я хочу импортировать его в базу данных доступа, первое, что я сделал в качестве теста, - это импортировать его в datagrid, чтобы проверить, возможно ли это код, который я использовал это ниже:Анализ из файла журнала

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Using Reader As New Microsoft.VisualBasic.FileIO. 
TextFieldParser(TextBox1.Text) 
     Reader.TextFieldType = 
        Microsoft.VisualBasic.FileIO.FieldType.FixedWidth 
     Reader.SetFieldWidths(8, 8) 
     Dim currentRow As String() 
     While Not Reader.EndOfData 
      Try 
       dg1.Rows.Clear() 
       currentRow = Reader.ReadFields() 
       Dim currentField As String 
       For Each currentField In currentRow 
        dg1.Rows.Add(currentField) 
       Next 
      Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException 
       MsgBox("Line " & ex.Message & 
       "is not valid and will be skipped.") 
      End Try 
     End While 
    End Using 
End Sub 

файл журнала происходит некорректно:

6/17/13 9:39AM 103 01 < DISA incoming >71857359   00:01'13" .... 0 
6/17/13 9:37AM 102 04 < DISA incoming >71470674   00:03'18" .... 0 
6/17/13 9:42AM 102 02 < DISA incoming >71759940   00:00'29" .... 0 
6/17/13 9:41AM 103 03 < DISA incoming >71470674   00:01'59" .... 0 
6/17/13 9:42AM 102 04 < DISA incoming >76441362   00:00'24" .... 0 
6/17/13 9:43AM 103 02 < DISA incoming >70247389   00:01'35" .... 0 

Я пытался, по крайней мере импорта первые два поля, которые являются дата и время каждого в рамках соответствующей столбец, но он не работает

Может ли кто-нибудь помочь мне разобраться с этим входом в базу данных? Plz

+0

вы можете оставить несколько строки входного файла? это материал в конце просто лишний? что точно не так с первыми 2 - они должны быть единым временем? SInce мы не можем видеть raw и не знаем схему db, которую мы оставляем догадываться. – Plutonix

+0

Я полагаю, что очистка строк данных в каждом цикле на самом деле не то, что вы хотите, переместите строки. Очистите вне цикла while. – Steve

+0

. Хорошо, проблема в dg1.Rows.Add (currentField), она занимает только первую часть, которая дата и во 2-й строке она добавляет время, а 3-я - вторая дата из 2-й строки журнала, но мне нужно добавить строку точно так же, как и журнал, поэтому сначала нужно перенести дату, а затем время и добавьте их в ту же строку – Lebnani

ответ

1

Я полагаю, что очистка строк данных в каждом цикле не совсем то, что вы хотите. Вы должны переместить

dg1.Rows.Clear() 

до цикла. Кроме того, но это сложно рассчитать из опубликованного кода, я думаю, что ваш Reader.SetFieldWidths(8, 8) ошибочен. Попробуйте с

Reader.SetFieldWidths(8, 9, -1) 

TextFieldParser.SetFieldWidths

Затем в цикле вашей потребности

' Add a new row 
Dim curRowIndex = dg1.Rows.Add() 
' Set the first cell of the new row.... 
dg1.Rows(curRowIndex).Cells(0).Value = currentRow(0) 
dg1.Rows(curRowIndex).Cells(1).Value = currentRow(1) 
dg1.Rows(curRowIndex).Cells(2).Value = currentRow(2) ' the remainder of the line 
+0

Steve, моя проблема в dg1.rows.add (currentfield) Мне нужно иметь как currentfield (0), которая является частью даты, и currendfield (1), которая является вторым столбцом времени, поэтому он будет выглядеть так: dg1.rows.add (currentField (0), currentField (1) и т. д.), как я могу это сделать? – Lebnani

+0

Да, я обновил ответ, обновил – Steve

+0

Я думаю, что он пытается использовать 'dg1.Rows (curRowIndex) .Cells (0) .Value' - новое значение datetime, состоящее из' currentRow (0) 'и' currentRow (1) '(??) – Plutonix

Смежные вопросы