Newsgroup: it.comp.lang.visual-basic
Titolo: Domandone di Teoria di ... come posso fare?

Domandone teorico incredibile, non riesco a trovare una soluzione su come
fare il tutto.
Al lavoro ho tre uffici.
In due si inseriscono i voli.
nel terzo invece si riuniscono i dati che sono creati dagli altri due uffici
e poi il giorno dopo (a volte anche 3-4 giorni dopo) si ridanno agli uffici
originatori dei dati di ritorno.
Esempio pratico:
il primo ufficio inserisce un volo:
Milano - Roma, decollo roa X1, atterraggio ora X2, equipaggio: pippo, pluto,
paperino.
Il secondo ufficio fala stessa cosa
Venezia - Parigi, decollo ora Y1, atterraggio ora Y2, equipaggio topolino,
minni, paperone.
Ora i due uffici usano generalmente persone diversenei voli, ma potrebbero
all'occorrenza usare persone dell'altro ufficio.
Alla fine della giornata, i voli previsti per il giorno dopo vengono portati
al terzo ufficio (si portati con un floppy).
Qui tutti i voli vengono messi insieme e si crea una unica lista dei voli.
Il giorno dopo, i voli vengono aggiornati e quindi si mette poi chi
realmente è adato in volo (nell'equipaggio che potrebbe cambiare per cause
varie), gli orari effettivi di decollo ed atterraggio, ma sopratutto i voli
potrebbero cambiare od essere modificati completamente, quindi non è detto
che ivoli previsti vengano poi volati.
Ora il casino è:
I dati li devo trasferire tra computer via floppy, si avete capto bene via
floppy. Niente rete, niente di niente.
Ora vorrei creare un programma che usi un DB per la cosa.
Il problema è come sincronizzare i DB tra i tre uffici.
Vorrei fare in modo che le persone dell'equipaggio sinao identificate
univocamente e quindi.... come faccio ad aggiornare tutti i DB se inserisco
la modifica solo in uno dei tre programmi?
Insomma ocme cavolo posso fare la sincronizzazione dei DB?
Purtroppo su un floppy non posso registrare un intero DB, in poco tempo
questi crescerebbe a dismisura (si devo teneretraccia di tutto quello che
avviene ed è avvenuto).
Ora se i computer fossero in rete -> problemi 0, basta usare bene i record e
le tabelle, ma dato che devo usare un floppy come cavolo posso tenere il
tutto sincronizzato?
Avevo pensato di usare una codifica delle operazioni sul DB, quindi usare
tipo:
1= inserimento
X = tabella Equipaggio
poi i dati tipo ID, NOme, Cognome.
Creo un record e lo registro su file.
1X1234PIPPO           GIOVANNI
Così facendo posso trasferire le info dal computer originario al coputer che
raccoglie le info. Il problema è: come cavolo passo poi le info al computer
del secondo ufficio?
Insomma vete qualche idea?
Non ditemi di mettere tutto online od usare dei CDRW per trasferire
giornalemnte i dati, i miei utonti sono molto utonti e non oso dirgli di
scriversi un CDRW e di sovrascrivere un DB. Ultimament sono arrivato al
punto di codificare i DB acces per evitare che la gente entrasse nei record
e li modificasse (sapete i soliti esperti del caso, che pensano di sapere
tutto e poi fanno solo casino).
Grazie a tutti per l'aiuto.

 tutto sincronizzato?
uhm... ma devi poter accedere al db completo (quindi di tutti i voli
passati) da tutti e tre gli uffici ?
Marco

 floppy. Niente rete, niente di niente.
