• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1031
  • Last Modified:

How to get a VB Script Do Until Loop to end at a time.

I am new to using any script and I am trying to set up a VB script in IBM Client Access to run a script that could be started at any time in the morning but I will want it to run until 7:45 am the next morning. We have an update that runs at 8:00 and the script needs to stop running before then. Below is what I have been trying. The problem is that it does not stop and my logic will not work because of the fact that the loop will be started one morning and then ending the next. The starting time will already be greater than the ene time. Help
Dim StartTime
Dim CurrTime
Dim EndTime
 
StartTime=Time()
EndTime="07:45:00"
 
Do
 
Any coding in loop
 
   CurrTime=Time()
 
Loop until (CurrTime>=EndTime)

Open in new window

0
maddencoman
Asked:
maddencoman
  • 3
  • 2
  • 2
2 Solutions
 
CCongdonCommented:
Will this do what you need?

Dim StartTime
Dim StartDate
Dim CurrTime
Dim CurrDate
Dim EndTime
 
StartTime=Time()
StartDate=Date()
EndTime="07:45:00"
 
Do
 
Any coding in loop
 
   CurrTime=Time()
   CurrDate=Date()
 
Loop until (CurrDate > StartDate AND CurrTime>=EndTime)

Open in new window

0
 
maddencomanAuthor Commented:
I made a minor adjustment to try to test it with a few minutes ahead of the current time, but I still can't get the script to end. I have attached the entire script to see if I am missing anything. I apoligize, I am very new to scripts with no background or training except for some research on the internet on my own. I am sure I am probably missing something very basic, but I can't figure it out. Basically this is a short script to sign on to a 5250 emulation session, start a program and refresh the screen every 30 seconds until I want it to end. Thanks
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT
autECLSession.SetConnectionByName(ThisSessionName)
 
REM This line calls the macro subroutine
subSub1_
 
sub subSub1_()
   autECLSession.autECLOIA.WaitForAppAvailable
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "u002mark"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[field+]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "mark"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[field+]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[enter]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.WaitForAttrib 1,1,"20","3c",3,10000
 
   autECLSession.autECLPS.Wait 1500 
 
   autECLSession.autECLOIA.WaitForAppAvailable
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[enter]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.WaitForAttrib 5,1,"00","3c",3,10000
 
   autECLSession.autECLPS.WaitForCursor 5,2,10000
 
   autECLSession.autECLOIA.WaitForAppAvailable
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "1"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[enter]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.WaitForAttrib 7,2,"00","3c",3,10000
 
   autECLSession.autECLPS.Wait 3000 
 
Dim StartTime
Dim StartDate
Dim CurrTime
Dim CurrDate
Dim EndTime
 
StartTime=Time()
StartDate=Date()
EndTime="12:19:00"
 
Do
 
   autECLSession.autECLOIA.WaitForAppAvailable
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[pf5]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.WaitForAttrib 7,2,"00","3c",3,10000
  
   autECLSession.autECLPS.wait  30000
 
   CurrTime=Time()
   CurrDate=Date()
 
 
Loop until (CurrDate = StartDate AND CurrTime>=EndTime)
 
end sub

Open in new window

0
 
CCongdonCommented:
Your code differs in one important respect from mine...

You put:
Loop until (CurrDate = StartDate AND CurrTime>=EndTime)
 
Should be:
Loop until (CurrDate > StartDate AND CurrTime>=EndTime)

Open in new window

0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
EverLearningCodeMonkeyCommented:
Hi maddencoman,

Something that should be considered is the format of your date/time variables.

Date() and Time(), I believe, return date and time variables, whereas EndTime is defined as a string.  You should probably put CDate() around the string for EndTime to ensure that it's treated properly.

Either that or use the # as delimiters, this should define it as a Date subtype instead of a string.

You may want to look at putting your script/application to sleep by leveraging kernel32 as per this article: http://www.developerfusion.com/code/119/put-your-vb-application-into-deep-sleep/

I know it works for applications, not sure about scripts, but it's worth checking out - that way your script isn't constantly checking date & time as fast as it can go, but rather runs, checks date & time, sleeps for a bit, wakes up and repeats until completion.

StartTime=Time()
StartDate=Date()
EndTime = CDate("07:45:00")
 
' Or Define EndTime this way
EndTime = #07:45:00#

Open in new window

0
 
maddencomanAuthor Commented:
I made the change to test it only. I was trying to put an end time of about five minutes after I started the script to test it. Shouldn't have that of worked for a test?
0
 
maddencomanAuthor Commented:
Your help was greatly appreciated. Thanks again.
0
 
EverLearningCodeMonkeyCommented:
No problem,

Glad to be of help.

ELCM
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now