Public Class SetDBtoTable
'----------
'Variable
'----------
Private _Provider As String
Private _DataSource As String
Private _ConnectionString As String
’(PropertyのGet/Set省略)
'----------
'Constructor
'----------
Public Sub New()
Debug.Print("Constructor:" & TypeName(Me))
_Provider = "Microsoft.Jet.OLEDB.4.0;"
End Sub
'----------
'Destructor
'----------
Private Sub Class_Terminate()
Debug.Print("Destructor:" & TypeName(Me))
End Sub
'----------
'Method
'----------
Public Function GetTable() As Boolean
Dim OnOK As Boolean = True
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
cn = New ADODB.Connection
rs = New ADODB.Recordset
cn.Provider = _Provider
cn.Properties("Data Source").Value = _DataSource
Try
cn.Open()
rs.Open(_ConnectionString, cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockReadOnly)
Debug.Print("RecordCount:" & rs.RecordCount)
Debug.Print("column:" & rs.Fields.Count)
rs.Close()
cn.Close()
Catch ex As Exception
OnOK = False
End Try
Return OnOK
End Function
End Class
呼び出し側
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim DataTable As SetDBtoTable
DataTable = New SetDBtoTable
DataTable.DataSource = "\\LANDISK1\share\Test.mdb"
DataTable.ConnectionString = "T_Master"
Debug.Print(DataTable.GetTable())
End Sub
無事、レコード件数とカラム数を取得できました。
でも、RecordCountが、読み込んだ数を返す~なんてコト書いてる人がいて、ちょっと不安。
VBAだけの話ならば良いのだけれど。一応MSDNではコレでOKぽい。
ちなみに内容を参照したければ、してみるよ~(2)のように、Untileループしてあげてください。
しかーし、必要なPropertyが設定されていないと実行時にエラーになる。あたり前だけど。
ソレを検知、表示するために、コンストラクタで、Property変数に””を入れて、
Methodで、if _Property <> "" とかで引っ掛けようとしたんだけど、どーもうまくいかない。
Propertyが空だったら~って判定は出来ないモノか。
サブルーチンにして、引数固定にすりゃ、コンパイルの時点で怒られるのに…
ちなみにコンストラクタ、デストラクタで、自分自身を表示…TypeName(Me)…しといた。
できれば実体の変数も表示させたいけど…わかんね( ゚-゚)~゚(ぉぃ
<<前 次>>
0 件のコメント:
コメントを投稿