2017-09-05 3 views
0

J'ai un script VBA et j'ai besoin de créer des formulaires basés sur des LocationID distincts dans une table. Donc, pour chaque ligne avec LocationID = 1, créez un formulaire avec le nom de cet emplacement représenté dans le titre du formulaire, "formLocation1". Ensuite, pour chaque LocationID = 2, créez un autre formulaire avec le nom de celui-là dans le titre, "formLocation2", etc. Quelle est la meilleure façon de le faire en utilisant DoCmd.OpenForm "" dans le script VBA?MS Access crée des formulaires pour une valeur de champ distincte dans VBA

Répondre

0

Vous pouvez essayer quelque chose comme ça.

Parcourez un jeu d'enregistrements et créez un formulaire pour chaque LocationID en utilisant la méthode CreateForm(). Vous pouvez ensuite définir la propriété .Caption du formulaire sur "formLocation (LocationID)".

(Remplacez T par le nom de votre table).

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