Orario .dbf
è un elenco di lezioni che devono fare i docenti
per ogni docente ci sono x record a seconda delle ore di cattedra
per esempio il prof Bartolini ha 11 ore di cattedra materia RELIGIONE (12) e nell'archivio ci sono elencate le sue lezioni
per esempio
ogni volta che devo inserire il giorno e l'ora ( giorno 1-6 e ora 1-6) vado a controllare se la classe e le aule solo libere
quindi ho alcune funzioni che devo ricostruire
Classelib()
AulaLib()
che sono quasi identiche cambiano solo per cosa bisogna ricercare la classe o le aule
- Code: Select all Expand view RUN
static function CLASSELIB(Arg1, Arg2, Arg3)
local Local1:= orario->classe, Local2:= orario->(RecNo()), ;
Local3:= 1
orario->(dbSetOrder(3))
for Local3:= 0 to Arg1 - 1
if (orario->(dbSeek(Local1 + Str(Arg2, 1) + iif(Arg3 + Local3 ;
== 10, "0", Str(Arg3 + Local3, 1)))))
orario->(dbSetOrder(8))
orario->(dbGoto(Local2))
return .F.
endif
next
orario->(dbSetOrder(8))
orario->(dbGoto(Local2))
return .T.
********************************
static function AULALIB(Arg1, Arg2, Arg3)
local Local1:= orario->aula, Local2:= orario->(RecNo()), Local3:= 1
orario->(dbSetOrder(4))
for Local3:= 0 to Arg1 - 1
if (orario->(dbSeek(Local1 + Str(Arg2, 1) + iif(Arg3 + Local3 ;
== 10, "0", Str(Arg3 + Local3, 1)))))
orario->(dbSetOrder(8))
orario->(dbGoto(Local2))
return .F.
endif
next
orario->(dbSetOrder(8))
orario->(dbGoto(Local2))
return .T.
gli indici di orario sono
- Code: Select all Expand view RUN
INDEX ON str(PROF,3) TAG ORARIO1 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON (str(PROF,3)+upper(CLASSE)+upper(GG_ORA)+ORESEQ) TAG ORARIO2 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON (upper(CLASSE)+upper(GG_ORA)) TAG ORARIO3 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON (upper(AULA)+upper(GG_ORA)) TAG ORARIO4 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON ((str(GRUPPO,3))+upper(GG_ORA)) TAG ORARIO5 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON ((str(PROF,3))+upper(GG_ORA)) TAG ORARIO6 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
INDEX ON (str(MATERIA,3)+str(PROF,3)+ORESEQ) TAG ORARIO7 EVAL (oProgress:SetPos(nProgress++), Sysrefresh()) EVERY 1
poi la vecchia procedur ain dos crea altri due file index Orario.$$1 e orario $$2
ma non si capisce molto
- Code: Select all Expand view RUN
- or->(dbCreateIndex("orario.$$1", ;
"ma->prec + do->punti", {|| ;
(ma->(dbGoto(or->materia)), ;
do->(dbGoto(or->prof)), ma->prec + ;
do->punti + eval({|| (DevPos(14, 14), iif(!EOF(), ;
DevOut(Replicate("²", RecNo() * 51 / LastRec())), Nil), ;
"")}))}))
or->(dbCreateIndex("orario.$$2", ;
"or->classe + str( or->gruppo, 3 ) + or->gg_ora", ;
{|| or->classe + Str(or->gruppo, 3) + or->gg_ora + ;
eval({|| (DevPos(14, 14), iif(!EOF(), DevOut(Replicate("²", ;
RecNo() * 51 / LastRec())), Nil), "")})}))
prima di salvare il giorno e l'ora della lezione corrispondente la procedura vede se la classe e le aule solo libere però è strano perchè mentre per le classi il controllo mi puo stre bene per le aule no perchè è logico per esempio che la classe 1A stia alla'aula 1A anche se per alcune materie è possibile che l'aula per esempio la palestra sia occupata