Newsgroup: it.comp.appl.access
Titolo: Calendario partite

Salve,
navigando sui NG sono riuscito a creare una routine che mi crea il
calendario delle gare da disputare di un qualsiasi campionato con
qualsiasi numero di squadre. Riesco anche a creare l'alternanza
casa/fuori limitando ad un massimo di 2 gare di fila in casa/fuori.
Però nelle prime due giornate (anche di più se le squadre sono
superiori a 20) l'alternanza dovrebbe essere assoluta (chi ha giocato
in casa la prima gioca fuori la seconda) e questo non riesco a farlo
!!!
Avete dei consigli da darmi ho dei link da consultare (magari in
italiano)?

ho fatto una domanda scema???

 ho fatto una domanda scema???
Il problema non è che la tua domanda è scema: è relativa alla soluzione di
un problema in un database Access e come tale ha comunque diritto di
cittadinanza in questo NG.
Tu chiedi come modificare un codice VBA che già funziona all'interno del tuo
database, ma capisci bene che, senza conoscere la struttura delle tabelle ed
il codice in questione, non è per niente facile risponderti, visto che non
esiste un solo modo per programmare il calendario delle partite di un
campionato di calcio. Insomma solo avendo in mano il database si può tentare
di dare una soluzione ai tuoi quesiti, cosa non possibile visto che non puoi
inviare il tuo database sul NG.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

hai ragione.
mi spiego meglio:
la tabella PARTITE è così composta:
G contiene la giornata
A squadra in casa (mi serve in un secondo tempo e quindi lo uso in fase
preliminare)
B squadra in trasferta (come sopra)
CASA squadra in casa (fase definitiva)
FUORI squadra in trasferta (fase definitiva)
+ altri campi che ora non interessano
prima creo il calendario (solo andata) senza considerare il fattore
casa/fuori
 n_sq = 12: giornate = n_sq - 1: gare = n_sq / 2
 QRY = "PARTITE"
 Set RS = CurrentDb().OpenRecordset(QRY, dbOpenDynaset)
 CONTATORE = 1
 For giornata = 1 To giornate
 b1 = (n_sq - 1) - (giornata - 1)
 If giornata = 1 Then
 a1 = 1
 Else
 a1 = (n_sq - 1) - (giornata - 2)
 End If
 For x = 1 To gare
 RS.AddNew
 RS("ID_PARTITA") = CONTATORE
 RS("G") = giornata
 RS("A") = a1: RS("B") = b1
 RS("ORDINE_AND") = Rnd
 RS("ORDINE_RIT") = Rnd
 RS("GIORNO") = Int(Now())
 RS.Update
 CONTATORE = CONTATORE + 1
 a1 = a1 + 1: b1 = b1 - 1
 If a1 > n_sq - 1 Then a1 = 1
 If b1 = 0 Then b1 = n_sq - 1
 If x = gare - 1 Then b1 = n_sq
 Next
 Next
creo l'alternanza casa/fuori (sempre solo anadata)
 RS.MoveFirst
 Do Until RS.EOF
 If RS("G") / 2 = Int(RS("G") / 2) Then
 RS.Edit
 RS("CASA") = RS("B")
 RS("FUORI") = RS("A")
 RS.Update
 Else
 RS.Edit
 RS("CASA") = RS("A")
 RS("FUORI") = RS("B")
 RS.Update
 End If
 RS.MoveNext
 Loop
creo il ritorno:
 RS.MoveFirst
 QRY = "PARTITE"
 Set RS1 = CurrentDb().OpenRecordset(QRY, dbOpenDynaset)
 Do Until RS.EOF
 RS1.AddNew
 RS1("ID_PARTITA") = CONTATORE
 RS1("G") = RS("G") + giornate
 RS1("A") = RS("A"): RS1("B") = RS("B")
 RS1("ORDINE_AND") = Rnd
 RS1("ORDINE_RIT") = Rnd
 RS1("GIORNO") = Int(Now())
 RS1("CASA") = RS("FUORI")
 RS1("FUORI") = RS("CASA")
 RS1.Update
 CONTATORE = CONTATORE + 1
 RS.MoveNext
 Loop
 Set RS = Nothing
 Set RS1 = Nothing
In questo modo va quasi bene nel senso che ottengo le l'alternanza come
in un campionato vero.
L'unico problema e che le prime due giornate ho una squadra che gioca
due partite di fila in casa e una che ne gioca due di fila fuori ...
Hai qualche idea?