Newbies stevesy Posted May 15, 2009 Newbies Posted May 15, 2009 I apologize if this is a double post but it went to portals the first time wheich makes no sense. I am a relative Novice. What I am going to ask about is something I do in Excel all the time Suppose I have a database with 100 records; I do a find on a field and locate a unique 10 of them I want a time field to start at 8AM with the 1st found record and increment by 6 minutes. until I get to the end... 8:54, I then do another find and have a unique set of 12 and again start at 8AM and add 6 minutes to each until I get to the end at 9:06 etc until I have worked with all 100. I don't want these to change based on a new find or sort unless I tell it to. I thought this would be a loop in a script but I can't figure out how to do it I assume that this is fairly simple, but as I said I am a novice
Lee Smith Posted May 15, 2009 Posted May 15, 2009 I deleted your other thread. In the future, you have a couple of options when this happens. You can delete your own post (provided you have not received a reply yet), by going into the Edit, and clicking the first option on the top of the page (Left Side). Or, In the event that you have received help already, you can post use the [color:blue]Reported Post ([color:red]Circle with the Line through it), or post a request to one of the Moderators, or Admin. HTH Lee
Tpaairman Posted May 16, 2009 Posted May 16, 2009 If I'm understanding this right, you want to go to the first record, enter 8:00am in the field, immediately go to the next record, enter 8:06am, etc. After you have your found set, a simple script will take care of this. It should look something like this: Goto record: first Insert Calculated result (Time field; (08 ; 00 ; 00)) Loop Goto record Next (exit after last) Set field (Time field; Time field + 360) [selects time field, and it adds 360 seconds] End Loop Commit Records/Requests
comment Posted May 16, 2009 Posted May 16, 2009 Goto record: first Insert Calculated result (Time field; (08 ; 00 ; 00)) Loop Goto record Next (exit after last) Set field (Time field; Time field + 360) [selects time field, and it adds 360 seconds] End Loop Commit Records/Requests I'd suggest you try this script for yourself - perhaps even before posting it...
bcooney Posted May 16, 2009 Posted May 16, 2009 (edited) If you write a looping script, record lock may be an issue. Anytime you touch more than one record, it's a consideration. The key is that to increment, you would add seconds to the time. Increment Script #This script doesn't trap for record lock or records that already have a value in Time. Allow User Abort [ Off ] Go to Record/Request/Page [ First ] Set Field [ Table::Time; Time ( 8 ; 0 ; 0 ) ] Set Variable [ $time; Value:Table::Time ] Loop Go to Record/Request/Page [ Next; Exit after last ] Set Field [ Table::Time; $time + 360 ] Set Variable [ $time; Value:Table::Time ] End Loop Edited May 16, 2009 by Guest
Lee Smith Posted May 16, 2009 Posted May 16, 2009 (edited) I never suggest User Abort Off to a beginner trying to get a script right. Edited May 16, 2009 by Guest oops
Tpaairman Posted May 16, 2009 Posted May 16, 2009 Crap - I was doing this in my head, and I did forget about bringing the time value to the next record. Change the script that I posted to: Goto record: first Insert Calculated result (Time field; (08 ; 00 ; 00)) Copy (Time) Loop Goto record Next (exit after last) Past (Time) Set field (Time field; Time field + 360) [selects time field, and it adds 360 seconds] Coty (Time) End Loop Commit Records/Requests
bcooney Posted May 16, 2009 Posted May 16, 2009 Yes, I should have explained what User Abort Off does. But this script is tested, so there's no chance of getting stuck in an endless loop.
LaRetta Posted May 16, 2009 Posted May 16, 2009 (edited) You are still using Copy, Paste and Insert Calculated Result ... all bad choices when other options are available because, as already said, they require the fields be on the layout whereas Set Field[] does NOT have such limitation. Using Copy also trashes the User clipboard contents which is impolite. I suggest using Barbara's (bcooney) script instead. Edited May 16, 2009 by Guest
comment Posted May 16, 2009 Posted May 16, 2009 How about: Replace Field Contents [ Table::Timefield ; 28800 + 360 * ( Get (RecordNumber) - 1 ) ] All the above caveats about record locking still apply. Also make sure you have a backup while you try this, since there is no undo.
Recommended Posts
This topic is 5729 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now