VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/07/22(Thu) 17:16
投稿者りっとっと
Eメール
URL
タイトルRe: CSVファイルの読み込みについて

ADOなどを使ってSQLで操作したほうが妥当でしょう。
csvFilePath = "c:\"
    csvFileNmae = "test.csv"
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    '1行目をフィールド名として扱う場合は
    'cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & csvFilePath & ";Extended Properties=TEXT"
    '1行目からデータの場合は
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & csvFilePath & ";Extended Properties=""TEXT;HDR=NO;FMT=Delimited;"""
    Set rs = New ADODB.Recordset
    '1行目がフィールド名の場合は
    'rs.Open "select * from " & csvFileName & " where 科目 = '社会'", cn, adOpenStatic, adLockReadOnly
    'Text1.Text = rs.Fields("点数").Value
    '1行目〜データの場合は、フィールド名が左から"F1","F2"〜〜〜となる
    rs.Open "select * from " & csvFileName & " where F1 = '社会'", cn, adOpenStatic, adLockReadOnly
    Text1.Text = rs.Fields("F1").Value
    

あと、ADOを使わずに自力で関数を作る場合は
Private Data() As String
Private Enum FieldIdx
    Kamoku
    Tensuu
End Enum

Private Sub Command1_Click()
    Text1.Text = GetData("社会", Kamoku, Tensuu)
    
End Sub

Private Sub Form_Load()
    OpenCSV
End Sub

Private Sub OpenCSV(csvfilename)
    Dim bin() As String
    Dim strData As String
    
    Open csvfilename For Binary As #1
    ReDim bin(LOF(1) - 1)
    Get #1, , bin
    Close #1
    strData = StrConv(bin, vbUnicode)
    strData = Replace(strData, vbCrLf, vbLf)
    strData = Replace(strData, vbCr, vbLf)
    Data = Split(strData, vbLf)
End Sub
    
Private Function GetData(whereValue1 As String, whereIdx As FieldIdx, selectIdx As FieldIdx) As String
    Dim cnt As Long
    For cnt = 0 To UBound(Data)
        If Split(Data)(whereIdx) = wherevalue Then
            GetData = Split(Data)(selectIdx)
            Exit Function
        End If
    Next
End Function

こんな感じになるかな?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -