EViews データベース オブジェクト (EDO) ライブラリを使用すると、外部アプリケーション内からEViewsデータベースおよびワークファイル内に保持されているデータオブジェクトにアクセスできるようになります。
OpenDb()関数を呼び出してデータベースを開く必要があります。
Dim dbPath = "C:\mydir\mydb.edb"
Dim dbMgr = New EViewsEdx.EViewsDatabaseManager
Dim db = dbMgr.OpenDb(dbPath, EViewsEdx.OpenCreateMode.FileOpen, EViewsEdx.ReadWriteMode.FileReadOnly, "", "", "")
db.Close()
dbMgr.Close()
ReadObject()関数を呼び出すだけです。
Dim attr = Nothing
Dim vals = Nothing
Dim ids = Nothing
db.ReadObject("myseries", "", attr, vals, ids)
attr, vals, idsの3つの引数で返されます。attrには、頻度を表す「freq」、開始日を表す「start」、終了日を表す「end」などの属性名と値のテーブルに加え、ユーザーがオブジェクトに追加したカスタム属性が含まれます。属性名は属性配列の最初の列に、値は2番目の列に表示されます。valsには観測値の配列が含まれます。ほとんどの場合、これは1次元配列ですが、行列の場合は2次元配列になります。配列は、オブジェクトのタイプに応じて、数値、文字列、または日付値で構成されます。
WriteObject()関数を使用します。WriteObject関数は、書き込むオブジェクトの種類に応じて、さまざまな入力形式をサポートしています。時系列を記述するには、明示的に頻度と開始日の属性を指定します。
Dim attr As String = "freq=Q, start=2010Q1"
Dim vals = New Double(0 To 3) {1.0, 2.0, 3.0, 4.0}
db.WriteObject("myseries", attr, vals, Nothing, EViewsEdx.WriteType.WriteOverwrite)
Dim vals = New Double(0 To 3) {1.0, 2.0, 3.0, 4.0}
Dim ids = New Date(0 To 3) {#3/31/2010#, #6/30/2010#, #9/30/2010#, #12/31/2010#}
db.WriteObject("myseries", Nothing, vals, ids, EViewsEdx.WriteType.WriteOverwrite)
Dim attr As String = "type=matrix"
Dim vals = New Double(0 To 3, 0 To 1) {{1, 2}, {3, 4}, {5, 6}, {7, 8}} db.WriteObject("mymatrix", attr, vals, Nothing, EViewsEdx.WriteType.WriteOverwrite)
Dim attr As String = "type=matrix, rows=4, cols=2"
Dim vals = New Double(0 To 7) {1, 2, 3, 4, 5, 6, 7, 8} db.WriteObject("newname", attr, vals, Nothing, EViewsEdx.WriteType.WriteOverwrite)
Dim attr As String = "type=svector"
Dim vals = New String(0 To 4) {"here", "are", "some", "string", "values"} db.WriteObject("newname", attr, vals, Nothing, EViewsEdx.WriteType.WriteOverwrite)
db.WriteObject("myscalar", "type=scalar", 100.0, Nothing, EViewsEdx.WriteType.WriteOverwrite)
db.WriteObject("mystring", "type=string", "hello EViews!", Nothing, EViewsEdx.WriteType.WriteOverwrite)
db.SearchByAttributes("name matches abc*", "name, type")
Dim name As String = Nothing
Dim attr As Object = Nothing
While (db.SearchNext(name, attr))
End While
“freq=m and start<1970”
Dim errorCode As EViewsEdx.ErrorCode = 0
Try
db.CopyObject(OldName, NewName, False)
Catch errorInfo As COMException
errorCode = errorInfo.ErrorCode
If (errorCode <> EViewsEdx.ErrorCode.RECORD_NAME_IN_USE) Then
ProcessComError(errorInfo)
End If
Exit Try
End Try
If (errorCode = EViewsEdx.ErrorCode.RECORD_NAME_IN_USE) Then
If (MsgBox("Object " & NewName & " already exists. Overwrite the existing object?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok) Then
Try
db.CopyObject(OldName, NewName, True)
Catch errorInfo As COMException
ProcessComError(errorInfo)
Exit Try
End Try
End If
End If