Paradox Community

Items in pnews.paradox-programming

Subject:Re: Help with my code please example below
Date:Thu, 14 Oct 2021 14:44:34 -0700
From:Peter <peterspammenot@whiteknight.email>
Newsgroups:pnews.paradox-programming
It is not clear exactly what it is yoou are trying to do in terms of 
analysing the data but I will assume that each record is one day and you 
want to analyse one day at a time.

First thing I would do is create an array of the dates in the table. 
Then I would create another dynamic array that would define each "two 
week" period. Lastly, set a genfilter() on the table for each period

;//create array of all the dates
;//rough, no error trapping
var
  tcu          tcursor
  ary	      array[]date
  smicnt	      smallint
endvar

tcu.open(tbl)

scan tcu:
	;//assumming date field is unique	
	ary.addlast(tcu."datefield")  ;assuming sort order is ascending
endScan

tcu.close()

;//ary now contains every date in the table

;//next step is to create a dynamic array for two week period start/end 
dates
;// e.g. dynary[smicnt] = "10/01/2021 <= 10/14/2021"
;//use this dynamic array to setgenfilter() on the tbl

out of time right now, maybe that gives you direction - or somebody has 
a  different idea...

Peter


On 10/14/2021 02:13 p.m., Tony wrote:
> "Kevin Zawicki" <numberjack@wi.rr.com> wrote:
>>
>> Thanks Kevin
> If I want to start on the 01/01/2019 then get data every two weeks what does
> the code look like? Sorry Im not very good at this can you show me how this
> code will look please? Tony
> 
>>
>>
>> small rough example
>> paste into script for better reading
>>
>> ;// there are many variations on this, Paradox has a robust set of date
> handlers
>> for its age
>> method run(var eventInfo Event)
>> var
>>   sDate  date
>>   eDate  date
>>   qDate  string
>> endvar
>>
>> sDate = today()
>>
>>
>> for cnt from 1 to 5  ;// this loops 5 times, but you can set this to loop
>> until no data or whatever needed   or while dStart < today()
>>   ;// I avoid while loops or make them have a infinite lopo exit    but
> while
>> will work
>>
>>   eDate = sDate + 14  ;// set end date two weeks out
>>
>>   qDate = ">=" + sDate.string() + ",<=" + eDate.String()
>>   ;//  greater than or equal - or change dates to plus minus one and do
> not
>> use equal
>>
>>
>>
>>   qDate.view()
>>
>>
>>
>>   ;// do queries
>>
>>   ;//do add to collect table
>>
>>   sDate = eDate + 1 ;// set start date to next day after last end date
>>
>> endfor
>>
>> endMethod
>>
>>
>>
>>
>>
>>
>> "Tony" <tracy.fairbrother@btopenworld.com> wrote:
>>>
>>>
>>> Can someone help me with the code below please. I want to put a start date
>>> in and move the code date forward to capture the next set of data. Example
>>> So start 01/07/2019 until 15/07/2019. Do the analysis add to the stats2
>>> table then move on 16/07/2019 until 31/07/2019 do the same add results
> to
>>> stas2 table. I want this to carry on until the end of my data which is
> 12/10/2021.
>>> Not sure what im doing wrong .
>>>
>>>
>>>
>>> proc StartDate(d date) date
>>> ; proc returns start date for given date
>>> ; if date is before 16th, start date is begining of month
>>> 	if day(d) < 16 then
>>> 		return( date(month(d),1,year(d)) )
>>>     else
>>> 		return( date(month(d),16,year(d)) )
>>>     endIf
>>> endProc
>>>
>>> proc EndDate(d date) date
>>> ; proc returns end date for given date
>>> ; if date is before 16th, end date is 15,
>>> ; if date if 16th or later, end date is end of month
>>> 	if day(d) < 16 then
>>> 		return( date(month(d),15,year(d)) )
>>>     else
>>> 		return( date(month(d),daysInMonth(d),year(d)) )
>>>     endIf
>>> endProc
>>>
>>>
>>> method run(var eventInfo Event)
>>> var qb query
>>> 	 TC TCursor
>>> 	 dStart, dEnd Date
>>> 	 mStart, mEnd Date
>>> 	 sDate String
>>> 	 mDate String
>>> 		 tab table
>>>
>>>
>>> 	 endVar
>>>
>>>
>>> 	dStart = date(7,01,2018)
>>> 	mStart = date(7,16,2018)
>>>    ; and now start looping
>>>    while dStart < today()
>>> 		dStart = StartDate(dStart)
>>> 		dEnd   = EndDate(dStart)
>>> 		mStart = StartDate(mStart)
>>> 		mEnd   = EndDate(mStart)
>>> 		; create a condition for date      ex: ">=1.1.2018 , <=15.1.2018"
>>>       sDate = ">=01/07/2018,<="+string(dEnd)
>>>       ; and now do something with this string
>>>       ; put here your querys and do smething with them
>>>
>>> 			mDate = ">="+string(mStart) + ", <="+string(mEnd)
>>>
>>>
>>>
>>>    qb= Query
>>> ANSWER: :PRIV:ANSWER.DB
>>>
>>> OPTIONS: NO AUXILIARY TABLES
>>> Stats1.DB | Race name |
>>> Delete    | not blank |
>>>
>>> EndQuery
>>>
>>> 		qb.executeQBE()
>>> 	  qb= Query
>>> ANSWER: :WORK:Stats1.DB
>>>
>>> Stats1.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
>> |
>>>
>>>           | Check     | Check    | Check   | Check  | Check  | Check
> 
>> |
>>>
>>>
>>> Stats1.DB | Race type | TfGoing | Going  | Pos    | Btn    | Trap   | Name
>>>   |
>>>           | Check     | Check   | Check  | Check  | Check  | Check  | Check
>>> |
>>>
>>> Stats1.DB | Age    | Sex    | Bend.1 | Bend.2 | Bend.3 | Bend.4 | Comments
>>> |
>>>           | Check  | Check  | Check  | Check  | Check  | Check  | Check
>>
>>>   |
>>>
>>> Stats1.DB | ISP    | TFR    | Official time | Break time | Trainer | Betfair
>>> |
>>>           | Check  | Check  | Check         | Check      | Check   | Check
>>>   |
>>>
>>> Stats1.DB | Race name_1 | Racetime_1 | Race No_1 | Date_1 | Grade_1 |
>>>           | Check       | Check      | Check     | Check  | Check   |
>>>
>>> Stats1.DB | Distance_1 | Race type_1 | TfGoing_1 | Going_1 | Pos_1  | Btn_1
>>> |
>>>           | Check      | Check       | Check     | Check   | Check  | Check
>>> |
>>>
>>> Stats1.DB | Trap_1 | Name_1 | Age_1  | Sex_1  | Bend.1_1 | Bend.2_1 |
>>>           | Check  | Check  | Check  | Check  | Check    | Check    |
>>>
>>> Stats1.DB | Bend.3_1 | Bend.4_1 | Comments_1 | ISP_1  | TFR_1  |
>>>           | Check    | Check    | Check      | Check  | Check  |
>>>
>>> Stats1.DB | Official time_1 | Break time_1 | Trainer_1 | Betfair_1 | RaceN
>>> |
>>>           | Check           | Check        | Check     | Check     | Check
>>> |
>>>
>>> EndQuery
>>>
>>> 		qb.executeQBE()
>>>
>>> qb=Query
>>> ANSWER: :WORK:Races.DB
>>>
>>> DogsDB.DB | Race name             | Racetime | Race No | Date
> 
>>
>>>    | Grade  |
>>> 			 | Check _join3, Crayford | Check    | Check   | Check _a,~mDate   |
>> Check
>>> |
>>> 			 | Check _join3          | Check    | Check   | Check <_a          |
>> Check
>>> |
>>>
>>> DogsDB.DB | Distance     | Race type | TfGoing | Going  | Pos    | Btn
> 
>>
>>> |
>>>           | Check _join2 | Check     | Check   | Check  | Check  | Check
>>> |
>>>           | Check _join2 | Check     | Check   | Check  | Check  | Check
>>> |
>>>
>>> DogsDB.DB | Trap   | Name         | Age    | Sex    | Bend.1 | Bend.2 |
>>
>>>           | Check  | Check _join1 | Check  | Check  | Check  | Check  |
>>
>>>           | Check  | Check _join1 | Check  | Check  | Check  | Check  |
>>
>>>
>>> DogsDB.DB | Bend.3 | Bend.4 | Comments | ISP    | TFR    | Official time
>>> |
>>> 			 | Check  | Check  | Check    | Check  | Check  | Check         |
>>> 			 | Check  | Check  | Check    | Check  | Check  | Check         |
>>>
>>> DogsDB.DB | Break time                  | Trainer | Betfair |
>>>           | Check                       | Check   | Check   |
>>>           | Check _b,calc _b*0 as RaceN | Check   | Check   |
>>>
>>> EndQuery
>>>
>>> 	  qb.executeQBE()
>>> play("RaceNo.ssl")
>>>
>>>   qb=Query
>>> ANSWER: :WORK:ANSWER.DB
>>>
>>> Races.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
> |
>>>
>>>          | Check     | Check    | Check   | Check  | Check  | Check
> |
>>>
>>>
>>> Races.DB | Race type | TfGoing | Going  | Pos    | Btn    | Trap   | Name
>>>   |
>>>          | Check     | Check   | Check  | Check  | Check  | Check  | Check
>>> |
>>>
>>> Races.DB | Age    | Sex    | Bend.1 | Bend.2 | Bend.3 | Bend.4 | Comments
>>> |
>>>          | Check  | Check  | Check  | Check  | Check  | Check  | Check
> 
>>
>>> |
>>>
>>> Races.DB | ISP    | TFR    | Official time | Break time | Trainer | Betfair
>>> |
>>> 			| Check  | Check  | Check         | Check      | Check   | Check   |
>>
>>>
>>> Races.DB | Race name_1 | Racetime_1 | Race No_1 | Date_1 | Grade_1 |
>>>          | Check       | Check      | Check     | Check  | Check   |
>>>
>>> Races.DB | Distance_1 | Race type_1 | TfGoing_1 | Going_1 | Pos_1  | Btn_1
>>> |
>>>          | Check      | Check       | Check     | Check   | Check  | Check
>>> |
>>>
>>> Races.DB | Trap_1 | Name_1 | Age_1  | Sex_1  | Bend.1_1 | Bend.2_1 | Bend.3_1
>>> |
>>> 			| Check  | Check  | Check  | Check  | Check    | Check    | Check
> 
>> |
>>>
>>>
>>> Races.DB | Bend.4_1 | Comments_1 | ISP_1  | TFR_1  | Official time_1 |
> 
>>> 			| Check    | Check      | Check  | Check  | Check           |
>>>
>>> Races.DB | Break time_1 | Trainer_1 | Betfair_1 | RaceN         |
>>> 			| Check        | Check     | Check     | Check >0,<=8 |
>>>
>>> EndQuery
>>>
>>> 	qb.executeQBE()
>>>
>>>
>>> 	tab.attach("answer")
>>> tab.add("Stats1",True,False)
>>>     
>>> qb=Query
>>> ANSWER: :WORK:NNett.DB
>>>
>>> Stats1.DB | Race name | Racetime | Race No | Date   | Grade     | Distance
>>> |
>>> 			 | Check     | Check    | Check   | Check  | Check A.. | Check 380 |
>>
>>>
>>> Stats1.DB | Race type | Pos    | Trap   | Name   | Age    | Sex    | ISP
>>>    |
>>> 			 | Check     | Check  | Check  | Check  | Check  | Check  | Check  |
>>
>>>
>>> Stats1.DB | Betfair |
>>> 			 | Check   |
>>>
>>> Stats1.DB | TFR_1
> 
>>
>>>                                                                       
> 
>>
>>>                             |
>>> 			 | _a,calc _a*0 as RT2,calc _a*0 as RT2P,calc _a*0 as RT2C,calc _a*0
>> as
>>> RT4,calc _a*0 as RT4P,calc _a*0 as RT4C,calc _a*0 as RT6,calc _a*0 as RT6P,calc
>>> _a*0 as RT6C |
>>>
>>> Stats1.DB |
>>> 			 |
>>>
>>> Stats1.DB | RaceN
> 
>>
>>>                                                  |
>>> 			 | calc _a*0 as BT6,calc _a*0 as RT6P,calc _a*0 as RT6Avg,calc _a*0
> as
>>> Tracp P,calc _a*0 as BT,calc _a*0 as Nocr |
>>>
>>> EndQuery
>>>
>>>
>>>   qb.executeQBE()
>>>
>>>
>>> 	
>>> qb=Query
>>> ANSWER: :WORK:Adjtimes.DB
>>>
>>> Stats1.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
>> |
>>>
>>> 			 | Check     | Check    | Check   | Check  | Check  | Check    |
>>>
>>> Stats1.DB | Race type | TfGoing | Going  | Pos    | Btn    | Trap   | Name
>>>   |
>>> 			 | Check     | Check   | Check  | Check  | Check  | Check  | Check
> |
>>>
>>>
>>> Stats1.DB | Age    | Sex    | Bend.1 | Bend.2 | Bend.3 | Bend.4 | Comments
>>> |
>>> 			 | Check  | Check  | Check  | Check  | Check  | Check  | Check    |
> 
>>>
>>> Stats1.DB | ISP    | TFR    | Official time | Break time | Trainer | Betfair
>>> |
>>> 			 | Check  | Check  | Check         | Check      | Check   | Check
> |
>>>
>>>
>>> Stats1.DB | Race name_1  | Racetime_1   | Race No_1    | Date_1       |
>>
>>> 			 | Check _join1 | Check _join2 | Check _join7 | Check _join4 |
>>>
>>> Stats1.DB | Grade_1      | Distance_1   | Race type_1 | TfGoing_1 | Going_1
>>> |
>>> 			 | Check _join6 | Check _join5 | Check       | Check     | Check   |
>>
>>>
>>> Stats1.DB | Pos_1  | Btn_1  | Trap_1 | Name_1 | Age_1  | Sex_1  | Bend.1_1
>>> |
>>> 			 | Check  | Check  | Check  | Check  | Check  | Check  | Check    |
> 
>>>
>>> Stats1.DB | Bend.2_1 | Bend.3_1 | Bend.4_1 | Comments_1 | ISP_1  | TFR_1
>>> |
>>> 			 | Check    | Check    | Check    | Check      | Check  | Check  |
>>>
>>> Stats1.DB | Official time_1 | Break time_1 | Trainer_1 | Betfair_1 | RaceN
>>> |
>>> 			 | Check           | Check        | Check     | Check     | Check  |
>>
>>>
>>> goingAllow.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
>>> |
>>> 				  | _join1    | _join2   | _join7  | _join4 | _join6 | _join5   |
>>>
>>> goingAllow.DB | GA     |
>>> 				  | Check  |
>>>
>>> EndQuery
>>>
>>>
>>>   qb.executeQBE()
>>>
>>>
>>>
>>>
>>> qb= Query
>>> ANSWER: :WORK:Adjtimes.DB
>>>
>>>
>>> Adjtimes.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
>>> |
>>> 				| Check     | Check    | Check   | Check  | Check  | Check    |
>>>
>>> Adjtimes.DB | Race type | TfGoing | Going  | Pos    | Btn    | Trap   |
>>
>>> 				| Check     | Check   | Check  | Check  | Check  | Check  |
>>>
>>> Adjtimes.DB | Name   | Age    | Sex    | Bend.1 | Bend.2 | Bend.3 | Bend.4
>>> |
>>> 				| Check  | Check  | Check  | Check  | Check  | Check  | Check  |
>>>
>>> Adjtimes.DB | Comments | ISP    | TFR    | Official time | Break time |
>>
>>> 				| Check    | Check  | Check  | Check         | Check      |
>>>
>>> Adjtimes.DB | Trainer | Betfair | Race name_1 | Racetime_1 | Race No_1
> |
>>>
>>> 				| Check   | Check   | Check       | Check      | Check     |
>>>
>>> Adjtimes.DB | Date_1 | Grade_1 | Distance_1 | Race type_1 | TfGoing_1 |
>>
>>> 				| Check  | Check   | Check      | Check       | Check     |
>>>
>>> Adjtimes.DB | Going_1 | Pos_1  | Btn_1  | Trap_1 | Name_1 | Age_1  | Sex_1
>>> |
>>> 				| Check   | Check  | Check  | Check  | Check  | Check  | Check  |
>>>
>>> Adjtimes.DB | Bend.1_1 | Bend.2_1 | Bend.3_1 | Bend.4_1 | Comments_1 |
> ISP_1
>>> |
>>> 				| Check    | Check    | Check    | Check    | Check      | Check  |
>>
>>>
>>> Adjtimes.DB | TFR_1  | Official time_1 | Break time_1 | Trainer_1 | Betfair_1
>>> |
>>> 				| Check  | Check _a        | Check        | Check     | Check     |
>>
>>>
>>> Adjtimes.DB | RaceN    | GA                         |
>>> 				| Check >0 | Check _b,calc _a-_b as GAA |
>>>
>>> EndQuery
>>>
>>>
>>>   qb.executeQBE()
>>>
>>>   qb=Query
>>> ANSWER: :PRIV:ANSWER.DB
>>>
>>> OPTIONS: NO AUXILIARY TABLES
>>> Adjtimes.DB | Distance_1 | Official time_1 | GA | GAA            |
>>> 				|            | _c              | _b | changeto _c+_b |
>>>
>>> EndQuery
>>>
>>> 	qb.executeQBE()
>>>
>>>   qb=Query
>>> ANSWER: :WORK:NNett.DB
>>>
>>> DogsDB.DB | Race name     | Racetime | Race No | Date              | Grade
>>> | Distance  |
>>> 			 | Check Crayford | Check    | Check   | Check ~sDate     | Check  |
>> Check
>>> 380 |
>>>
>>> DogsDB.DB | Race type | Pos    | Trap   | Name   | Age    | Sex    |
>>> 			 | Check     | Check  | Check  | Check  | Check  | Check  |
>>>
>>> DogsDB.DB | TFR
> 
>>
>>>                                                                       
> 
>>
>>>                             |
>>> 			 | _a,calc _a*0 as RT2,calc _a*0 as RT2P,calc _a*0 as RT2C,calc _a*0
>> as
>>> RT4,calc _a*0 as RT4P,calc _a*0 as RT4C,calc _a*0 as RT6,calc _a*0 as RT6P,calc
>>> _a*0 as RT6C |
>>>
>>> DogsDB.DB |
>>> 			 |
>>>
>>> DogsDB.DB | Betfair
> 
>>
>>>                                                        |
>>> 			 | Check calc _a*0 as BT6,calc _a*0 as RT6P,calc _a*0 as RT6Avg,calc
>> _a*0
>>> as Tracp P,calc _a*0 as BT,calc _a*0 as Nocr |
>>>
>>> EndQuery
>>>
>>>   qb.executeQBE()
>>>
>>>
>>>
>>> qb= Query
>>> ANSWER: :PRIV:ANSWER.DB
>>>
>>> NNett.DB | Pos              |
>>> 			| not 1,changeto 0 |
>>>
>>> EndQuery
>>>
>>>
>>>   qb.executeQBE()
>>>
>>> 	
>>>
>>> play("Lto2T.ssl")
>>>
>>> play("Lto4.ssl")
>>>
>>>   play("Lto6.ssl")
>>>
>>> 	play("BT8.ssl")
>>> 	play("Fitness.ssl")
>>>
>>>   qb=Query
>>> ANSWER: :PRIV:ANSWER.DB
>>>
>>> OPTIONS: NO AUXILIARY TABLES
>>> NNett.DB | Race name | Racetime | Race No | Date   | Name   | Betfair
> 
>>
>>> |
>>> 			| _join1    | _join2   | _join3  | _join4 | _join5 | changeto _a |
>>>
>>> BetfairSp.DB | Race name | Racetime | Race No | Date   | Name   | Betfair
>>> |
>>> 				 | _join1    | _join2   | _join3  | _join4 | _join5 | _a      |
>>>
>>> EndQuery
>>>
>>>   qb.executeQBE()
>>>
>>> 	 qb=Query
>>> ANSWER: :WORK:ANSWER.DB
>>>
>>> NNett.DB | Race name | Racetime | Race No | Date   | Grade  | Distance
> |
>>>
>>>          | Check     | Check    | Check   | Check  | Check  | Check
> |
>>>
>>>
>>> NNett.DB | Race type | Pos    | Trap   | Name   | Age    | Sex    | Betfair
>>> |
>>>          | Check     | Check  | Check  | Check  | Check  | Check  | Check
>>>   |
>>>
>>> NNett.DB | RT2    | RT2P   | RT2C   | RT4    | RT4P   | RT4C   | RT6
> 
>> |
>>>
>>>          | Check  | Check  | Check  | Check  | Check  | Check  | Check
> 
>> |
>>>
>>>
>>> NNett.DB | RT6P   | RT6C   | BT6    | RT6P_1 | RT6Avg | Tracp P | BT
> 
>>
>>> |
>>>          | Check  | Check  | Check  | Check  | Check  | Check   | Check
>>
>>> |
>>>
>>> NNett.DB | Nocr   |
>>>          | Check  |
>>>
>>> EndQuery
>>>
>>> 	  qb.executeQBE()
>>>   	tab.attach("answer")
>>> tab.add("Stats2",True,False)
>>>
>>>
>>>
>>> 			
>>>
>>> 		; and at the end prepare data for next iteration
>>> 		dStart = dEnd+1
>>> 		mStart = mEnd+1
>>> 	
>>> 	endWhile
>>>
>>>
>>
> 


Copyright © 2004 thedbcommunity.com