Una soluzione potrebbe appunto essere quella che hai accennato tu .. ti devi
creare un log di tutte le modifiche apportate al DB quindi trasferirle
sull'altro PC ed importarle nell'altro DB .. stessa operazione dal secondo
al primo ...
Per esempio le cancellazioni non vanno effettuate fisicamente, ma devi
marcare o spostare i record perchè il secondo DB abbia movimentato proprio
quel record (c'è da stabilire qualche regola a priori)
se però i log sono molto grossi (ma non credo visto che l'update avviene
giornalmente) li devi compattare e se non basta fai installare dei bei
ls120.
Altra soluzione è usare il meccanismo di Replica ma mi sembra che in Access
non sia implementato ..
Comunque auguri per il lavoro ... il solo pensiero di sincronizzare 2 db a
mano mi terrorizza
Saluti

 ridanno agli uffici originatori dei dati di ritorno.
allora , il 3° ufficio lo chiamiamo Server
e Cl1 e Cl2 i due uffici che smazzano il lavoro ok, ora l'idea del tuo
record e' ottima , potresti aggiungere un campo al tuo record su floppy che
identifichi il mittente per organizzare una cosa tipo :
Al Server vengono portati i floppy  e vengono registrati sia nel DB sia in
due liste di scambio (poi capirai a che serve)
ok il server elavora e produce in ordine :
il floppy con le varie info da mandare a CL1 e CL2 e in piu' ci attacchi la
lista dell'altro client
in questo modo CL1 porta floppy a SERVER
...
SERVER DA a CL1 i dati + la lista del floppy di CL2
ok ora il programma client cosa fa ? es: CL1 Ciuccia i floppy
inserendo le modifiche nel proprio DB con i dati del CL2 e del Server
lo stesso fa CL2 , l'unica differenza la fa il server che ciuccia entrambi i
floppy , elabora i dati e le due liste (togliendo ad esempio un doppione ) e
poi ricrea i 2 floppy per CL1 e CL2 e aggiorna il suo Db
Fin qui diciamo che hai gia' risolto
Se vuoi farti una cosa sfiziosa potresti giocare anche col CRC32 applicato
ai db per vedere se combaciano ...
<pseudoCode>
_CLIENT2_ produce :
[MITTENTE] [ID] [TIPO OPERAZIONE ] [ECCC... ]
    Client1         3847563           Elimina             Tabella ecc ecc...
Il server lo riceve e crea la lista per il _CLIENT2_  e per il
[MITTENTE] [TIPO OPERAZIONE ] [ECCC... ]
  Server                    Elimina             Tabella ecc ecc...
quando riceve anche il floppy del client2 fa la stessa cosa e finalmente
aggiorna il db interno e puo' rilasciare i floppy di aggiornamento per i
client
NB: cosi non rischi che Cli1 elimini una voce e che cli2 la utilizzi .. o
cmq e' bene attendere tuti e due i dati per elaborarli e aggiornare il db
centrale
ora il floppy PER IL CLIENT1 conterra' : le operazioni del CLIENT2 e in +
( per sicurezza ) una riga tipo :
[MITTENTE] [ID] [TIPO OPERAZIONE ] [ECCC... ]
    Client1         3847563           Conferma             OK
oppure
    Client1         3847567           Conferma             "NO, Record non
presente sul DB centrale "
E' un po incasinato e lungo ma dimmi che hai capito !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

Spieg ha scritto:
[cut]
Secondo me l'unica possibilità è la creazione dei file di log per ogni
variazione (aggiunta, variazione, eliminazione) al database. Ovviamente ogni
informazione deve essere identicamente codificata sui vari (3) database.
Vedi anche tutto questo 3d:
http://makeashorterlink.com/?F295650A3
Sto realizzando l'idea espressa (la mia, intendo dire) per una
sincronizzazione completa (molto più complessa delle tue esigenze in quanto
riguarda clienti/fornitori/articoli/documenti/movimenti) proprio in questi
giorni.

 ha scritto nel messaggio
news:58t7a.161353$YG2.4...@twister1.libero.it...


 E' un po incasinato e lungo ma dimmi che hai capito !
Diamine se ho capito, ma ora ti aggiungo il quesito qui sopra, come pensi
sia meglio fare la cosa?
Ottim aiuto, davvero ottimo consiglio.

 giorni.
Bhe se hai qualche idea nuova puoi dirmi qualche cosa di più? Grazie mille
lupo.

 aggiornato, come posso fare il controlllo?
allora tu sei sul client1 , crei il floppy ( il db di client1 non viene
toccato ma vengono registrate le operazioni )
ora il tuo client lo puoi mettere in una situazione di stallo , cioe' non
accettare modifiche finche non si ricarica il floppi ,
porti il floppi al server , il server prende tutti e 2 i floppi calcola e
crea un file per client1 dicendo Ok ciccio , metti il floppi nel client 1 e
finalmente sul client1 vengono applicate le modifiche e viene "sbloccata"
consentendoti le modifiche !
in pratica dal momento in cui crei il floppi dai client al momento in cui
non reinserisci la risposta del server puoi Disabilitare le modifiche sui
client con un messaggio tipo:  "Aggiornamento in corso ... inserisci il
floppy server di oggi per modificare il db , altrimenti puoi solo consultare
i dati bello ! PS: Se sei il Boss metti internet che sta storia dei floppy
e' no stress !"


 potresti spiegarmi meglio?
Mah .. mi è venuto in mente che se avete l'anagrafica passeggeri (o quello
che è) replicata su + PC, mentre uno (Cl1) cancella un record (passeggero),
l'altro (Cl2) potrebbe inserirlo nel volo ...
quando andrai a sincronizzare i dati da Cl2 a Cl1, richiederai, per esempio,
di fare una INSERT INTO di un record Id inesistente
Saluti (e ancora auguri)

 Saluti (e ancora auguri)
Il programma serve per scrivere il "programmi dei voli del giorno dopo" e
poi passare il tutto in un unico ufficio.
I Client sono due Gruppi Volo.
Il Server è invece le Operazioni.
Ora ogni gruppo scrive i voli dei suoi velivoli e basta.
Poi ogni gruppo spara voli e tutti i dati al server via floppy.
Le operazioni possono modificare, cancellare od aggiungere voli.
Ora dopo aver effettuato i voli.... aggiornano i tempi di volo reali.
Ora dato che ogni client pensa solo ai suoi aerei..... ecco che il problema
non si pone.
Basta insomma strutturare bene il DB e le tabelle.
L'oggetto volo.... non è facile da usare, mi conviene sempre usare un
classico record, dato che.......... come potrei usare un oggetto "Volo" se
poi devo collegarlo ad altri valori?