avere un po 'di problemi per iniziare con questo problema, e non ci sono molte soluzioni googling.
Non posso usare MS Project per visualizzare diagrammi di Gantt, quindi voglio usare VBA per disegnare un bel diagramma di Gantt in Excel da un database Access di attività, tempo per completare l'attività, attività precedenti, ecc. So VBA, ma sto avendo problemi a concettualizzare questo problema. In altre parole, sono contento del disegno, della connessione di accesso, ecc ... solo avere problemi a capire come ottenere la data di inizio di ogni attività, dato ad ogni compito, potrebbe teoricamente influenzare ogni altra attività. Esempiomoltosempliceallegatodelproblema...robaCPMstandard,incuihounesempiodiAcomeprecedenteaicompitiBeD.Sepensoaquestointerminidi"percorsi", c'è un percorso ABC e un percorso ADE ... Se il mio codice calcola il punto di inizio A basato su ABC, allora non sarà sufficiente il tempo per il completamento di ADE andando in diretta, quindi A dovrebbe essere basato su ADE ...
Sembra semplice ma con 20 compiti con vari precedenti lungo la strada, diventa complicato ... cioè posso scorrere e trovare una serie di percorsi unici, e posso trovare il percorso "più lungo" ma che non necessariamente dammi la data di inizio minima valida per ogni attività, in quanto potrebbero esserci altre attività dipendenti che si diramano e richiedono più tempo, quindi il percorso originale deve iniziare prima, quindi tutte le attività all'interno di quel percorso sono "spostate", quindi qualsiasi calcolo su percorsi correlati dovrebbe poi essere spostato ...
Mi sento in dovere di scrivere di più su ciò che ho provato a dimostrare che ho almeno fatto uno sforzo, ma temo che possa sembrare giberiano! Ad ogni modo: il mio primo tentativo aveva una funzione ricorsiva che passava attraverso ogni attività, e quindi partendo da A sarebbe andata "ho i compiti successivi" se lo facesse, allora la funzione si chiamerebbe di nuovo per B, poi C, restituisci quello per B, restituiscilo per A ... E passerebbe in rassegna ciascuna delle attività successive se ne trova più di una, e scegli la data "minima" ... cioè restituisci E per D, poi D per A e scegli D su B (D < B)
Ma non potevo semplicemente seguire lo stesso approccio per ogni attività, come se avessi iniziato a B, poi ho trovato attività successive, non avrei ottenuto la "stessa B" come sopra ... perché quella B era dipendente su D ed E (a causa di A).
Quindi, sto pensando bene o devo includere un "look back" e un "look forward". Ma questo mi ha dato un po 'di mal di testa. O ho davvero bisogno di memorizzare le mie date per ogni attività mentre vado, quindi potrei memorizzare una data per A, B, C ... e quindi calcolare il percorso ADE, il che significherebbe che dovrei cambiare A, B, e C di nuovo ... ma una volta che avrò un gran numero di compiti, sembrerebbe che tornerei indietro e ricalcolare tutto ancora e ancora ...
Sono sulla buona strada? Sembra che io stia tendendo verso una sorta di "forza bruta" in cui sto solo ripetendo gli stessi calcoli più e più volte finché tutto non si "calma" e trova la data minima di inizio ... Sento che c'è un modo "intelligente" di farlo che mi manca?