Accesul Microsoft

convertită în PDF prin HupBaH9I

∙ Tranzacțiile utilizează date. stocate în memoria tampon de tranzacții. nu datele de pe disc. pentru a utiliza cele mai noi date.







∙ Tranzacțiile nu pot suprascrie un fișier index cu comanda

∙ Tranzacțiile pot fi utilizate numai cu tabele. aparținând bazelor de date.

Dacă ați activat blocarea manuală a unui tabel sau a unui fișier în timpul unei tranzacții utilizând funcțiile FLOCK () și RLOCK (). este necesar să scoateți încuietoarea. Comanda END TRANSACTION nu elimină blocarea.

În tranzacțiile imbricate, comenzile ROLLBACK și END TRANSACTION lucrează cu modificări. care au avut loc după ultima comandă BEGIN TRANSACTION.

Modificările din interiorul tranzacțiilor imbricate nu vor fi scrise pe disc. până la finalizarea celui mai înalt nivel. adică cea mai recentă comandă END TRANSACTION nu va fi executată.

Dacă tranzacțiile sunt efectuate pe aceleași date. atunci avantajul este acea schimbare. care a fost efectuată ultima dată. indiferent de. la ce nivel se află. De exemplu.

REPLACE numără CU 103 pentru număr = 203

Înlocuiți numărătoarea CU 203 pentru numărul 103

În tabel, valoarea câmpului este încă 203.

Respingem acest exemplu după cum urmează. că ultima comandă REPLACE va fi executată înainte de următorul nivel de cuibărit.

Înlocuiți numărătoarea CU 203 pentru numărul 103

REPLACE numără CU 103 pentru număr = 203

Acum, valoarea câmpului va rămâne aceeași. care a fost cazul - 103.

Câteva sfaturi pentru creșterea productivității când lucrați într-o rețea în aplicațiile Microsoft Visual FoxPro

Dacă stația locală are suficient spațiu pe hard disk sau suficientă memorie RAM, puteți îmbunătăți performanța. plasarea fișierelor temporare pe un disc local sau pe un disc RAM. Redirecționarea acestor fișiere pe un disc local sau pe o unitate de memorie RAM crește randamentul prin reducerea accesului la unitatea de rețea. Puteți specifica o locație alternativă pentru aceste fișiere. Includerea expresiilor EDITWORK, SORTWORK, PROGWORK și TMPFILES în fișierul CONFIG.FPW.

Dacă este posibilă sortarea datelor. atunci este logic să o faceți. deoarece lucrul cu mesele este mai rapid. dacă nu aveți indexuri activate. Adică folosiți comanda de căutare. și apoi dezactivați ordinea indexului.

Dacă există posibilitatea de a lucra exclusiv cu orice fișiere. apoi utilizați această caracteristică. deoarece în modul exclusiv, accesul la mese este mai rapid. Pentru a reduce probabilitatea accesului simultan la o înregistrare sau la o masă.

scurta timpul de blocare. care pot fi implementate. blocarea înregistrărilor numai atunci când salvați datele pe disc. dar nu în timpul editării. Tamponarea optimistă vă oferă cel mai scurt timp de blocare.

Personalizarea cocii de acces vă permite să setați modurile implicite pentru deschiderea bazelor de date și a tabelelor. Pentru aceasta, utilizați comanda Opțiuni din meniul Instrumente. după

Accesul Microsoft

convertită în PDF prin HupBaH9I

va apărea caseta de dialog. prezentat în Fig. 7.20, trebuie să mergeți la fila Altele. După asta. Cu ajutorul butonului "Default Lock", puteți selecta tipul de blocare de care aveți nevoie.

Dacă selectați butonul "Lipsește", puteți seta numai o blocare de scriere non-rigidă. Cu această blocare, toate intrările editabile sunt disponibile pentru alți utilizatori. dar în același timp. când editați înregistrarea și încercați să salvați modificările. apoi intrați în una din cele două opțiuni. În primul rând. foarte simplu. Nimeni nu a editat înregistrarea, iar modificările efectuate sunt scrise pe disc. În al doilea rând. după ce ați început să editați datele. cineva a reușit să le schimbe înainte de tine și să scrie schimbări pe disc. În acest din urmă caz, apare o casetă de mesaj. în care vor fi oferite trei variante ale unei ieșiri din situația dezvoltată. ignora schimbările altor persoane și scrie pe disc. Copiați înregistrarea modificată în clipboard. Salvați modificările altor persoane și anulați-le propriile lor. Acest mod este denumit uneori o "optimistă" blocare.

