Cum să obțineți un avertisment atunci când numărul de înregistrări dintr-un tabel atinge o limită specifică

Unul dintre principalele motive pentru care oamenii trec de la utilizarea unei foi de calcul la o bază de date este că volumul de informații pe care le stochează a depășit ceea ce Excel este capabil să gestioneze confortabil. Dar trecerea la o bază de date nu scapă complet de această problemă, deoarece tabelele bazei de date au limite pentru numărul de înregistrări pe care le pot deține. Dar cum poți ști când o masă se apropie de această limită? Sau când pur și simplu devine prea mare și este nevoie de ceva arhivare a datelor? Acest articol vă va arăta.

Limita de dimensiune a tabelelor de acces

Indiferent dacă știți sau nu, Microsoft Access are o limită pentru cât de mare poate obține orice tabel dat (puteți găsi această limită verificând site-ul oficial Microsoft, deoarece se modifică în funcție de versiunea pe care o utilizați). De exemplu, în Access 2000, un tabel poate conține până la 1 GB de informații. Deși poate părea mult, este surprinzător de ușor să ajungi la acel nivel dacă nu ești atent (sau dacă tipurile de câmpuri din tabel nu sunt selectate/dimensionate corespunzător).

Așadar, întrebarea pe care ar trebui să ți-o pui nu este „voi atinge vreodată acea limită”, ci ar trebui să te întrebi „cum ar trebui să mă asigur că știu că o abordez bine înainte de a deveni o problemă” – la urma urmei, este mai bine să evitați a baza de date Access coruptă mai degrabă decât să încerce să-l repare.

Cod VBA pentru a preveni tabelele de acces supradimensionate

O modalitate de a realiza acest lucru este să urmăriți numărul de înregistrări din tabel și exact asta vom face cu codul nostru VBA.

În primul rând, să definim ce vrem să facă codul nostru:

„Dată un nume de tabel, afișați un mesaj când tabelul atinge o „limită de avertizare” dată”

Folosind codul de mai jos, veți putea afișa un mesaj de avertizare care vă va spune când tabelul specificat (folosind „TableName”) conține x număr de rânduri sau mai multe (setat cu „WarningLevel”).

NB: Am inclus gestionarea de bază a erorilor pentru a ține cont de momentele în care, de exemplu, este posibil să scrieți greșit numele tabelului când apelați subdirectorul.

Funcție publică GetTableSize (TableName As String, WarningLevel As Long) Dim errCode As Long Dim dbs As Database Dim tdf As TableDef On Error Reluare Next Set dbs = CurrentDb ' Următoarea linie selectează definiția tabelului folosind numele furnizat - dacă există o eroare (mai probabil din cauza numelui tabelului scris greșit, codul va sări la handler-ul de erori la sfârșitul sub-) Set tdf = dbs.TableDefs(TableName) errCode = err.Number On Error GoTo BadTable If tdf.RecordCount >= WarningLevel Then MsgBox TableName & " are " & tdf.RecordCount & " rânduri, luați în considerare arhivarea unora dintre aceste date", vbExclamation, "Table Size Warning" End If BadTable: If errCode <> 0 Then MsgBox "O eroare - ați folosit dreptul TableName?", vbCritical, "Nu se pot încărca detaliile tabelului" Set tdf = Nothing Set dbs = Nothing End Sub

Explicarea codului

Most a codului se explică de la sine. Mai întâi noi start prin obținerea unei referințe la baza de date curentă (dbs), apoi încercăm să deschidem definiția pentru tabelul în cauză (tdf). Dacă apare o eroare la selectarea tabelului, este mai mult decât probabil că tabelul nu există, deoarece numele furnizat a fost scris greșit. Acum că avem o referință la definiția tabelului, putem verifica câte rânduri sunt în tabel folosind proprietatea „RecordCount” pe care o comparăm cu „Limita de avertizare” și să acționăm în consecință.

Folosind Codul

Puteți apela în mod natural acest cod de oriunde în baza de date - dacă utilizați Access 2000 sau o versiune superioară, puteți utiliza următoarea soluție, altfel va trebui să creați o macrocomandă AutoExec pentru a rula acest cod de fiecare dată când deschideți baza de date sau adăugați apelul evenimentului la un eveniment de formular.

Accesați numai 2000 și o versiune superioară

Microsoft a introdus capacitatea de a executa acțiuni specifice împotriva unui tabel atunci când, de exemplu, înregistrările au fost inserate sau șterse. Din păcate, rularea codului VBA nu este una dintre aceste acțiuni, dar veți fi încântați să aflați că există o soluție relativ ușoară.

  1. Cu tabelul relevant deschis, faceți clic pe bara de meniu „Tabel”.
  2. Deoarece monitorizăm tabelele pentru creștere, cel mai bine este să folosiți evenimentul „După inserare”, așa că faceți clic pe acestaFaceți clic pe „După inserare”
  3. Deoarece nu putem folosi acțiunea obișnuită „RunCode”, vom folosi în schimb acțiunea „SetLocalVar”, așa că faceți clic pe acea opțiune din lista derulantă de acțiuniUtilizați acțiunea „SetLocalVar”.
  4. Numele pe care îl dați nu este important, așa că numiți-l cum doriți – adică dummyVariable
  5. În expresie, puteți introduce numele funcției dvs. de mai sus, împreună cu parametrii – deci, de exemplu – dacă aș monitoriza un tabel „vânzări”, aș introduce următoarele în câmpul Expresie: GetTableSize(„vânzări”,100000 )Setați Numele și Expresia
  6. Salvați acțiunea și închideți-o.

Acum, codul va rula ori de câte ori adăugați noi înregistrări la tabel și veți fi avertizat ori de câte ori tabelul atinge numărul stabilit de înregistrări - exact ceea ce ne dorim!

Introducerea autorului:

Mitchell Pond este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara SQL Server eroare și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com

Un răspuns la „Cum să obțineți un avertisment atunci când numărul de înregistrări dintr-un tabel atinge o limită specifică”

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *