Date: prev next · Thread: first prev next last
2014 Archives by date, by thread · List index

Noel , Andrew,

What system are you running ?

on windows the wait is doing OK

try this code

s1 = "1.  " + Now()
s2 = "2.  " + Now()
msgbox (s1 & chr(13)&  s2)

s1 an s2 differs from 2 seconds (wait 2000)


Hi Andrew,

Yes, that is what seems to be happening.  Even if there is a bit of code
between the Wait(2000) and the next Print #giInit, the time is the same.
Only if there is substantial code after the Wait(2000) does the time
change.  For example -
1.  04/04/2014 13:50:24
2.  04/04/2014 13:50:24
3.  04/04/2014 13:50:24
4.  04/04/2014 13:50:24
5.  B4 UpdateFundAndGenLed()  04/04/2014 13:50:24
6.  04/04/2014 13:50:28
7.  04/04/2014 13:50:28

After 5. the Init macro calls another macro.

Something odd seems to be happening with the Wait command.  Perhaps I am
missing something.  You can see why I was wanting to get fractions of a
second in the print statements.


Marion & Noel Lodge

On 4 April 2014 03:06, Andrew Douglas Pitonyak <> wrote:

So, are you saying that you have:

Print #giInit, "1.  " + Now()
Print #giInit, "2.  " + Now()

And it prints the same value for now?

On 04/03/2014 09:12 AM, Marion & Noel Lodge wrote:

Thanks for the replies to my original post.

They gave me something to work on and I have made some progress.  I think
that the macros run in series, but I am not yet sure of that.

For some reason the wait(2000) commands that I inserted into the the
don't seem to work and I am getting several lines with the identical time
stamps, like this -
1.  03/04/2014 23:44:57
2.  03/04/2014 23:44:57
3.  03/04/2014 23:44:57

I looked up the formatting for time stamps and
DD:MM:YYYY hh:mm:ss.00 is supposed to give fractions of a second, but I
don't know how to apply this to the Now() function.

The code I am using to print to the text files is -

       giInit = FreeFile()
       Open "D:\LibreOffice\InitfTransEntry.txt" for Output as giInit
       Print #giInit, "1.  " + Now()

Any suggestions as to how I can format Now(), or should I use a different
function to get more accurate timing?


Noel Lodge

On 2 April 2014 00:05, Andrew Douglas Pitonyak <>

  Sadly, I do not have a definitive answer to your question, but I do have
some thoughts... (see inline)

On 04/01/2014 06:57 AM, Marion & Noel Lodge wrote:

In opening my database accounting system, I trigger via the Form: When
loading event, a macro, (Sub Init()), containing the database
initialisation routines.

As the Form loads it displays the first record in the database,
the account number.   To make things easier for the user, the Text
event on the account number control, triggers a macro, (Sub AccName()),
that displays the account name.

  And I assume that this is built into the form.

   Sometimes the system has crashed because it seems that Sub AccName()

fired before Sub Init() has finished.  (Sub AccName() depends on some of
the structures that Sub Init() sets up.)

Is it possible that both Subs are running in parallel or do they always
in series on a first come first served basis?

  Warning: Speculation... So insert the following text before each
below:  "I am making a wild unsubstantiated guess that"

1. The form is populated before Init() finishes
2. AccName() is called as soon as text is pushed into the control.

So, if this is the case, then AccName may be called before Init()
finishes. If you really want to know if they run at the same time, you
could do a not so quick test and modify each routine so that the macro
something like this:

Sub Init()
    Write current time to a file
    delay a second or two
    Do the work
    delay a second or two
    Write the current time to a file
End Sub

Use a different file for each subroutine, then compare the start and end
time to see if they overlap. You can probably get away with using a
print statement at the start and end.

   If the latter, are there coding techniques that can be used to ensure

Sub Init() always runs first?

  If things run serially and AccName is called based on something done in
Init(), it may be possible that Init() cannot complete until after
   AccName() finishes.

I suppose that another possibility is to set a "Global" variable such as
"InitComplete". set to false when Init() starts, and set to true when it
completes. Modify AccName to check for InitComplete. If things are
then you may need to simply return. If not, then have AccName wait for a
few seconds and try again. If things are truly serial, then I would
them to fail every time, and they don't fail every time, so it is likely
not the case.

  If the former, how can I ensure that Sub AccName() waits until Sub
has finished?

  Oh wait, see above! :-)

  Can someone point me to any articles on this subject?

Noel Lodge

Andrew Pitonyak
My Macro Document:

To unsubscribe e-mail to:
Posting guidelines + more:
List archive:
All messages sent to this list will be publicly archived and cannot be

Andrew Pitonyak
My Macro Document:

To unsubscribe e-mail to:
Posting guidelines + more:
List archive:
All messages sent to this list will be publicly archived and cannot be

To unsubscribe e-mail to:
Posting guidelines + more:
List archive:
All messages sent to this list will be publicly archived and cannot be deleted


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.