Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Comparare DBF...
 Comparare DBF
 
 11/26/2010 4:06:28 PM
User is offlinestefan_JKSL
62 posts


Comparare DBF
 (N/A) Modified By stefan_JKSL  on 11/26/2010 5:08:00 PM)
Am urmatoarea situatie : un tabel clienti cu multe inregistrari situat pe server.
Cand este accesat de pe statii afizarea lui dureaza destul de mult, motiv pentru care ma gandesc sa-l copii pe fiecare statie pentru a-l accesa local.
Problema apare cand o statie modifica acest tabel si restul statiilor trebuie sa actualizeze copia lor.
Exista vreo posibilitate de a compara copia cu originalul de pe server si sa fac actualizarea numai daca originalul a suferit modificari (adaugare, modificare sau stergere inregistrari) ?
Nu am gasit nicio functie sau vreo solutie pe forum.
M-am gandit sa creez un tabel pe server care sa retina modificarile survenite la acest tabel iar statiile sa retina detalii despre copie si sa o compare cu detaliile de pe server.
Dureaza mai putin sa accesezi un tabel cu 1 inregistrare decat unul cu 5.000-6.000.
Exista vreo solutie mai eleganta? Nu stiu de ce dar am impresia ca prin solutia mea reinventez apa calda. :))
Multumesc anticipat pentru orice sugestie.
 11/26/2010 6:35:24 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Comparare DBF
 (N/A) Modified By Daniel Buduru  on 11/26/2010 7:40:00 PM)
Procedeul se numeste miroring si este implementat pe serverele sql (mai toate).
O implementare simpla ar fi asta:
- in tabela replicata ai obligatoriu o cheie primara si un timestamp (momentul ultimei actualizari a inregistrarii)
- o tabela log in care tii id-ul si timestamp al ultimei inregistrari actualizate
- un trigger actualizeaza automat timestamp la orice modificare a inregistrarii in tabela replicata si actualizeaza id si timestamp in tabela log
- pe statie aduci tabela si tabela log
- periodic verifici daca timestamp di tabela log de pe server este egal cu timestamp din logul local.
- cand timestamp de pe server difera de cel de pe local, sincronizezi tabela locala cu serverul selectand de pe server doar inregistrarile cu timestamp>timestamp local, apoi sincronizezi si logul
La actualizare/inserare de inregistrari noi, generate pe statie, poti opta pentru operarea direct pe tabela de pe server, apoi sincronizare.
Poti face si inserarea/modificarea local si apoi sa actualizezi serverul, dar cred ca e o complicatie inutila.

Edit:
Ceea ce am descris, cu actualizarea direct pe server, e replicare, nu mirroring. Mirroring ar fi daca se actualizeaza tabela locala iar sincronizarea se face in ambele sensuri.

Daniel Buduru
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Comparare DBF...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement