Как опустить последнюю запятую при импорте в access DB?

#vb.net #ms-access

#vb.net #ms-access

Вопрос:

Что ж, я успешно закодировал свои неформатированные текстовые данные. Я использовал запятую в качестве разделителя, и если я размещаю это здесь, это может помочь таким студентам, как я.

 Try
    Using Reader As New TextFieldParser(Application.StartupPath amp; "data.txt")
        Reader.TextFieldType = FieldType.FixedWidth
        Reader.SetFieldWidths(20, 20, 1, 2)
        Dim currentRow As String()
        While Not Reader.EndOfData
            Try
                currentRow = Reader.ReadFields()
                Dim oWrite As New System.IO.StreamWriter(Application.StartupPath amp; "FormattedData.txt")
                For Each newString In currentRow
                    oWrite.Write(newString amp; ",")
                Next
                oWrite.WriteLine()
                oWrite.Close()
            Catch ex As Exception

            End Try
        End While
    End Using
Catch ex As Exception

End Try
  

Теперь у меня тоже вопрос: как я могу опустить последнюю запятую из выходных данных при импорте в access database?

Ответ №1:

Самый простой способ сделать это (который я нашел) — записать запятую для последней записи на следующем проходе, но не делайте этого в первом цикле:

 Dim fFirstEntry As Boolean = True

For Each newString In currentRow
  If fFirstEntry Then
     fFirstEntry = False
  Else
    oWrite.Write(",")
  End If
  oWrite.Write(newString)
Next
  

Комментарии:

1. Большое вам спасибо. Ваша помощь в коде подобна ножу в масле. Еще раз спасибо

Ответ №2:

 Dim sb As New StringBuilder()
For Each newString In currentRow
    sb.Append(newString).Append(",")
Next
sb.Length -= 1
oWrite.Write(sb.ToString())
  

Обратите внимание, что StringBuilder более эффективен, чем прямое управление строками. Последнее генерирует много мусора в куче, который позже должен быть собран сборщиком мусора.