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 件のコメント:
コメントを投稿