2018年4月24日火曜日

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


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

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

  1. Private Function Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2. Dim OnOK As Boolean = True
  3. Dim cn As ADODB.Connection
  4. Dim rs As ADODB.Recordset
  5. Dim i As Integer = 0
  6. cn = New ADODB.Connection
  7. rs = New ADODB.Recordset
  8. cn.Provider = "Microsoft.Jet.OLEDB.4.0;"
  9. cn.Properties("Data Source").Value = "\\LANDISK1\share\Test.mdb"
  10. Try
  11. cn.Open()
  12. rs.Open("T_Master", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockReadOnly)
  13. Do Until rs.EOF
  14. Debug.Print (rs.Fields(1).Value)
  15. rs.MoveNext()
  16. Loop
  17. rs.Close()
  18. cn.Close()
  19. Catch ex As Exception
  20. OnOK = False
  21. Debug.Print ("ERROR")
  22. End Try
  23. Return OnOK
  24. 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 件のコメント:

コメントを投稿