eTiming database

Databasen til eTiming er i MS Access format (.mdb) og kan åpnes i programmet MDB Viewer plus. MDB Viewer kan både lese og skrive til databasen, samt utføre spørringer. Du kan også kjøre spørringer fra eTiming ved å bruke Diverse → Spørring.

Databasens oppbygning med tabeller

Bruk av anførselstegn i spørringer i eTiming

Man er nødt til å bruke enkle anførselstegn, ', for å markere strenger. Doble anførselstegn blir ikke gjenkjent av eTiming

Kolonner i name

name inneholder alle løperne, og tidene deres. De fleste tidene er gitt som andeler av et døgn, for eksempel er tiden 0,75 det samme som klokka 18.00.00 siden 0,7524=18.

Smarte tips

Oppdatere klasseregisteret for fristart og åpne klasser

Setter alle klasser til intetkjønn og gir dem bruk brikketid + fristart.

update class set sex = 'X', freestart = True, direct = True;

Gi tilfeldig løype til løpere i en klasse

Dersom man har ulike løyper i samme klasse (for eksempel med ulike gaflinger), så kan man tildele gaflinger til løperne tilfeldig ved hjelp av SQL. For at dette skal fungere må man ha importert løypene i eTiming og notert seg hvilke løypenummer som hører til hver klasse.

I eksempelet under så skal klasse H lang tildeles løyper fra løypenummer 3 til og med 6. Endre på tallene 6 og 3 og klassenavnet for å passe til egen bruk

update name set cource = Int((6 - 3 + 1) * Rnd(id) + 3) where class in (select class.code from class where class.class = 'H lang');

Forklaring på spørringen

Merk at denne metoden ikke gir like mange løpere i hver løype. Siden vi trekker tilfeldige tall så kan det være at det blir veldig mange i noen løyper, og ingen løpere i andre løyper. Man bør nok derfor justere løypenummere manuelt i etterkant.

Bør testes til senere


update cource = 
select * from name order by Rnd(id) 

Urangerte resultatlister for barn

update class set timingtype = 2 where class like 'N-%pen';
update class set timingtype = 1 where class like '%10%';

Få riktige kontingentnivåer til Agderkarusell

Bruk tre kontingentnivåer:

  1. Påmelding voksen 90 kr
  2. Etteranmelding voksen 90 kr (dette nivået er egentlig ikke nødvendig)
  3. Påmelding ungdom 50 kr

Sett kontingentnivå 1 i etiming til voksenkontingent og sett kontingentnivå 3 (spesialkontingent) til 50 kr.

Sett alle løpere under 17 år til ungdomskontingent og alle løpere som er 17 år eller eldre til voksenkontingent. Hvis ungdomsløpere melder seg på så må du huske å sette Født-feltet til en dato som gir alder < 17 år.

update name
	set feelevel = Switch(
		year(date())-year(fodt) < 17, 3,
		year(date())-year(fodt) >= 17, 1,
		fodt is null, 1
	);

Feil starttid

Under Sommercup 2024 fikk mange løpere automatisk samme starttid som arrangementsstart, uansett når de startet. Dette gjorde at Liveloxsporene ikke fungerte. En manuell fiks av databasen kan gjøres med (denne er laget med hjelp fra ChatGPT 4.0):

  1. Lag en midlertidig tabell med tiden mellom målgang og brikkeavlesning for hver løper
  2. Oppdater feltene starttime og intime i name-tabellen ved å lese av readtime og beregne seg fram til starttiden.

Lag midlertidig tabell med tid mellom målgang og brikkeavlesning

I dette tilfellet er kode 249 målpost og kode 250 er postnummeret til brikkeavlesningsenheten (MTR eller 250-enhet).

SELECT 
   ecard249.ecardno,
   (ecard250.times - ecard249.times) / (24 * 60 * 60) AS waitingTime
INTO TempWaitingTime
FROM 
   (SELECT ecardno, times 
    FROM ecard 
    WHERE control = 249) AS ecard249
INNER JOIN 
   (SELECT ecardno, times 
    FROM ecard 
    WHERE control = 250) AS ecard250
ON ecard249.ecardno = ecard250.ecardno;

Oppdater name med riktig klokkeslett

UPDATE name AS n
LEFT JOIN TempWaitingTime AS twt
ON n.ecard = twt.ecardno
SET 
    n.intime = IIf(twt.waitingTime IS NULL, n.intime, n.readtime - twt.waitingTime),
    n.starttime = IIf(twt.waitingTime IS NULL, n.starttime, n.readtime - twt.waitingTime - (n.intime - n.starttime));