2011-11-11 3 views
0

私はMicrosoft.Jet.Oledb Provider 4.0とVb.netを使って、テキストファイルからレコードデータベースへのレコードインポートプログラムを見つけようとしています。そして、それは簡単だと思うが、私の問題は異なっている。テキストファイルでは、レコードは区切られません。私は初心者ですので、私にとっては難しすぎました。この問題を解決するためのヒントを与えてください。アクセス・データベースのテキスト・ファイル(区切られていない)からレコードをインポートするにはどうすればよいですか?

Format of the text file: 
Field Name & Size 
Date[Date,ShortDate]FirstName[20]LastName[20]Sex[1]Age[2] 
Records 
02062011john……………..little………………M15 
… 
… 
… 

私は、ストリームリーダーを使用してテキストファイルを読みながら、プログラムの区切り文字を入れて、後で簡単にDBでファイル全体をインポートすることができます。任意の提案

答えて

0

空白で区切られていませんか?たとえば、最初の文字から100番目の文字がファーストネームまでのようなテキストファイルに関する制約はありますか?はいの場合は、これらの制約に基づいてテキストを分割することができます。

+0

私はすでにフィールドサイズを指定しています。そのような ファーストネーム(サイズ20の文字)、ラストネーム(サイズ20の文字)、 セックス(サイズ1の文字)、年齢(サイズ2の文字) – MOB

0

1つのオプションは、TextFieldParserクラスを使用することです:

http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx

Imports Microsoft.VisualBasic.FileIO 

Private Sub ReadFixedWidthText() 
    Dim theString As String = "John    Little    M15" + vbCrLf + "Jane    Doe     F30" 

    Using rdr As New StringReader(theString) 
     Using parser As New TextFieldParser(rdr) 
      parser.TextFieldType = FieldType.FixedWidth 
      parser.FieldWidths = New Integer() {20, 20, 1, 2} 
      parser.TrimWhiteSpace = True 

      While Not parser.EndOfData 
       Dim fields() As String = parser.ReadFields() 

       For i As Integer = 0 To fields.Length - 1 
        Console.WriteLine("Field {0}: {1}", i, fields(i)) 
       Next 
      End While 
     End Using 
    End Using 
End Sub 

私はこの例ではにStringReaderを使用していますが、同じように簡単のStreamReaderを使用するか、単にTextFieldParserでファイル名を使用することができますコンストラクタ。

または、StreamReaderとString.Substringメソッドの組み合わせを使用して、個々のフィールドを取得することができます。

+0

ありがとう、ありがとう。あなたのコードは、私にとって暗闇の中の光のようです。私が完了したら私はここに私のコードを掲載します。何かが間違っていたら私は再び助けを得るでしょう。 – MOB

関連する問題