2018年4月24日火曜日

Accessアクセス from VB ~Class化してみるよ~(2)


天の声が囁いた。
~ADODBを使いなさい~
なんですと!?

そんなわけでふつーのモジュールで慌てて書き換えてみた。

Private Function Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  Dim OnOK As Boolean = True
  Dim cn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim i As Integer = 0
  cn = New ADODB.Connection
  rs = New ADODB.Recordset
  cn.Provider = "Microsoft.Jet.OLEDB.4.0;"
  cn.Properties("Data Source").Value = "\\LANDISK1\share\Test.mdb"
  Try
      cn.Open()
      rs.Open("T_Master", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockReadOnly)
      Do Until rs.EOF
          Debug.Print (rs.Fields(1).Value)
          rs.MoveNext()
      Loop
      rs.Close()
      cn.Close()
  Catch ex As Exception
      OnOK = False
      Debug.Print ("ERROR")
  End Try
  Return OnOK
End Function
こっれがさーー、例が無いのよ…
VB6時代のんとか、dao使った例とかはゴロゴロしてるんだけど、
Setステートメントとか、ボク環境の…コレ、VB.net?はSetとかLet廃止~とか…
丸写しで動くモンが全く無くて、結局MSDN読み解いた…

で、トドメは、Recordsetの内容参照方法。
なんか普通に、rs.Fields(0)とか、rs.Fields("名前")とか、rs!名前とかで参照できてるんだよね。Exampleは。
でも何故かできない…で、.netへの変更点で、なんかVB6までは省略出来たPropertyとかを、.netでは、明示的にやんないとダメ…とかなんとか書いてあったの思い出して…

後ろに.valueつけたら動いた(*゚-゚)

まぁおかげで、スペースが入ってるProperty名への文字列設定方法とかみっけたからいっか。
ちなみに、フィールド名で参照するより、Index…数値で参照したほうがDirectなので速いそうです。


<<前  次>>

0 件のコメント:

コメントを投稿