Dacă selectați un blocaj pentru ca înregistrarea să fie modificată. atunci o înregistrare va fi blocată pentru alți utilizatori. pe care îl editați. și înregistrările vecine. deoarece Access stabilește o blocare a paginii. Pagina pentru tabelele Access este un set de înregistrări de dimensiune de 2 kilobyte. Această încuietoare este numită uneori "pesimistă".

Dacă selectați să blocați toate intrările, ceilalți utilizatori nu vor putea deschide tabelul. În acest caz, este necesar să se acorde atenție acestui fapt. că dacă lucrați cu datele folosind

formular. puteți seta blocarea pentru aceasta utilizând proprietatea RecordLocks, care poate diferi de setările implicite pentru sesiunea curentă de acces. Aceste tipuri de încuietori corespund exact acelor tipuri. pe care le-ați setat utilizând caseta de dialog Opțiuni.







Proprietatea RecordLocks este prezentă în plus față de formularele din interogări și rapoarte. În acest caz, pentru rapoarte, nu există posibilitatea de a seta blocarea înregistrării variabilelor. Cel mai probabil pentru că. că raportul nu le poate modifica.

În caseta de dialog Opțiuni, puteți seta modul implicit pentru deschiderea bazelor de date. Dar vă rugăm să rețineți. că modul de acces la bazele de date poate fi selectat când le deschideți utilizând dialogul de deschidere. Dacă bazele de date sunt deschise exclusiv. atunci alți utilizatori nu vor putea să le deschidă. astfel încât acest mod nu este potrivit pentru utilizarea în rețea.

convertită în PDF prin HupBaH9I

Pe lângă mijloacele vizuale de setare a diferitelor moduri de blocare. puteți utiliza obiectul Aplicație pentru a le modifica.

Următorul exemplu folosind SetOption Application metoda obiect set blocare pesimistă (blocare pagină), în timp ce folosind o metodă și GetOption MsgBox () Numărul de ieșire în funcție de blocul curent.

Public Sub mygetoption () Dim mystr ca șir

Aplicație.SetOption "Blocare implicită", 2

mystr = Application.GetOption ("Default Lock") MsgBox (mystr)

Pentru formulare. rapoarte și interogări, accesați proprietatea RecordLocks, dar rețineți. asta pentru

Deschiderea instanțelor de obiecte pe proprietăți diferite de mașini de utilizator nu se va schimba. Asta este. schimbarea proprietății unui obiect. în același timp trebuie să convingeți utilizatorul să închidă și să redeschidă obiectul. astfel încât să poată profita de toate beneficiile noului înțeles. Exemplu de modificare a proprietății Recordlocks pentru o interogare.

Public Sub-myqueryproperties ()

Dim db ca bază de date, qd Ca QueryDef

Set db = DBEngine.Workspaces (0) .Databases (0) db.QueryDefs ( "interogarea mea de masă"). Proprietăți ( "recordLocks") = 2 End Sub

Exemplu de modificare a proprietății RecordLocks pentru un formular. Public Sub ActiveFormRecordLocksChange

Screen.ActiveForm.RecordLocks = 2 End Sub

Vă rugăm să rețineți. asta. ca regulă. În timpul lucrării din formular pentru a schimba această proprietate nu are sens. pentru că în ciuda asta. pe care îl instalați. Formularul va folosi același tip de blocare.

1. Creați o funcție. care va conține o singură linie. ActiveFormRecordLoc1ksChange, adică un apel de procedură. care poți fi numit diferit.

2. Creați o macrocomandă. care execută o singură acțiune RunCode, argumentul căruia va fi chemarea funcției noastre. asta. de exemplu. poate fi numit fActiveFormLocksChange.

3. Creați o bară de instrumente personalizată. în care trebuie să trageți o imagine grafică a macrocomenzii din fila Macrocomenzi.

După terminarea acestei secvențe de acțiuni. veți obține o bară de instrumente personalizată cu un singur buton. care în modul Design va seta proprietatea RecordLocks la valoarea dvs. de 2, care corespunde blocării înregistrării variabile. Având o fantezie. vă puteți completa bara de instrumente cu instrumente mai sofisticate. dar baza pentru tehnologia creării lor este descrisă mai sus.

Evident. că puteți face același lucru și pentru rapoarte.

Pentru a fi sigur. că toate operațiunile. pe care doriți să o desfășurați. au fost îndeplinite. utilizați metodele BeginTrans, CommitTrans și RollBack ale obiectului Workspace.

