Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Робота з записами і полями





Застосувати фільтрацію, змінити значення якого-небудь поля в базовому наборі даних або навіть змінити базовий набір можна безпосередньо за допомогою властивостей самої форми та елементів управління.

наприклад:

Me! [ Повна ціна ] = Me! [ Ціна] * Me! [ Кількість]

Me.Filter = " [ Адреса ] Like '* " & Me! [ ПолеУсловіяПоіска ] & " * '"

Me.FilterOn = True

Якщо є бажання читати і змінювати дані в деякому полі базового набору, але не бачити його на екрані, то досить помістити елемент керування Поле на форму і задати властивість Visible в False. Але прямий доступ до базового набору в Access неможливий. Можна лише створити динамічну копію базового набору і синхронізувати всі вироблені дії з нею з базовим набором самої форми. Для прямого доступу до записам і полях використовується об'єкт Recordset. Є чотири типи Recordset об'єктів - table, dynaset, snapshot і forwarrd - only:

1. Table: Може бути створений тільки на основі існуючої або приєднаної таблиці. Надає доступ до всіх методів і властивостей таблиці, а також до індексів, що дає набагато більш швидкий метод пошуку (метод Seek);

2. Dynaset - може бути створений на основі таблиці або запиту. Дозволяє оновлювати дані в багатотабличних запитах і в запитах до зовнішніх БД. Оновлення Dynaset об'єкта призводить до автоматичному оновленню всіх що у ньому таблиць;

3. Snapshot - створює статичну копію і існує тільки в той час, коли він створений. наступні зміни таблиць на нього не впливають;

4. Forward - only створює статичну копію з переглядом тільки в прямому порядку.

Для створення об'єкта типу Recordset використовується метод OpenRecordset:

Set variable = database.OpenRecodset (source [ type, options, lockedits ]), або

Set variable = object.OpenRecodset ([ type, options, lockedits ]), де database - це змінна типу Database; object - змінна типу TableDef або QueryDef; source - посилання на об'єкт типу TableDef або QueryDef; type - тип динамічного набору (може приймати такі значення: dbOpenTable, dbOpenDynaset, dbOpenSnspshot dbOpenForwardOnly); options може приймати такі значення: dbAppendOnly, dbReadOnly, dbForwardOnly,...; lockedits - аргумент, що визначає дозвіл конфліктів в багатокористувацьких БД (може приймати такі значення: DbReadOnly, dbPessimistic, dbOptimistic). наприклад:

Dim db As Database

Dim rst As Recordset

Set db = CurrentDb ()

Set rst = db.OpenRecordset ("Клієнти ", dbOpenDynaset)

Відкрити Recordset можна і грунтуючись на змінної типу форми (припустимо тільки для форм, заснованих на таблиці або запиті) за допомогою методу RecordsetClone. Метод RecordsetClone створює динамічний набір, грунтуючись на властивості Джерело даних для форми Dim rstOrders As Recordset

Set rstOrders = Forms! [ Замовлення ]. RecordsetClone або просто Me.RecordsetClone

Recordset можна створити, також грунтуючись на рядку SQL

Set rst = db.OpenRecordset (" SELECT * FROM Товари WHERE Ціна > 1000 ", dbOpenDynaset, dbReadOnly)

Після завершення роботи з динамічним набором його необхідно закрити. Існують два загальних способb закриття об'єктів в VBA. Перший полягає у виклику методу Close, другий - у привласненні відповідної об'єктної змінної значення Nothing. Наприклад, rst.Close або Set rst = Nothing.

Recordset має поточний додаток - current position. Для синхронізації поточного становища динамічного набору з поточним записом форми можна використовувати властивість Bookmark (необхідно завжди пам'ятати, що при зверненні до динамічного набору дані беруться саме з поточної запису). Для переміщення по динамічному набору є ряд методів: MoveFirst, MoseLast, MoveNext, MovePrevions,

Move [ n ]. наприклад:

Dim rst As Recordset

Set rst = Me.RecordsetClone

rst.MoveNext

Me.Bookmark = rst.Bookmark

Для визначення початку і кінця набору можна використовувати властивості BOF (before of file - початок файлу) і EOF (end of file - кінець файлу). Якщо в наборі немає записів, то BOF і EOF рівні True. Якщо в наборі є записи, то при відкритті курсор зазвичай встановлюється на першого запису і BOF і EOF = False. Якщо курсор знаходиться перед першим записом, то BOF = True, і якщо курсор знаходиться після останнього запису, то EOF = True.

Число записів у динамічним наборі можна отримати за допомогою властивості RecordCount. Ця властивість повертає реальне число записів тільки для динамічного набору, заснованого на таблиці, тобто має тип dbOpenTable. Після відкриття динамічних наборів будь-яких інших типів число записів у ньому буде невідомо доти, поки курсор не переміщується буде переміщений на останній запис. Для безпосередньої перевірки на наявність в наборі записів краще перевірити властивість EOF. Якщо EOF буде дорівнює True, то RecordCount також буде дорівнює 0.

Public Function RecCount () As Long

Dim rstCount As Recordset

Dim dbs As Database

Set dbs = CurrentDB ()

Set rstCont = dbs.OpenRecordset (" Замовлення ")

If rstCount.Eof Then

RecCount = 0

Else

rstCount.MoveLast

RecCount = rstCount.RecordCount

End If

rstCount.Close

Set dbs = Nothing

End Function

Date: 2015-12-11; view: 290; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию