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