- 日時: 2011/04/05 11:29
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][データベース][] * * キーワード:CSVファイル,,,,, * ***********************************************************************************
----------------------------------------------------------------------------- 投稿時間:2002/11/06(Wed) 23:02 No.1283 投稿者名:魔界の仮面弁士 タイトル:ADOを使うなら ----------------------------------------------------------------------------- ADOを使って、そのCSVファイルをデータベースのように扱うこともできます。
================================= Option Explicit
Private Sub Command1_Click() 'これは、実験用のcsvファイルを作成するだけです。
Dim FNo As Integer Dim Dt As String Dim I As Long Randomize FNo = FreeFile() Open "C:\USER\TEST.CSV" For Output As #FNo Write #FNo, "日付", "値" For I = 1 To 5000 Dt = Format(DateSerial(2002, 1, I), "yyyy-mm-dd") Write #FNo, Dt, Int(Rnd() * 1000) Next Close #FNo End Sub
Private Sub Command2_Click() 'こちらが実際の処理。データシェイプを利用して算出する例です。 Dim Cn As ADODB.Connection Dim rsCSV As ADODB.Recordset Dim rsCalc As ADODB.Recordset Dim SQL As String
Set Cn = New ADODB.Connection Cn.Provider = "MSDataShape" Cn.Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0" Cn.Open "Data Source=C:\USER\;" _ & "Extended Properties=""text;HDR=YES;FMT=Delimited"""
'日付の降順に並べて、そのうちの上位5件を取得します。 SQL = "SELECT TOP 5" _ & " 日付, 値" _ & " FROM `TEST.CSV`" _ & " ORDER BY 日付 DESC" Set rsCSV = New ADODB.Recordset rsCSV.Open "SHAPE {" & SQL & "} AS rsCSV", Cn
'別途作成した、rsCSVというRecordsetをリシェイプします。 SQL = "SHAPE rsCSV COMPUTE" _ & " rsCSV," _ & " AVG(rsCSV.値) AS 平均," _ & " MAX(rsCSV.値) AS 最大" Set rsCalc = Cn.Execute(SQL)
'結果を表示します。 Debug.Print "直近5日間の平均は、"; rsCalc.Fields("平均").Value; "です。" Debug.Print "直近5日間の最大は、"; rsCalc.Fields("最大").Value; "です。"
rsCalc.Close rsCSV.Close Cn.Close Set rsCalc = Nothing Set rsCSV = Nothing Set Cn = Nothing End Sub
|