Solved

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

Posted on 2009-05-07
7
975 Views
Last Modified: 2013-12-26
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
Comment
Question by:maddencoman
  • 3
  • 2
  • 2
7 Comments
 
LVL 9

Expert Comment

by:CCongdon
Comment Utility
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
 

Author Comment

by:maddencoman
Comment Utility
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
 
LVL 9

Accepted Solution

by:
CCongdon earned 250 total points
Comment Utility
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
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
LVL 3

Assisted Solution

by:EverLearningCodeMonkey
EverLearningCodeMonkey earned 250 total points
Comment Utility
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
 

Author Comment

by:maddencoman
Comment Utility
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
 

Author Closing Comment

by:maddencoman
Comment Utility
Your help was greatly appreciated. Thanks again.
0
 
LVL 3

Expert Comment

by:EverLearningCodeMonkey
Comment Utility
No problem,

Glad to be of help.

ELCM
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

763 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

10 Experts available now in Live!

Get 1:1 Help Now