√оловна
Ћекц≥њ
«авданн¤
ѕобажанн¤
√остьова
Ћ≥нки
Ћекц≥¤ є6 Ћекц≥¤ є4  —качати лекц≥ю

Access 5

¬ластивост≥ обТЇкта Recordset

 ожний обТЇкт Recordset характеризуЇтьс¤ визначеним типом курсора, тобто типом обТЇкта, що обслуговуЇ даний наб≥р. ¬ ADO визначено 4 типи курсора, один з ¤ких вказуЇтьс¤ при в≥дкритт≥ обТЇкта Recordset.

  • Dynamic cursor (динам≥чний курсор). ƒозвол¤Ї перегл¤дати вс≥ зм≥ни даних (вставку, видаленн¤, модиф≥кац≥ю запис≥в), зроблен≥ ≥ншими користувачами. ≤снуЇ можлив≥сть перем≥щатись в будь-¤кому напр¤мку по набору, а також користуватись закладками, ¤кщо њх п≥дтримуЇ провайдер даних.
  • Keyset cursor (курсор типу ключовий наб≥р). ¬≥др≥зн¤Їтьс¤ в≥д динам≥чного курсора тим, що дл¤ перегл¤ду недоступн≥ додан≥ або видален≥ ≥ншими користувачами записи.
  • Static cursor (статичний курсор). ¬ам надаЇтьс¤ статична коп≥¤ набору даних, ¤ку ви можете використовувати, ¤ку ви можете використати т≥льки дл¤ перегл¤ду, генерац≥њ зв≥т≥в та тому под≥бних д≥й.
  • Forward-only cursor (курсор з можлив≥стю перем≥щенн¤ т≥льки вперед).  урсор цього типу дозвол¤Ї перем≥щатис¤ по набору даних т≥льки вперед. ¬с≥ зм≥ни в набор≥, зроблен≥ ≥ншими користувачами непом≥тн≥.  урсори цього типу застосовуютьс¤ дл¤ оптим≥зац≥њ роботи додатку в тих випадках, коли потр≥бний т≥льки однократний прох≥д по набору даних.

ƒл¤ створенн¤ обТЇкту Recordset використовуЇтьс¤ наступний синтаксис:

Dim MyRec As ADODB.Recordset

Set MyRec = New ADODB.Recordset

« конкретним зТЇднанн¤м (обТЇктом Connection ) та джерелом запис≥в (таблиць, запит≥в) обТЇкт Recordset звТ¤зуютьс¤ при його в≥дкритт≥ (метод Open).

Ќе вс≥ з властивостей та метод≥в обТЇкта Recordset можуть п≥дтримуватись обраним провайдером даних. “ому одна й та ж програмна конструкц≥¤, ¤ка добре працюЇ з одним провайдером, може не працювати з ≥ншим провайдером.

ќсновн≥ властивост≥

 

ActiveConnection. ¬ластив≥сть вказуЇ на зТЇднанн¤ (Connection), ¤кому належить активний обТЇкт Recordset. ¬ластив≥сть доступна не т≥льки дл¤ читанн¤, а й дл¤ запису, тобто з њњ допомогою можна звТ¤зати обТЇкт Recordset з обТЇктом Connection. якщо обТЇкт Connection в≥дкрито, то в ¤кост≥ значенн¤ властивост≥ вказуЇтьс¤ його ≥мТ¤.

¬ластивост≥ BOF() та EOF().

CursorType. «адаЇ один з чотирьох тип≥в курсора, ¤кий будуть використовуватись з набором даних (обТЇктом Recordset): adOpenDynamic (динам≥чний наб≥р), adOpenKeyset (ключовий наб≥р), adOpenStatic (статичний наб≥р), adOpenForwardOnly (наб≥р з ≥терац≥Їю т≥льки вперед).

