Subject |
Re: Error Code 239 IDAPI error |
From |
Michael <michael@abstractservices.com.au> |
Date |
Sun, 22 Oct 2023 17:48:55 -0400 |
Newsgroups |
dbase.getting-started |
Thanks Ed.
Edward Racht Wrote:
> FYI
> Here is a thread about the timer in the getting-started newsgroup.
>
> Appears to involve your issue.
>
> ed
> -------------------------
> Object Re: timer class
> From Mervyn Bick <invalid@invalid.invalid>
> Date Sun, 24 Jul 2022 13:32:47 +0200
> Newsgroups dbase.getting-started
>
> On 2022/07/24 12:43, Mustansir Ghor wrote:
> > Dear All
> >
> > One more issue has come up with me.
> >
> > After using a timer class in the form ,a statement
> form.databasename.emptytable(" xyz") says file is in use by another on a
> second attemp on form run. After 1st run when I click form design button
> I think due to timer, the database must not have closed.
> >
> > Can anybody suggest if we rectify this problem.
>
> It is extremely important to manually deactivate any timer object on a
> form in the form's canClose or onClose event handler. If you don't
> deactivate it it keeps on ticking away in memory until you actually
> close dBASE. Type help timer class in the Command Panel and then
> click on the link to the example at the top of the page.
>
> Most objects on a form are closed and released automatically when a form
> is closed. As an aside, it is good programming (although too many
> programmers seem to not do this) to deactivate all objects manually
> before closing a form.
>
> If all objects on the form are inactive when the form is closed Windows
> will release the form and clear it from memory. If anything in the form
> accesses an active object in memory then Windows keeps the form in
> memory. If you open the form a second time Windows doesn't load and run
> the code again it simply uses the code already in memory.
>
> The emptyTable() method of a database object requires exclusive use of
> the table. This means that in your form the method has to be executed
> before the query that accesses the table is made active. When Windows
> executes the copy kept in memory the second time round the query is
> active because it was active when the form was closed. The table is,
> therefore, in use and the emptyTable() method can't be executed.
>
> Mervyn.
|
|