Newsgroup: it.comp.lang.visual-basic
Titolo: Confronto Record e modifica record

Salve, ho un piccolo problemino. Ho due database, uno in locale e un altro sul web. Visto che il database web, alcuni suoi campi sono soggetti a modifiche, ho la necessità di sincronizzare i due database. Ho provato ad usare il seguente metodo:
For N = 0 to DataGrid.ApproxCount
DataGrid.Col = 1
DataGrid.Row = N
Next N
Questo sistema funziona, ma arrivato al 12° record, la griglia si sballa, cioè anzichè leggere 1 record alla volta me ne legge 5 alla volta.
Qualcuno può darmi un suggerimento a riguardo?
Grazie
Attendo un Vostro aiutino.
--
Maxtor

 Maxtor
Se il database è msde o un sql potresti inserire un campo timestamp che
poi confronti con il tuo locale, se sono diversi vuol dire che il record è
stato variato.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:sqLYd.1049342$35.38...@news4.tin.it...

Premesso che non ho capito bene il tuo metodo, generalmente in questi casi 
ci sono due approcci:
 1) se il db "master" (quello web se ho capito bene)  e "slave" sono dello 
stesso tipo e supportano funzionalità di replicazione (sql server 
enterprise, oracle, e access !!!), il tuo problema si risolve a livello 
sistemistico senza scrivere una linea di codice;
 2) altrimenti, se devi gestire la cosa manualmente, devi far creare al db 
master (o all'applicativo che lo accede in scrittura) una tabella "di 
sincronizzazione" contenente la sequenza di tutti i sql di modifica (inset, 
delete, update) inviati al db master (cosa che potrebbe risultare 
semplicissima se l'applicativo è strutturato con un Data Layer, cioè una 
classe che gestisce tutte le interazioni con il DB). Se il db supporta i 
trigger (SQL server, MSDE, oracle...) puoi usare quelli, altrimenti ci deve 
pensare l'applicativo. La procedura che sincronizzazione non fa altro che 
inviare tutti gli statement sql presenti nella tabella di 
sincronizzazione.al
 db locale e poi svuotarla, il tutto nell'ambito di una 
singola transazione.
Peraltro il metodo 2) è anche quello utilizzato dietro le quinte dai db 
"seri" per gestire le repliche "single master"; è molto affidabile se 
realizzato con un pò di attenzione funziona bene anche se il master viene 
modificato durante la sincronizzazione.
Ciao
Elef
marco 

Grazie per avermi risposto, il metodo che mi interessa è la tua 1° ipotesi.
Ma non riesco a capire come iniziare.
Hai un esempio anche banale a riguardo?
Scusa se sono un pò rompiscatole..

<Sostituisci questo testo con il tuo messaggio!>
--
Maxtor


Grazie per avermi risposto, ma come creo un campo timestamp?
Hai un esempio a riguado?
Grazie per avermi risposto :)
--
Maxtor

 Grazie per avermi risposto :)
E' un tipo di dato di sqlserver.
La soluzione ottimale però credo sia quella che ti è stata già proposta e
cioè quella di attivare dei trigger che fanno il log di tutte le
transazioni da riapplicare successivamente nell'altro ambiente.


>
Non mi hai detto che db usi.
Per esempio se sei in Access, apri il db "web", e da strumenti scegli Crea
Replica. Questa operazione aggiunge dei campi e delle tabelle nascoste al db
master, e crea un altro mdb, la replica.
Quando devi sincronizzare, apri la replica e gli dici "sincronizza". L'ho
usato parecchio tempo fa e funzionava solo se dalla replica riuscivi a
vedere il master via file share. Non so se negli access più recenti si
riesca a sincronizzare anche via una porta IP.
Ogni tanto faceva dei casini ma probabilmente era perché cercavo di
sincronizzare attraverso una connessione RAS molto instabile.
Sugli altri db è un pò più complicato e non ho esempi sotto mano. Cerca
nella documentazione relativa
Ciao
Elef