William Hindman
wdhindman at bellsouth.net
Wed Jan 18 12:01:18 CST 2006
----- Original Message ----- From: "William Hindman" <wdhindman at bellsouth.net> To: "Access Developers discussion and problem solving" <accessd at databaseadvisors.com> Sent: Wednesday, January 18, 2006 12:58 PM Subject: Re: [AccessD] ...close open forms > Shamil > > ...I use both now ...I generally prefer bound forms ...but in apps with > several users I've run into problems with record locking ...so for those > forms where this is happening I've gradually been converting to unbound > forms. > > ...but what I'm looking for here is a generic plug-in that will work > equally well with both ...I'm building a new user interface that uses a > treeview switchboard form that is always in view ...one of the problems > being of course that a user can select from the switchboard at any time > even when a form is already open ...there are a number of ways to cover > that but what I was hoping someone had was a function that I could simply > call on form open that would iterate through all open forms, except those > I want left open, saving any dirty data, and closing them before opening > the new form. > > ...I'll try the approaches you and Gustav have posted and let you know > ...thanks for the quick replies :) > > William > > ----- Original Message ----- > From: "Shamil Salakhetdinov" <shamil at users.mns.ru> > To: "Access Developers discussion and problem solving" > <accessd at databaseadvisors.com> > Sent: Wednesday, January 18, 2006 9:53 AM > Subject: Re: [AccessD] ...close open forms > > >> William, >> >> It's unclear what do you mean by saving data before closing form - do you >> have unbound forms? >> >> For bound forms this code should work well: >> >> Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" >> ( _ >> ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ >> lParam As Any) As Long >> Private Const WM_CLOSE = &H10 >> >> Public Sub CloseForms( _ >> ByRef robjApp As Access.Application, _ >> Optional ByRef rcolFormNames2Skip As Collection = Nothing) >> Dim lngIdx As Long >> Dim efrm As Access.Form >> With robjApp.Forms >> If .Count > 0 Then >> For lngIdx = .Count - 1 To 0 Step -1 >> Set efrm = .Item(lngIdx) >> If Not SkipThisForm(rcolFormNames2Skip, efrm) Then >> ' force to save data in bound form before >> ' closing it >> efrm.SetFocus >> DoEvents >> SendKeys "+{Enter}", True >> ' close form >> SendMessage efrm.hWnd, WM_CLOSE, 0, 0 >> DoEvents >> End If >> Next lngIdx >> End If >> End With >> End Sub >> >> Private Function SkipThisForm( _ >> ByRef rcolFormNames2Skip As Collection, _ >> ByRef rfrm As Access.Form) As Boolean >> Dim evar As Variant >> If Not rcolFormNames2Skip Is Nothing Then >> For Each evar In rcolFormNames2Skip >> If StrComp(CStr(evar), rfrm.Name, vbTextCompare) = 0 Then >> SkipThisForm = True >> Exit Function >> End If >> Next evar >> End If >> SkipThisForm = False >> End Function >> >> It can be called this way from Switchboard form: >> >> Dim col As New Collection >> col.Add Me.Name >> CloseForms Access.Application, col >> >> >> You can also implement a special predefined public method in all your >> forms, >> which can be called to save data before closing the form etc.... >> >> Shamil >> >> ----- Original Message ----- >> From: "William Hindman" <wdhindman at bellsouth.net> >> To: "Access Developers discussion and problem solving" >> <accessd at databaseadvisors.com> >> Sent: Wednesday, January 18, 2006 5:01 PM >> Subject: [AccessD] ...close open forms >> >> >>> ...I need to close any open forms ...other than designated forms ...and >> save >>> their data ...before opening a called form ...from the called form. >>> >>> ...ie call a form open from a switchboard ...the called form checks for >> any >>> other forms open, other than the sb, and closes them, saving their data, >>> before it opens. >>> >>> William >>> >>> >>> -- >>> AccessD mailing list >>> AccessD at databaseadvisors.com >>> http://databaseadvisors.com/mailman/listinfo/accessd >>> Website: http://www.databaseadvisors.com >> >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> >