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
0
A
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