Attachment:db2
***hey***

tHanks UA members for hints & help.
Multiple form instances without using .HWnd.
the trick is to use a dummy textbox in the form template itself. The textbox contains the form number. Two arrays also hold form mode (add/edit) & curID for editing ( if form mode is edit mode).
wink.gif
''''experimental module to track multiple instances of one form.

Option Compare Database

Dim curID_ar(100) As Long
Dim formState_ar(100) As String
Dim v1, v2
Dim formNo As Long '' to track form & set arrays
Dim classClass As New Collection

Function editClass(editID)
formState_ar(formNo) = "edit"
curID_ar(formNo) = editID
newform
End Function

Function addClass()
formState_ar(formNo) = "add"
newform
End Function

Function newform()
Dim myform As Form
Set myform = New Form_class_frm

myform.Visible = True
myform("formNo") = formNo ''' myform("formNo") refers to a dummy textbox to save formNo
If formState_ar(formNo) = "edit" Then
myform("mashi") = "edit"
myform("class_fld") = DLookup("class_fld", "class_tbl", "id_fld=" & curID_ar(formNo))
End If
classClass.add Item:=myform, Key:="classForm" & CStr(formNo)
Set myform = Nothing
formNo = formNo + 1
End Function
Function closeform(numform)
classClass.Remove ("classForm" & CStr(numform))
End Function

Function savedata(numform)
Dim tempForm As Form
Set tempForm = classClass("classForm" & CStr(numform))
v2 = tempForm("class_fld")

If formState_ar(numform) = "add" Then
v1 = "insert into class_tbl (id_fld,class_fld) values(" & _
Nz(DMax("id_fld", "class_tbl") + 1, 1) & ",'" & v2 & "')"
DoCmd.RunSQL (v1)
End If

If formState_ar(numform) = "edit" Then
v1 = "update class_tbl set class_fld='" & v2 & "' where id_fld=" & curID_ar(numform)
DoCmd.RunSQL (v1)
End If

Forms("class_main_frm").Requery
Forms("class_main_frm").Form("class_sbfrm").Requery
End Function

wink.gif