2017-09-05 18 views
0

VBAスクリプトがあり、テーブル内の個別のLocationIDに基づいてフォームを作成する必要があります。したがって、LocationID = 1の行ごとに、フォームのタイトル「formLocation1」で表されるその場所の名前を持つフォームを作成します。次に、各LocationID = 2について、タイトル、 "formLocation2"などにその名前の別のフォームを作成します.VBAスクリプトでDoCmd.OpenFormを使用してこれを行う最善の方法は何ですか?MS Access VBAの個別フィールド値のフォームを作成します

答えて

0

このようなことを試すことができます。

レコードセットをループし、CreateForm()メソッドを使用して、それぞれLocationIDのフォームを作成します。フォームの.Captionプロパティを "formLocation(LocationID)"に設定できます。

(テーブルの名前にTを変更)。

Public Sub CreateForms() 
    On Error GoTo ex 

    Dim rs As DAO.Recordset 
    Set rs = CurrentDb().OpenRecordset("SELECT DISTINCT LocationID FROM T ORDER BY LocationID;", dbOpenSnapshot) 

    With rs 
     If .EOF Then GoTo out 
     .MoveLast 
     .MoveFirst 
    End With 

    Dim frm As Access.Form, i As Integer 
    For i = 1 To rs.RecordCount 

     Set frm = CreateForm() 
      frm.Caption = "formLocation" & rs![LocationID] 

     DoCmd.Close acForm, frm.Name, acSaveYes 
     Set frm = Nothing 

     rs.MoveNext 
    Next i 

out: 
    On Error Resume Next 
    rs.Close 
    Set rs = Nothing 
    On Error GoTo 0 
    Exit Sub 

ex: 
    MsgBox Err.Description, vbCritical 
    Resume out 
End Sub 
関連する問題