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
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
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
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