Actualizarea datelor în formulare și controalele

O situație similară apare chiar și în modul single-utilizator atunci când este utilizat sub forma unei casete combo, sursa de date pentru care este o tabelă sau o interogare. Dacă intrările din tabelul sursă au fost adăugate în caseta listă nu sunt apar automat - trebuie să executați interogarea. În casetele combo plus, pentru controalele care necesită actualizare a datelor afisate includ liste și controlul subformular, obiecte OLE și controale calculate, care conțin funcții statistice pe un subset de înregistrări, cum ar fi DLookUp () și DSUM ().

Pentru a actualiza înregistrările în forme, tabele sau de control, utilizați actualizarea macro (reinterogare), PokazatVseZapisi (ShowAllRecords) și ObnovitObekt (RepaintObject).

Luați în considerare exemplul folosind un macro pentru a actualiza. În formularul „clienți“ (clienți) este câmpul cu lista de „Țară“ (Țară). Datele sursă pentru acest domeniu este o cerere care selectează valoarea câmpului „Țară“ (Țară) de masă „Clienții“ (clienți):

În cazul în care clientul intră într-un tabel se adaugă la noul nume al țării, lista țării nu apare, deoarece solicitarea va fi executat din nou numai atunci când deschideți formularul. Pentru a actualiza lista țărilor înainte, trebuie să atribuiți evenimentul După actualizare (după actualizare) formează o listă macro Klienty.Obnovlenie țărilor, care este compus dintr-o singură actualizare macro (reinterogare) la valoarea „țării“ Argumentul (Țară) (fig. 11.18).

Fig. 11.18. Atribuirea evenimentului macro a formularului după actualizarea

Actualizare Macro (reinterogare) actualizează doar un singur obiect, așa că, dacă sub formă de controale există care necesită actualizări pentru a afișa date și macro atribuit acestui formular, utilizați o actualizare macro (reinterogare) cu o valoare goală a argumentului, acesta va fi actualizat numai sub formă de înregistrări. Pentru fiecare astfel de control este necesar să se utilizeze un macro separat. În cazul în care acest macro ca argument conține numele controlului, atunci când acesta este executat actualizat doar elementul. Intrările în forma în sine nu este actualizat.

Cu actualizarea macro (reinterogare) poate actualiza datele într-o formă inactivă, mai degrabă, nu în forma în care este atribuit macro. Cu toate acestea, în acest caz, trebuie mai întâi VydelitObekt macro (The SelectObject), care va aduce focalizarea la forma dorită, pentru ao activa (atunci focalizarea poate fi adus înapoi).

Macro PokazatVseZapisi (ShowAllRecords), așa cum sa menționat mai sus, anulează efectul filtrului și re-scanează înregistrările sursă. Acesta este adesea folosit pentru a actualiza datele din subformular.

ObnovitObekt Macro (RepaintObject) se aplică numai obiectul bază de date (tabel, interogare, formular, raport, macro-uri de pagină și modulele) și nu se aplică în cazul controlului. Acesta realizează o actualizare imediată a unui astfel de obiect deschis (în cazul în care numele obiectului nu este specificat, obiectul activ este actualizat), deși nu este re-executa interogarea la sursa de date. actualizare obiect nu are nici un efect asupra. afișa înregistrările noi și șterse, așa cum se întâmplă atunci când actualizarea macro (reinterogare). Tipic ObnovitObekt macro (RepaintObject) este utilizat pentru a afișa rezultatele acestor modificări utilizând macro ZadatZnachenie (SetValue) și să recalculeze valorile expresiilor calculate în controalele.