Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
データベース読込
投稿日時: 22/01/20 17:33:31
投稿者: かつのり2

いつもお世話になっております。
データベース読込サンプルVBAを作成しているが・・質問お願いします
 
下記の[データベースファイル]を読込[VBAコード]書いたのですが・・
1、[MsgBox rs.Fields("P_No").Value]の様に直接だと表示出来るが、
  [b(n) = Right(rs.Fields("P_No").Value & "", 3)]の様に変数に移
  した後[MsgBox b(n)]の様に実行しても表示されない??
それと
2、20行(20レコード?)だけなのにずっとループして止まらない
   ので、[Ctrl]+[Pause]で強制終了させました??
 
上記は正常な動作なのでしょうか?
お分かりの方が下りましたら教えて下さい
-----------------------------------------------------------------------------------
データベースファイル:Test.mdb
      テーブル:[item]
      フィールド:[P_No]、[Name]、[Remark]の3つ
      ※レコードとして20行(20レコード?)くらい・・
      ※[P_No]は、12-001、12-002、13-055、14-001、・・の様な内容
-----------------------------------------------------------------------------------
VBAコード(フォーム1にComboBox1〜3を貼ってあります)
 
Option Explicit
Dim dbeng As Object
Dim db As Object
Dim rs As Object
Dim strSQL As String
Dim MyPath As String
Dim b(250) As String '250は適当です
Dim g(250) As String '250は適当です
Dim n As Integer
 
Private Sub Pro_R2()
    ComboBox2.Clear
    ComboBox3.Clear
    Erase b, g
    n = 0
    MyPath = "D:\ABCDE\Test.mdb"
    Set dbeng = CreateObject("DAO.DBEngine.120")
    Set db = dbeng.Workspaces(0).OpenDatabase(MyPath)
    strSQL = "SELECT * FROM [item] ORDER BY [P_No] ASC"
    Set rs = db.OpenRecordset(strSQL)
    Do Until rs.EOF
        If Val(Left(rs.Fields("P_No").Value & "", 2)) = ComboBox1.Text Then
            b(n) = Right(rs.Fields("P_No").Value & "", 3)
            g(n) = rs.Fields("Name").Value & ""
            n = n + 1
        End If
        MsgBox b(n) '表示しない??
        MsgBox Right(rs.Fields("Prj_No").Value & "", 3) '表示する
        rs.MoveNext
    Loop
    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing
    Set dbeng = Nothing
End Sub
-----------------------------------------------------------------------------------
 

回答
投稿日時: 22/01/20 17:49:28
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
Do Until rs.EOF
        MsgBox b(n) '表示しない??
        MsgBox Right(rs.Fields("Prj_No").Value & "", 3) '表示する

の2行を
 n = n + 1
の前に移動してみてください。

投稿日時: 22/01/20 18:03:05
投稿者: かつのり2

解決しました
頭が一杯一杯で考え着かなかったです
ホントに助かりました
ありごとうございました