Solved

How to clear a previous form from the screen?

Posted on 2006-10-29
12
197 Views
Last Modified: 2008-03-10
I have an Access system that has been around for a number of years.  It was designed when users used 800x600 screen resolution.  Now many users prefer higher resolutions and one user even has an LSD monitor that doesn't have 800x600.  I'm trying to clean things up so that everything looks ok in both lower and higher resolutions.  One problem with higher resolution is that if a form whose length is quite long is closed and a form with a shorter length is then opened, the bottom half of the previous long form continues to appear at the bottom of the screen.  I've used a Docmd.Close.  How do I get the screen cleared?  There's probably some syntax somewhere, but I've had no luck finding it.  (A2003)
0
Comment
Question by:WFBweb
12 Comments
 
LVL 84
Comment Utility
This shouldn't be happening. When a form closes, everything should be gone and if you're seeing "ghost" images of the old form, you may be experiencing the beginnings of corruption.

Make a copy of your db first, then perform a compact/repair (tools - Database utilities - Compact & Repair). See if this takes care of the problem.

You should also explicitly call the form in DoCmd.Close:

DoCmd.Close acForm, "YourFormName"

0
 
LVL 77

Expert Comment

by:peter57r
Comment Utility
Hi WFBweb,
That sounds like a display driver issue, not an Access issue.

Pete
0
 

Author Comment

by:WFBweb
Comment Utility
I do explicity call the form in Do.Cmd.Close.  And...I did the compact/repair.  The system is set up to automatically do this on closing too.

Re the driver issue......I'll go over there (a notforprofit I do volunteer work for) and double-check.  Possibly the prob is only on my own home pc where I do all the development work.  There aren't a lot of users over there who do not use 800x600 and I may not have noticed if the prob did not occur for them.
0
 
LVL 26

Expert Comment

by:dannywareham
Comment Utility
>>That sounds like a display driver issue
I'd hasten to agree.

You can also get this problem intermittently if your CPU usage is particularly high.
The result is that the previous application screen stays on screen and looks like the new screen has sort of cut out part of it.

0
 
LVL 44

Accepted Solution

by:
Leigh Purvis earned 125 total points
Comment Utility
You don't have any code that prevents screen updates do you?
Possibly Echo or, since you're closing the form, the Painting property of the form - so perhaps
Application.Echo = False
Or
Docmd.Echo False
Or
Me.Painting = False

Before calling your form close - perhaps insert a line
Docmd.Echo True
or
Me.Painting = True

Just to be sure on that score?
0
 

Author Comment

by:WFBweb
Comment Utility
The same situation does occur over at the notforprofit.  I even upped the resolution of one of the 800x600 pc's and it had same prob.

Re Echo.  I did not realize that echo false stopped the actual updating of screens.  I have presumed that it merely did not show any ongoing changes to the user until the echo true was applied.  I frequently use it to stop minor movement/jumping reflected in closing and opening forms when it is not used.

To make the situation even more complex, I have a couple of 'short' forms that are, except for the data, exactly like the ones that show part of the previous form below them.  They do not show it.  They are all treated the same and basically have the same properties.....at least my sleuthing so far indicates that they do.

I'll do some experimenting with the echo.

0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 
LVL 44

Expert Comment

by:Leigh Purvis
Comment Utility
If you use Echo at all (let alone a lot) it's imperative that you have good error handling - so that it is *never* allowed to persist.
Since you do use it - I'd certainly suspect this is the cause, however plugging in a switch of it back on in the form closing event would merely be patching over the cracks.
You need to determine where in your code it is being used and not set back on again.
And make sure that this never happens.
0
 

Author Comment

by:WFBweb
Comment Utility
I haven't read the ten commandments in many years.....forgot all about the one that said 'thou shalt not echo'.
0
 
LVL 44

Expert Comment

by:Leigh Purvis
Comment Utility
Apparently it's OK - as long as you're not a duck!
(I read somewhere once that a duck's quack doesn't echo).

And of course you're free to use Echo in your applications.
Just as long as you're sooo careful to turn it back on again. :-)
0
 

Author Comment

by:WFBweb
Comment Utility
I still haven't run down a culprit echo, but will keep at it.
0
 
LVL 44

Expert Comment

by:Leigh Purvis
Comment Utility
Does switching echo back on before closing the form make it behave though?
0
 

Author Comment

by:WFBweb
Comment Utility
These forms are unbound main forms with at least one subform.  The main forms had echo on logic, but the forms that did not work had OrderBy code in the subform with no echo on.  The forms that worked properly had the OrderBy code for the subforms in the main form where the echo on was applied.  I moved the OrderBy logic of all the subforms to the main forms and everything works fine.  I believe that subforms are processed before mainforms so the echo off was in place causing the problem.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

In the previous article, Using a Critera Form to Filter Records (http://www.experts-exchange.com/A_6069.html), the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
Introduction When developing Access applications, often we need to know whether an object exists.  This article presents a quick and reliable routine to determine if an object exists without that object being opened. If you wanted to inspect/ite…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now