EditMode. ¬ластив≥сть т≥льки дл¤ читанн¤, вказуЇ статус редактуванн¤ поточного запису, повертаючи одну з констант: adEditNone (поточний запис не можна редактувати), adEditInProgress (поточний запис скоп≥юваний в буфер дл¤ редактуванн¤, но зм≥ни ще не збережен≥), adEditAdd (було добавлено новий запис, але зм≥ни ще не збережен≥, adEditDelete (поточний запис було видалено).

LockType. ¬ластив≥сть вказуЇ на тип блокуванн¤, що застосовуЇтьс¤ до редагованих запис≥в при одночасному доступ≥ до них к≥лькох користувач≥в. ћоже мати одне з наступних значень:

  • AdLockBatchOptimistic (оптим≥стичний тип блокуванн¤ запис≥в з в≥дкладеним оновленн¤м),
  • AdLockOptimistic (оптим≥стичний тип блокуванн¤; записи блокуютьс¤ т≥льки тод≥ коли викликаЇтьс¤ метод Update ),
  • AdLockPessimistic (песем≥стичний тип блокуванн¤; записи блокуютьс¤ в≥дразу п≥сл¤ початку редагуванн¤)
  • AdLockReadOnly (записи призначено т≥льки дл¤ читанн¤)
  • AdLockUnspecified ( тип блокуванн¤ визначаЇтьс¤ провайдером за замовчуванн¤м.)

Source. ¬ластив≥сть вказуЇ на джерело даних обТЇкту Recordset. якщо обТЇкт Recordset в≥дкрито, то властив≥сть Source доступна т≥льки дл¤ читанн¤. ¬ ¤кост≥ значенн¤ властивост≥ можна вказати р¤док, що м≥стить ≥мТ¤ базовоњ таблиц≥, запиту або SQL-оператор.

ћетоди обТЇкту Recordset дозвол¤ють ман≥пулювати ¤к окремими записами набору даних, так ≥ ц≥лим набором. « њх допомогою ви можете орган≥зувати пошук необх≥дних даних, перем≥щенн¤ по набору даних та ≥нш≥ д≥њ.

  • Open. ћетод Open застосовуЇтьс¤ дл¤ в≥дкритт¤ набору даних (обТЇкта Recordset). ‘ормат запуску методу Open маЇ вигл¤д:

MyRec.Open Source, ActiveConnection, CursorType, LockType, Options

MyRec- оголошена ран≥ше зм≥нна типу Recordset. ћетод маЇ 5 аргумент≥в ¬с≥ вони необовТ¤зков≥, але перш≥ 2 повинн≥ бути вказан≥ ран≥ше (наприклад, за допаомогою властивостей Source та ActiveConnection.

ѕриклад

Dim MyConn As ADODB.Connection

Dim MyRec AS ADODB.Recordset

Dim Constr As String

Constr=ФProvider=Microsoft.Jet.OLEDB=4.0; Data Source=C:\db2.mdbФ

Set MyConn = New.ADODB.Connection

Set MyRec=New.ADODB.Recordset

MyConn.Open ConStr

MyRec.Open УtempФ,MyConn, adOpenDynamic, adLockOptimistic

MyRec.Close

MyConn.Close

якщо тип блокуванн¤ ¤вно не вказаний, то за замовчуванн¤м прийматиметьс¤ тип блокуванн¤ adLockReadOnly. ¬ результат≥ ви не зможете, добавл¤ти, видал¤ти та модиф≥кувати записи.

  • AddNew. «а допомогою цього метода можна додати запис в поновлюваний наб≥р даних. ћетод може приймати 2 необовТ¤зкових аргументи: Fields Values. јргумент Fields може бути ≥менем пол¤, масивом пол≥в або ≥ндексом пол≥в базовоњ таблиц≥ або запиту. јргумент Values м≥стить значенн¤ дл¤ пол≥в запису, що вставл¤Їтьс¤ та повинен вигл¤дати у в≥дпов≥дност≥ з першим аргументом. јле част≥ше використовуЇтьс¤ синтаксисб ¤к у наведеному нижче приклад≥.

MyRec.AddNew

MyRec![Kod]=Фss55fФ

MyRec[Price]=13.12

MyRec.Update

 ожному методу AddNew повинен в≥дпов≥дати св≥й метод Update або UpdateBatch,¤кщо ви використовуЇте метод в≥дкладених поновлень.

  • CancelUpdate. ¬иклик цього методу в≥дм≥н¤Ї вс≥ зм≥ни, зроблен≥ в поточному або новому запису набору даних (обТЇкт Recordset). ќднак викликати цей метод потр≥бно до виклику в≥дпов≥дного метода Update.
  • Close. ¬иклик методу закриваЇ обТЇкт Recordset, п≥сл¤ чого н≥¤ких д≥й з набором даних, кр≥м повторного в≥дкритт¤ проводити не можна.
  • Delete. ¬идал¤Ї записи з набору даних.
  • Find. ћетод зд≥йснюЇ пошук в набор≥ даних запису, ¤кий в≥дпов≥даЇ заданому р¤дку критер≥¤. –¤док критер≥¤ повинна м≥стити найменуванн¤ т≥льки одного пол¤ (наприклад, УFname LIKE СJo*Ф). ѕошук за к≥лькома пол¤ми цей метод не п≥дтримуЇ. ѕошук звичайно починаЇтьс¤ з поточноњ позиц≥њ.  р≥м того можна вказати зм≥щенн¤ початковоњ позиц≥њ в≥дносно поточноњ ≥ напр¤м пошуку. якщо поточна позиц≥¤ не визначена, то виклик методу т¤гне за собою помилку.

‘ормат запуску:

MyRec.Find Criteria, SkipRows, SearchDirection

Criteria Ц критер≥й пошуку;

SkipRows Ц зм≥щенн¤ початковоњ позиц≥њ пошуку в≥д поточного запису. «наченн¤ за замовчуванн¤м цього аргументу Ц 0.

SearchDirection Ц задаЇ напр¤мок пошуку, може приймати значенн¤ adSearchForward Ц напр¤мок пошуку вперед, пошук припин¤Їтьс¤, коли властив≥сть Eof Ц набуваЇ значенн¤ У≤стинаФ, та adSearchBackward Ц напр¤мок пошуку назад.

ѕриклад

MyRec.Find У[ од лиента]Ф Like СQU*Т

Do While Myrec.EOF<>True

Debug.Print MyRec![ од л≥Їнта]

MyRec.Find У[ од лиента]Ф Like СQU*Т,1,adSearchForward

LOOP

  • Move. ѕерем≥щуЇ показчик поточного запису у вказану позиц≥ю. ћетод приймаЇ 2 аргументи. ѕерший аргумент вказуЇ к≥льк≥сть запис≥в, на ¤к≥ необх≥дно пересунути або показчик в≥дносно поточноњ позиц≥њ, або в≥дносно позиц≥њ, заданоњ другим аргументом. якщо значенн¤ першого аргументу в≥дТЇмне, то показчик поточноњ перем≥щуЇтьс¤ в б≥к початку набору даних. ƒругий параметр Ї необовТ¤зковим ≥ задаЇ стартову позиц≥ю дл¤ перем≥щенн¤. «наченн¤м аргументу може бути одна з констант- adBookmarkCurrent (поточна позиц≥¤ Ї стартовою), adBookmarkFirst ( перем≥щенн¤ зд≥йснюватиметьс¤ в≥д першого запису набору), adBookmarkLast (стартовим буде останн≥й запис набору).
  • √рупа метод≥в MoveFirst, MoveLast, MoveNext, MovePrevious.
  • Requery. ћетод використовуЇтьс¤ дл¤ поновленн¤ набору даних шл¤хом повторного виконанн¤ запиту, ¤кий лежить в основ≥ обТЇкту Recordset. ћетод застосовують, щоб примусити обТЇкт Recordset в≥дображати вс≥ зроблен≥ на поточний час зм≥ни.
  • Save. «бер≥гаЇ наб≥р даних обТЇкту Recordset в файл≥ на диску. ÷ей метод лаЇ можлив≥сть надавати користувачам т≥льки необх≥дну њм ≥нформац≥ю, не надаючи доступу до бази даних взагал≥.

ќбТЇкт Command

ќбТЇкт використовуЇтьс¤ дл¤ формуванн¤ запит≥в до бази даних. ќбТЇкт зручно використовувати дл¤ запуску запит≥в на доданн¤ та видаленн¤ запис≥в. ѕосл≥довн≥сть д≥й при в≥дкритт≥ обТЇкту:

  • ќписати зм≥нну типу Connection

Dim MyConn As ADODB.Connection

  • ƒал≥ потр≥бно створити екземпл¤р обТЇкта:

Set MyComm= New ADODB.Command

  • «вТ¤зати створений обТЇкт з ран≥ше в≥дкритим зТЇднанн¤м:

MyCommand.ActiveConnection=MyConn

  • ¬казати тип та текст команди. ƒл¤ цього використовуютьс¤ властивост≥ CommandType та CommandText. ¬ наведеному приклад≥ в ¤кост≥ тексту команди вказуЇтьс¤ текст SQL- оператора та в≥дпов≥дний тип команди:

MyComm.CommandText=ФDelete * from [Temp];Ф

MyComm.CommandType = adCmdText

  • ѕри необх≥дност≥ задати значенн¤ ≥нших властивостей, наприклад час оч≥куванн¤ за допомогою команди CommandTimeout
  • «алишилось тыльки виконати команду за допомогою метода Execute: MyComm.Execute.

ѕриклад ¬икористанн¤ обТЇкта Command дл¤ запуску запиту на виконанн¤

(action query)

Dim MyConn As ADODB.Connection

Dim ConStr As String

Dim MyComm As ADODB.Command

 

Constr=ФProvider=Microsoft.Jet.OLEDB=4.0; Data Source=C:\db2.mdbФ

Set MyConn = New ADODB.Connection

MyConn.Open ConStr

Set MyComm= New ADODB.Command

 

MyComm.ActiveConnection=MyConn

MyComm.CommandText=ФDelete * from [Temp];Ф

MyComm.CommandType = adCmdText

MyComm.Execute

MyConn.Close

SET MyConn=Nothing

SET MyComm=Nothing

ѕриклад ¬икористанн¤ обТЇкта Command дл¤ поверненн¤ набору запис≥в дл¤ обТЇкта Recordset

Dim MyConn As ADODB.Connection

Dim MyRec As ADODB.Recordset

Dim ConStr As String

Dim MyComm As ADODB.Command

 

Constr=ФProvider=Microsoft.Jet.OLEDB=4.0; Data Source=C:\db2.mdbФ

Set MyConn = New ADODB.Connection

Set MyRec= New ADODB.Recordset

MyConn.Open ConStr

Set MyComm= New ADODB.Command

 

MyComm.ActiveConnection=MyConn

MyComm.CommandText=Ф[Temp];Ф

MyComm.CommandType = adCmdTable

SET MyRec= MyComm.Execute

Do Until MyRec.EOF

Debug.Print MyRec ![ од лиента]

MyRec.MoveNext

LOOP

MyRec.Close

MyConn.Close

SET MyConn=Nothing

SET MyComm=Nothing

SET MyRec=Nothing

 р≥м ≥нших обТЇкт≥в оголошуЇтьс¤ та створюЇтьс¤ екземпл¤р обТЇкта типу RecordSet. ¬ ¤кост≥ тексту команди дл¤ обТЇкта MyComm вказуЇьс¤ ≥мТ¤ таблиц≥ Temp. ј дл¤ властивост≥ CommandType задаЇтьс¤ в≥дпов≥дна константа adCmdTable. «верн≥ть увагу на формат використанн¤ метода Execute. ќск≥льки в цьому випадку в результат≥ його виконанн¤ повертаЇтьс¤ наб≥р запис≥в, то застосовано конструкц≥ю SET, що ≥н≥ц≥ал≥зуЇ зм≥нну MyRec. ¬ результат≥ виконанн¤ цього р¤дка коду наб≥р даних буде в≥дкрито, тобто в≥дпадаЇ необх≥дн≥сть використанн¤ метода Open обТЇкта RecordSet. ≤люстрац≥Їю цього Ї ≥терац≥¤ по записах набора, ¤ка орган≥зована за допомого циклу DO UNTIL ЕLOOP. Ќа завершенн¤ уривка програми зв≥льн¤ютьс¤ вс≥ ресурси.

Ћекц≥¤ є6 Ћекц≥¤ є4  —качати лекц≥ю

 

 

 

 

 

 

 

 

Hosted by uCoz