Metoda BeginTrans pornește tranzacția. O tranzacție este o serie de modificări. care sunt efectuate asupra datelor și structurii bazei de date. Dacă din orice motiv operația. incluse în tranzacția curentă. nu poate fi finalizată. atunci sistemul revine la starea inițială. În acest caz, amintiți-vă. că ar trebui să existe suficient spațiu pe disc pe stația de lucru. deoarece atunci când tranzacția este executată, toate informațiile despre operațiile din aceasta sunt înregistrate pe disc.

Tranzacțiile trebuie terminate prin accesarea metodei CommitTrans. Tranzacțiile pot fi imbricate. nu uita. pentru asta. pentru a finaliza o tranzacție la nivel superior. trebuie să completați mai întâi tranzacțiile imbricate. Dacă dintr-un motiv oarecare aplicația nu poate accesa metoda CommitTrans, sistemul va reveni la starea inițială.

Numărul de tranzacții imbricate din Access, precum și din Visual FoxPro, nu poate depăși cinci. În acest caz, acordați atenție următorului fapt. Metoda CommitTrans pentru obiectul curent Spații de lucru face ca toate modificările să fie ireversibile. În același timp. dacă tranzacția este imbricată.

convertită în PDF prin HupBaH9I

retragerea tranzacției la un nivel superior va aduce sistemul la starea inițială.

În exemplul de mai jos, o tranzacție este folosită pentru a trece la a doua intrare și a modifica valoarea pentru câmpul Nume ultim. Înainte de finalizarea tranzacției, nivelul de vârf este invitat să ia o decizie. efectuați modificări pe disc sau nu.

Dim db Ca bază de date, wks Ca spațiu de lucru, primul ca Recordet Dim apt ca Integer

Setați wks = DBEngine.Workspaces (0) Setați db = wks.Database (0)

Set rst = db.OpenRecordset (, _ dbOpenDynaset "masa mea") wks.BeginTrans

rst.MoveLast rst.AbsolutePosition = 2 rst.Edit

RST. SURNAME = "Makasharipov" rst.UPDATE

Otvet = MsgBox ( "Change", vbYesNo + _ vbDefaultButton1, "Decizia ta") Dacă Otvet = vbYes Atunci

wks.Rollback End Dacă

Pe lângă tranzacțiile imbricate din Access, puteți utiliza tranzacții paralele. Aceste tranzacții funcționează independent una de cealaltă. Dar trebuie să creați un alt obiect al spațiului de lucru tip. În consecință, fiecare tranzacție se completează independent unul de celălalt.

Următorul exemplu va funcționa. Doar dacă este setat modul de blocare "Nu". În acest exemplu, uitați-vă la ultimele două linii de cod. În locuri, chiar dacă schimbați aceste linii. nimic nu se va schimba. care este, a doua tranzacție nu funcționează cu datele. stocate efectiv pe disc.

Public Sub multipletrans ()

Dim db Ca DATABASE, spt Ca spațiu de lucru, rst Ca db1 _ Recordset Dim Ca DATABASE, wks1 Ca spațiu de lucru, rst1 Ca _ Recordset Set WKS = DBEngine.Workspaces (0)

Setați db = wks.Database (0)

Set rst = db.OpenRecordset ( "masa mea", _ dbOpenDynaset) Set wks1 = DBEngine.Workspaces (0)

Setați db1 = wks1.Databases (0)

Setați rst1 = db1.OpenRecordset ("tabelul meu", _ dbOpenDynaset) wks.BeginTrans

rst.FindFirst "[Nume] = 'Clinton'" rst.Edit

RST. SURNAME = "Dole" rst.UPDATE wks1.BeginTrans

rst1.FindFirst "[Nume] = 'Dole'" rst1.Edit

RST1. SURNAME = "Clinton" rst1.UPDATE wks.CommitTrans wks1.CommitTrans

Tranzacțiile sunt globale în cadrul obiectului Workspace. Prin urmare, tranzacțiile dvs. pot cuprinde mai multe baze de date și. respectiv. toate seturile de obiecte. care sunt conținute în ele.

Obiectele de tip Database și Recordset au o proprietate Tranzacții care poate fi Adevărat sau Fals. Valorile lor depind. puteți utiliza metodele BeginTrans, CommitTrans și Rollback pentru a lucra cu aceste obiecte. Uneori are sens să verifici







Articole similare

Trimiteți-le prietenilor: