• 締切済み

カンマ区切りの文字列をDatasetに登録するには?【VB.NET2005】

テキストファイルを読込んでカンマ区切りでDatasetに登録する際は 以下の方法で行っていました。 Dim tfp As New TextFieldParser(fileName, System.Text.Encoding.GetEncoding("Shift_JIS")) Dim dt As New DataTable Dim dr As DataRow tfp.TextFieldType = FieldType.Delimited tfp.SetDelimiters(",") While Not tfp.EndOfData dr = dt.NewRow dr.ItemArray = tfp.ReadFields dt.Rows.Add(dr) End While tfp.Close() ds.Tables.Add(dt) これをファイルではなくDim str As String = "123,aaa" という文字列に対して行いたいのですが、 上記のReadFieldsの用に使える物は無いでしょうか?

みんなの回答

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.3

もとがCSVファイルのようですので、OleDBによるアクセスも可能です。 DGV.DataSource = Nothing Try Dim oConn As New OleDbConnection() Dim oCommand As New OleDbCommand() Dim oDataSet As New DataSet() Dim oDataAdapter As New OleDbDataAdapter() Dim filePath As String = Nothing Dim fileNames As String = Nothing Dim SQL As String = Nothing filePath = GetDirectoryName(fileName) fileNames = GetFileName(fileName) 'DB接続文字列の設定 'CSVファイルにタイトル行を含まない場合はHDR=NOにしてください oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + filePath + "\;" + _ "Extended Properties=""Text;HDR=YES;FMT=Delimited""" oCommand.Connection = oConn SQL = "SELECT * FROM " & fileNames oCommand.CommandText = SQL oConn.Open() 'データを取得する oDataAdapter.SelectCommand = oCommand oDataSet.Clear() oDataAdapter.Fill(oDataSet) DGV.DataSource = oDataSet.Tables(oDataSet.Tables(0).ToString) oConn.Close() Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.Message, "例外発生") End Try

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

1点訂正 dim enc as System.Text.Encoding.Defualt では無く dim enc as System.Text.Encoding = System.Text.Encoding.Defualt でした m(__)m

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

元の文字列をEncodingクラスのGetBytesでByte配列に変換して それをMemoryStreamを使ってTextFieldParserオブジェクト構築すればいいのでは dim str as String = "123,aaaa" dim buf as byte() dim enc as System.Text.Encoding.Defualt buf = enc.GetBytes( str ) dim MemStream as new MemoryStream( buf, False ) dim tfp as new TextFieldPerser( MemStream, enc ) といった具合で ...

関連するQ&A

専門家に質問してみよう