цКЮБЮ 15.

пЮАНРЮ Я БМЕЬМХЛХ АЮГЮЛХ ДЮММШУ

яНГДЮМХЕ ГЮОПНЯНБ Я ОНЛНЫЭЧ Microsoft Query

б Microsoft Office БУНДХР НРДЕКЭМЮЪ ОПНЦПЮЛЛЮ, ЙНРНПЮЪ МЮГШБЮЕРЯЪ Microsoft Query, ОПЕДНЯРЮБКЪЧЫЮЪ ДНЯРСО Й АЮГЮЛ ДЮММШУ, ЯНГДЮММШУ Я ОНЛНЫЭЧ РЮЙХУ ОПНЦПЮЛЛМШУ ЯПЕДЯРБ, ЙЮЙ dBASE, Access, Paradox, Microsoft SQL Server Х Р. О. щРЮ ОПНЦПЮЛЛЮ ОНГБНКЪЕР НРАХПЮРЭ ХМТНПЛЮЖХЧ ХГ АЮГШ ДЮММШУ, ЯНПРХПНБЮРЭ, ПЕДЮЙРХПНБЮРЭ Х ЙНОХПНБЮРЭ ЕЕ МЮ ПЮАНВХИ КХЯР. хЯОНКЭГСЪ Microsoft Query, ЛНФМН ОНКСВХРЭ ДЮММШЕ МЮ НЯМНБЕ ГЮДЮММШУ ОНКЭГНБЮРЕКЕЛ ЙПХРЕПХЕБ. Excel ЯБЪГШБЮЕРЯЪ Я Microsoft Query ОНЯПЕДЯРБНЛ ЛЕУЮМХГЛЮ DDE (Dynamic Data Exchange ≈ ДХМЮЛХВЕЯЙХИ НАЛЕМ ДЮММШЛХ). Microsoft Query ПЮАНРЮЕР Я БМЕЬМХЛХ ХЯРНВМХЙЮЛХ ДЮММШУ ВЕПЕГ ДПЮИБЕПШ ODBC (Open Database Connectivity), ЙНРНПШЕ ЪБКЪЧРЯЪ ПЮГПЮАНРЮММШЛ Microsoft ЯРЮМДЮПРНЛ ДКЪ ПЮАНРШ Я АЮГЮЛХ ДЮММШУ. дКЪ ОНКСВЕМХЪ ДЮММШУ ОН ГЮОПНЯС ОНЯПЕДЯРБНЛ ДПЮИБЕПЮ ODBC ХЯОНКЭГСЕРЯЪ ЪГШЙ ГЮОПНЯНБ SQL (Structured Query Language).

пЮЯЯЛНРПХЛ ОНЯКЕДНБЮРЕКЭМНЯРЭ ЯНГДЮМХЪ ГЮОПНЯЮ ОПХ ОНЛНЫХ Microsoft Query МЮ НЯМНБЕ ОПНЯРНИ АЮГШ ДЮММШУ Н ЯРСДЕМРЮУ, ЯНГДЮММНИ Б Access (ПХЯ. 15.1).

бШОНКМХРЕ ЙНЛЮМДС дЮММШЕ, бМЕЬМХЕ ДЮММШЕ, яНГДЮРЭ ГЮОПНЯ (Data, Get External Data, New Database Query). оНЪБХРЯЪ ДХЮКНЦНБНЕ НЙМН бШАНП ХЯРНВМХЙЮ ДЮММШУ (Choose Data Source) (ПХЯ. 15.2). б ЩРНЛ НЙМЕ БШАЕПХРЕ ХЯРНВМХЙ ДЮММШУ, МЮОПХЛЕП АЮГС ДЮММШУ, ЯНЯРЮБКЕММСЧ Б Access 97. мЮФЛХРЕ ЙМНОЙС оЮПЮЛЕРПШ (Options), ОПХ ОНЛНЫХ ОНЪБХБЬЕЦНЯЪ НЙМЮ хЯРНВМХЙ ДЮММШУ (Data Source) ЛНФМН СЯРЮМНБХРЭ ОЮОЙХ, Б ЙНРНПШУ ЯКЕДСЕР ХЯЙЮРЭ ХЯРНВМХЙ ДЮММШУ. хРЮЙ, БШАЕПХРЕ АЮГС ДЮММШУ, ЯНЯРЮБКЕММСЧ Б Access 97, Б ЙЮВЕЯРБЕ ХЯРНВМХЙЮ Х МЮФЛХРЕ ЙМНОЙС нй.

б ОНЪБХБЬЕЛЯЪ ДХЮКНЦНБНЛ НЙМЕ Select Database (ПХЯ. 15.3) Б ЯОХЯЙЕ Database Name БШАЕПХРЕ ХЛЪ ТЮИКЮ АЮГШ ДЮММШУ (Б ДЮММНЛ ЯКСВЮЕ ЯРСДЕМРШ.mdb) Х МЮФЛХРЕ ЙМНОЙС нй, ВРН ОПХБЕДЕР Й ГЮОСЯЙС ЛЮЯРЕПЮ ГЮОПНЯНБ.

пХЯ. 15.1. аЮГЮ ДЮММШУ Н ЯРСДЕМРЮУ

пХЯ. 15.2. дХЮКНЦНБНЕ НЙМН бШАНП ХЯРНВМХЙЮ ДЮММШУ

пХЯ. 15.3. дХЮКНЦНБНЕ НЙМН Select Database

нРЙПНЕРЯЪ ДХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: БШАНП ЯРНКАЖНБ (Query Wizard ≈ Choose Columns) (ПХЯ. 15.4), ЙНРНПНЕ ОНГБНКЪЕР ДНАЮБКЪРЭ ЯРНКАЖШ ХКХ ОНКЪ Б ЯОХЯНЙ яРНКАЖШ ГЮОПНЯЮ (Query Columns). оПХ МЮФЮРХХ МЮ ЙМНОЙС >, ПЮЯОНКНФЕММСЧ Б ЯПЕДМЕИ ВЮЯРХ ДХЮКНЦНБНЦН НЙМЮ яНГДЮМХЕ ГЮОПНЯЮ: БШАНП ЯРНКАЖНБ (Query Wizard Choose Columns), БШАПЮММШИ ЯРНКАЕЖ ДНАЮБКЪЕРЯЪ Б ГЮОПНЯ, ЙМНОЙЮ < ЯКСФХР ДКЪ СДЮКЕМХЪ БШАПЮММНЦН ЯРНКАЖЮ ХГ ЯОХЯЙЮ ЯРНКАЖНБ ГЮОПНЯЮ, Ю ЙМНОЙЮ « ОНГБНКЪЕР СДЮКХРЭ БЯЕ ЯРНКАЖШ ГЮОПНЯЮ. б ПЮЯЯЛЮРПХБЮЕЛНЛ ЯКСВЮЕ Б ЯОХЯНЙ яРНКАЖШ ГЮОПНЯЮ (Query Columns) ДНАЮБХЛ БЯЕ ОНКЪ АЮГШ ДЮММШУ, ЙПНЛЕ ОНКЪ МНЛЕП. мЮФЛХРЕ ЙМНОЙС дЮКЕЕ > (Next >), ОЕПЕУНДЪ Й ЯКЕДСЧЫЕЛС ЬЮЦС ПЮАНРШ ЛЮЯРЕПЮ ГЮОПНЯНБ.

пХЯ. 15.4. дХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: БШАНП ЯРНКАЖНБ

нРЙПНЕРЯЪ ДХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: НРАНП ДЮММШУ (Query Wizard -Filter Data) (ПХЯ. 15.5), ЙНРНПНЕ ОНГБНКЪЕР НРТХКЭРПНБЮРЭ ДЮММШЕ Б БШАПЮММШУ ОНКЪУ. дКЪ ТХКЭРПЮЖХХ ДЮММШУ Б ЯОХЯЙЕ яРНКАЖШ ДКЪ НРАНПЮ, БШДЕКХРЕ ЯРНКАЕЖ, ОН ЙНРНПНЛС АСДЕР ОПНХГБНДХРЭЯЪ ТХКЭРПЮЖХЪ. б ОЕПБНЛ ПЮЯЙПШБЮЧЫЕЛЯЪ ЯОХЯЙЕ БШАХПЮЕРЯЪ НОЕПЮЖХЪ НРАНПЮ, Ю БН БРНПНЛ, ЯНДЕПФЮЫЕЛ БЯЕ ХЛЕЧЫХЕЯЪ Б БШАПЮММНЛ ОНКЕ ГМЮВЕМХЪ, БШАЕПХРЕ МСФМНЕ ХКХ ББЕДХРЕ ЯБНЕ. оПХ МЕНАУНДХЛНЯРХ ББЕЯРХ ДНОНКМХРЕКЭМСЧ НОЕПЮЖХЧ НРАНПЮ БШАЕПХРЕ ОЕПЕЙКЧВЮРЕКЭ Х (AND) ХКХ ХКХ (OR), Х БНЯОНКЭГСИРЕЯЭ ЯКЕДСЧЫХЛХ ПЮЯЙПШБЮЧЫХЛХЯЪ ЯОХЯЙЮЛХ ДКЪ ББНДЮ ЙПХРЕПХЕБ ТХКЭРПЮЖХХ Х Р. Д. гЮБЕПЬХБ ЯНГДЮМХЕ ЙПХРЕПХЕБ ТХКЭРПЮЖХХ, МЮФЛХРЕ ЙМНОЙС дЮКЕЕ > (Next >), ОЕПЕУНДЪ Й ЯКЕДСЧЫЕЛС ЬЮЦС ПЮАНРШ ЛЮЯРЕПЮ ГЮОПНЯНБ. б ПЮЯЯЛЮРПХБЮЕЛНЛ ЯКСВЮЕ ОПНБЕДЕЛ ТХКЭРПЮЖХЧ ОН ОНКЧ ЦПСООЮ, СЯРЮМНБХБ ЙПХРЕПХИ ПЮБМН ГМЮВЕМХЧ щЙНМНЛХЙЮ, Х ОНКЧ ОПЕДЛЕР Я ЙПХРЕПХЕЛ ПЮБМН ГМЮВЕМХЧ ХМТНПЛЮРХЙЮ, Р. Е. НРНАПЮГХЛ РНКЭЙН ХМТНПЛЮЖХЧ Н ПЕГСКЭРЮРЮУ ЯДЮВХ ХМТНПЛЮРХЙХ ЯРСДЕМРНБ-ЩЙНМНЛХЯРНБ. нРЛЕРХЛ, ВРН БХГСЮКЭМН БШАПЮММШЕ ОНКЪ НРКХВЮЧРЯЪ НР МЕБШАПЮММШУ РЕЛ, ВРН НМХ БШДЕКЪЧРЯЪ ОНКСФХПМШЛ ЬПХТРНЛ.

пХЯ. 15.5. дХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: НРАНП ДЮММШУ

нРЙПНЕРЯЪ ДХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: ОНПЪДНЙ ЯНПРХПНБЙХ (Query Wizard - Sort Data) (ПХЯ. 15.6), ЙНРНПНЕ ОНГБНКЪЕР НРЯНПРХПНБЮРЭ ДЮММШЕ Б БШАПЮММШУ ОНКЪУ Б ОНПЪДЙЕ БНГПЮЯРЮМХЪ ХКХ САШБЮМХЪ. нРЯНПРХПСЕЛ ДЮММШЕ ОН ТЮЛХКХЪЛ Б ОНПЪДЙЕ БНГПЮЯРЮМХЪ. мЮФЛХРЕ ЙМНОЙС дЮКЕЕ > (Next >), ОЕПЕУНДЪ Й ЯКЕДСЧЫЕЛС ЬЮЦС ПЮАНРШ ЛЮЯРЕПЮ ГЮОПНЯНБ.

пХЯ. 15.6. дХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: ОНПЪДНЙ ЯНПРХПНБЙХ

нРЙПНЕРЯЪ ДХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: ГЮЙКЧВХРЕКЭМШИ ЬЮЦ (ПХЯ. 15.7). оПХ ФЕКЮМХХ ЕЫЕ ПЮГ БНЯОНКЭГНБЮРЭЯЪ РЕЛ ФЕ ГЮОПНЯНЛ ЕЦН ЛНФМН ЯНУПЮМХРЭ, ХЯОНКЭГСЪ ЙМНОЙС яНУПЮМХРЭ ГЮОПНЯ (Save Query). дКЪ ГЮБЕПЬЕМХЪ ЯНГДЮМХЪ ГЮОПНЯЮ БШАЕПХРЕ ТКЮФНЙ бЕПМСРЭ ДЮММШЕ Б Microsoft Excel (Return Data to Microsoft Excel) Х МЮФЛХРЕ ЙМНОЙС цНРНБН (Finish).

пХЯ. 15.7. дХЮКНЦНБНЕ НЙМН яНГДЮМХЕ ГЮОПНЯЮ: ГЮЙКЧВХРЕКЭМШИ ЬЮЦ

мЮ ЩЙПЮМЕ НРНАПЮГХРЯЪ ДХЮКНЦНБНЕ НЙМН бНГБПЮР ДЮММШУ Б Microsoft Excel (Returning External Data to Microsoft Excel) (ПХЯ. 15.8). БШАЕПХРЕ ОЕПЕЙКЧВЮРЕКЭ хЛЕЧЫХИЯЪ КХЯР Х СЙЮФХРЕ ЮДПЕЯ БЕПУМЕИ КЕБНИ ЪВЕИЙХ, ЙСДЮ МЮДН ОНЛЕЯРХРЭ ДЮММШЕ, МЮФЛХРЕ ЙМНОЙС нй. оНКСВЕММШИ ПЕГСКЭРЮР ГЮОПНЯЮ ДЮММНЦН ОПХЛЕПЮ ОНЙЮГЮМ МЮ ПХЯ. 15.9.

пХЯ. 15.8. дХЮКНЦНБНЕ НЙМН бНГБПЮР ДЮММШУ Б Microsoft Excel

пХЯ. 15.9. пЕГСКЭРЮР ГЮОПНЯЮ

лЮЙПНПЕЙНПДЕП ГЮОХЯШБЮЕР ОЕПЕВХЯКЕММШЕ БШЬЕ ДЕИЯРБХЪ Б БХДЕ ЯКЕДСЧЫЕЦН ЛЮЙПНЯЮ:

Sub лЮЙПНЯ1()

'

' лЮЙПНЯ1 лЮЙПНЯ

' лЮЙПНЯ ГЮОХЯЮМ 03.06.99 (юМДПЕИ)

'

'

With ActiveSheet.QueryTables

.Add(Connection:=Array(Array(

"ODBC;DSN=MS Access 97

Database;DBQ=C:\лс_Dня\ЯРСДЕМРШ.mdb;

DefaultDir=C:\MY__DOC;Driverld=25;

FIL=MS Aceess;MaxBufferSize=512;PageT-imeo")

, Array("ut=5;")),

Destination:=Range("Al"))

.Sql = Array( "SELECT оЕПБШИйСПЯ.тЮЛХКХЪ,

оЕПБШИйСПЯ.цПСООЮ, оЕПБШИйСПЯ.оПЕДЛЕР,

оЕПБШИйСПЯ.нЖЕМЙЮ" & Ghr(13) & "" & Chr(10) & "FROM

`C:\лY_ння\ярсдемрш` .оЕПБШИйСПЯ

оЕПБШИйСПЯ" & Chr(13) & "" & Ghr,(10) & "WHERE (оЕПБШИйСПЯ.цПСООЮ='щЙНМНЛХЙЮ')

AND (оЕПБШИйСПЯ.оПЕДЛЕР='хМТ" ,"НПЛЮРХЙЮ')"

& Chr(13) & "" & Chr(10) &

"ORDER BY оЕПБШИйСПЯ.тЮЛХКХЪ")

.FieldNames = True

.RefreshStyle = xlInsertDeleteCells

.RowNumbers = False

.FillAdjacentFormulas = False

.RefreshOnFileOpen = False

.HasAutoFormat = True

.BackgroundQuery = True

.TablesOnlyFromHTML = True

.Refresh BackgroundQuery:=False

.SavePassword = True

.SaveData = True

End With

End Sub

дКЪ СДНАЯРБЮ ПЮЯОНКНФЕМХЪ ЩРНЦН ЛЮЙПНЯЮ МЮ КХЯРЕ, БШДЕКЕММШЕ ЖБЕРНЛ ДБЕ ЦПСООШ ЯРПНЙ ОН РПХ Х ОН ВЕРШПЕ ЯРПНЙХ ЯННРБЕРЯРБЕММН, ЯНЯРЮБКЪЧЫХЕ ЕДХМШЕ ЯРПНЙХ, МЕ ПЮГАХРШ МЮ ОНДЯРПНЙХ ГМЮЙЮЛХ ОЕПЕМНЯЮ. бН БЯЪЙНЛ ЯКСВЮЕ, МЕКЭГЪ АШКН АШ НЦПЮМХВХРЭЯЪ РНКЭЙН ДНАЮБКЕМХЕЛ ГМЮЙНБ ОЕПЕМНЯЮ, Р. Й. ХУ КХЛХР СФЕ ХЯВЕПОЮМ. мЮ ЯЮЛНЛ ДЕКЕ, ЙНППЕЙРМЮЪ ГЮОХЯЭ ЛЮЙПНЯЮ МЕ ОПЕДЯРЮБКЪЕР МХЙЮЙХУ СЯХКХИ. дНЯРЮРНВМН АШКН АШ ББЕЯРХ ДНОНКМХРЕКЭМШЕ ЯРПНЙНБШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЛ АШКХ АШ ОПХЯБНЕМШ БШДЕКЕММШЕ ЯРПНЙНБШЕ БШПЮФЕМХЪ. мН Б ЩРНЛ ЯКСВЮЕ ЛЮЙПНЯ БХГСЮКЭМН ЯХКЭМН АШ НРКХВЮКЯЪ НР РНЦН, ЙНРНПШИ АШК ЯНГДЮМ ЛЮЙПНПЕЙНПДЕПНЛ. оНЩРНЛС, БН ХЛЪ ОНКСВЕМХЪ ЛЮЙЯХЛЮКЭМНЦН ОПХАКХФЕМХЪ Й "ПЕЮКЭМНИ АНЕБНИ ЯХРСЮЖХХ" (ПЮАНРШ ЛЮЙПНПЕЙНПДЕПЮ) Х АНКЭЬЕИ МЮЦКЪДМНЯРХ, ОПХУНДХРЯЪ ХДРХ МЮ МЕАНКЭЬСЧ ФЕПРБС -НЯРЮБХРЭ Б ЛЮЙПНЯЕ МЕ ЯЙНППЕЙРХПНБЮММШЛХ ГЮПЮМЕЕ НЦНБНПЕММШЕ НЬХАЙХ, ЙНРНПШЕ МЕ ДНКФМШ БШГБЮРЭ С ВХРЮРЕКЪ МХЙЮЙХУ ГЮРПСДМЕМХИ.

жЕМРПЮКЭМСЧ ПНКЭ Б ДЮММНЛ ЛЮЙПНЯЕ ХЦПЮЧР: ХМЯРПСЙЖХЪ SELECT, СЙЮГШБЮЧЫЮЪ БШАХПЮЕЛШЕ ОНКЪ, ХМЯРПСЙЖХЪ WHERE, ГЮДЮЧЫЮЪ ЙПХРЕПХИ НРАНПЮ ГЮОХЯЕИ Х ХМЯРПСЙЖХЪ ORDER BY, СЯРЮМЮБКХБЮЧЫЮЪ ОНПЪДНЙ БШБНДЮ ГЮОХЯЕИ.

б ЛЮЙПНЯЕ ХЯОНКЭГСЕРЯЪ ЯЕЛЕИЯРБН QueryTables. яЕЛЕИЯРБН QueryTables ЪБКЪЕРЯЪ ЯЕЛЕИЯРБНЛ БЯЕУ НАЗЕЙРНБ QueryTable, ОПЕДЯРЮБКЪЧЫХУ ЯНАНИ БМЕДПЕММШЕ МЮ ПЮАНВХИ КХЯР ПЕГСКЭРЮРШ ГЮОПНЯЮ ОН БМЕЬМЕИ АЮГЕ ДЮММШУ ОНЯПЕДЯРБНЛ Microsoft Query. нЯМНБМШЛХ ЛЕРНДЮЛХ ЯЕЛЕИЯРБЮ QueryTables ЪБКЪЧРЯЪ Add Х item. мЕЯЛНРПЪ МЮ ЦПНЛНГДЙНЯРЭ ЛЮЙПНЯЮ ЛЮЙПНЯ1, ЛЕРНД Add ХЛЕЕР ОПНЯРСЧ ЯХМРЮЙЯХВЕЯЙСЧ ЯРПСЙРСПС:

Add(Connection, Destination, Sql)

юПЦСЛЕМРШ:

Connection

ODBC-ЯРПНЙНБНЕ БШПЮФЕМХЕ, СЙЮГШБЮЧЫЕЕ АЮГС ДЮММШУ, Й ЙНРНПНИ ОПНХГБНДХРЯЪ ГЮОПНЯ

Destination

сЯРЮМЮБКХБЮЕР БЕПУМЧЧ КЕБСЧ ЪВЕИЙС ДХЮОЮГНМЮ ПЮАНВЕЦН КХЯРЮ, Б ЙНРНПШИ БШБНДХРЯЪ ПЕГСКЭРЮР ГЮОПНЯЮ

Sql

ODBC-ЯРПНЙНБНЕ БШПЮФЕМХЕ, СЙЮГШБЮЧЫЕЕ ЙПХРЕПХХ, ОН ЙНРНПШЛ ЯНГДЮЕРЯЪ ГЮОПНЯ

 

вРН РЮЙНЕ ODBC?

дКЪ СМХТХЙЮЖХХ ЯОНЯНАЮ ПЮАНРЮ Я АЮГЮЛХ ДЮММШУ, ЯНГДЮММШЛХ ПЮГМШЛХ ЯПЕДЯРБЮЛХ (МЮОПХЛЕП, Access, FoxPro, SQL Server Х Р. Д.), Microsoft ПЮГПЮАНРЮК ХМРЕПТЕИЯ ДНЯРСОЮ Й ДЮММШЛ, МЮГШБЮЕЛШИ ОПНРНЙНКНЛ ODBC (Open Database Connectivity - НРЙПШРЮЪ ЯБЪГЭ Я АЮГНИ ДЮММШУ). бБНД, ОНКСВЕМХЕ Х ПЮАНРЮ Я ДЮММШЛХ ОПНХЯУНДХР ОПХ ОНЛНЫХ ЯРПСЙРСПХПНБЮММНЦН ЪГШЙЮ ГЮОПНЯНБ (SQL, Structured Query Language). оПНРНЙНК ODBC НАЕЯОЕВХБЮЕР ЯРЮМДЮПР ОЕПЕДЮВХ ДЮММШУ ХГ НДМНЦН ОПХКНФЕМХЪ Б ДПСЦНЕ.

йПНЛЕ РНЦН, НМ ОНГБНКЪЕР ЯНГДЮБЮРЭ, СДЮКЪРЭ, ПЕДЮЙРХПНБЮРЭ, ЯНПРХПНБЮРЭ Х ТХКЭРПНБЮРЭ ОНКЪ, ГЮОХЯХ Х РЮАКХЖШ.

Microsoft Jet

Microsoft Jet ≈ ЩРН ЪДПН АЮГШ ДЮММШУ, ЙНРНПНЕ НАЕЯОЕВХБЮЕР БНГЛНФМНЯРЭ ДНЯРСОЮ Й ДЮММШЛ ХГ КЧАНЦН ОПХКНФЕМХЪ, ОНДДЕПФХБЮЧЫЕЦН OLE Automation, Б ВЮЯРМНЯРХ VBA Х Excel, МЕГЮБХЯХЛН НР ХМРЕПТЕИЯЮ ЙНМЙПЕРМНИ ЯХЯРЕЛШ СОПЮБКЕМХЪ АЮГЮЛХ ДЮММШУ. ъДПН Jet УПЮМХР ЯБНЧ ХМТНПЛЮЖХЧ ОН СЛНКВЮМХЧ Б ТЮИКЮУ Я АЮГЮЛХ ДЮММШУ, ХЛЕЧЫХУ ПЮЯЬХПЕМХЕ mdb. рЮЙХЕ ТЮИКШ ЯНДЕПФЮР РЮАКХЖШ, ЛНДСКХ, ТНПЛШ, НРВЕРШ, ГЮОПНЯШ Х ХМДЕЙЯШ. йНМЕВМН, ТНПЛЮР mdb ≈ ЩРН МЕ ЕДХМЯРБЕММШИ ТНПЛЮР АЮГ ДЮММШУ, Я ЙНРНПШЛХ ПЮАНРЮЕР Microsoft Jet. нМ ОНДДЕПФХБЮЕР ТНПЛЮРШ АЮГ ДЮММШУ, ЯНГДЮММШУ Я ОНЛНЫЭЧ FoxPro, dBASE Х Р. Д.

Dюн ≈ НАЗЕЙРМШИ ДНЯРСО Й ДЮММШЛ

нАЗЕЙРМШИ ДНЯРСО Й ДЮММШЛ (DAO, Data Access Objects) ЯНГДЮБЮКЯЪ ЙЮЙ НАЗЕЙРМН-НПХЕМРХПНБЮММШИ ХМРЕПТЕИЯ ЪДПЮ АЮГШ ДЮММШУ Jet, Р. Е. ДКЪ НАЕЯОЕВЕМХЪ БГЮХЛНДЕИЯРБХЪ ЛЕФДС ОПХКНФЕМХЕЛ, МЮОПХЛЕП VBA, Х ЪДПНЛ АЮГШ ДЮММШУ Jet. б Office 97 БЙКЧВЕМЮ МНБЮЪ БЕПЯХЪ Dюн - Dюн 3.5, ЙНРНПЮЪ ОНГБНКЪЕР ЛЮМХОСКХПНБЮРЭ ДЮММШЛХ Б НАУНД ЪДПЮ Jet. б Dюн 3.5 ЛНФМН МЮОПЪЛСЧ ЯБЪГШБЮРЭЯЪ Я ХЯРНВМХЙЮЛХ ДЮММШУ ВЕПЕГ ODBCDirect, ВРН ДЕКЮЕР ОПХКНФЕМХЪ АНКЕЕ АШЯРПНДЕИЯРБСЧЫХЛХ.

нАЗЕЙРШ ДНЯРСОЮ Й ДЮММШЛ ЪБКЪЧРЯЪ КНЦХВЕЯЙХЛ ОПЕДЯРЮБКЕМХЕЛ ПЕКЪЖХНММНИ АЮГШ ДЮММШУ: БУНДЪЫХУ Б МЕЕ РЮАКХЖ, ГЮОХЯЕИ, ОНКЕИ, ХМДЕЙЯНБ Х Р. Д.

бЯЕЦН ХЛЕЕРЯЪ 17 РХОНБ НАЗЕЙРНБ ДНЯРСОЮ Й ДЮММШЛ. мЮ ПХЯ. 15.10 ОПЕДЯРЮБКЕМШ НАЗЕЙРШ ДНЯРСОЮ Й ДЮММШЛ ОЕПБШУ ВЕРШПЕУ ХЕПЮПУХВЕЯЙХУ СПНБМЕИ. б БЕПУМЕИ ВЮЯРХ ХЕПЮПУХХ НАЗЕЙРНБ ДНЯРСОЮ МЮУНДХРЯЪ НАЗЕЙР DBEngine, МЕОНЯПЕДЯРБЕММН ОПНЖЕЯЯНП ЪДПЮ АЮГШ ДЮММШУ Jet. нАЗЕЙР Error, ЪБКЪЧЫХИЯЪ ЩКЕЛЕМРНЛ ЯЕЛЕИЯРБЮ Errors, УПЮМХР ХМТНПЛЮЖХЧ НА НЬХАЙЮУ, БНГМХЙЮЧЫХУ ОПХ НАЗЕЙРМНЛ ДНЯРСОЕ Й ДЮММШЛ. нАЗЕЙР DBEngine РЮЙФЕ ЯНДЕПФХР Б ЯЕАЕ ЯЕЛЕИЯРБН workspaces НАЗЕЙРНБ workspace, ЙНРНПШЕ СЯРЮМЮБКХБЮЧР ХЛЕМНБЮММШЕ ЯЕЮМЯШ ПЮАНРШ ОНКЭГНБЮРЕКЪ. йЮФДШИ НАЗЕЙР workspace БЙКЧВЮЕР ЯЕЛЕИЯРБН Databases, ЙНРНПНЕ ЯНЯРНХР ХГ НДМНЦН ХКХ АНКЕЕ НАЗЕЙРНБ Database, ЪБКЪЧЫХУЯЪ НРЙПШРШЛХ АЮГЮЛХ ДЮММШУ. нАЗЕЙР TabieDef, ЩКЕЛЕМР ЯЕЛЕИЯРБЮ TabieDefs, ОПЕДЯРЮБКЪЕР ЯНУПЮМЕММНЕ НОПЕДЕКЕМХЕ НЯМНБМНИ ХКХ ОПХЯНЕДХМЕММНИ РЮАКХЖШ. нАЗЕЙР QueryDef, ЩКЕЛЕМР ЯЕЛЕИЯРБЮ QueryDefs, ОПЕДЯРЮБКЪЕР ЯНУПЮМЕММНЕ НОПЕДЕКЕМХЕ ГЮОПНЯЮ Б АЮГЕ ДЮММШУ Microsoft Jet ХКХ БПЕЛЕММНЕ НОПЕДЕКЕМХЕ ГЮОПНЯЮ Б ПЮАНВЕИ НАКЮЯРХ ODBCDirect. нАЗЕЙР Recordset, ЩКЕЛЕМР ЯЕЛЕИЯРБЮ Recordsets, ОПЕДЯРЮБКЪЕР МЮАНП ГЮОХЯЕИ Б НЯМНБМНИ РЮАКХЖЕ ХКХ МЮАНП ГЮОХЯЕИ, ЙНРНПШИ ОНКСВЮЕРЯЪ Б ПЕГСКЭРЮРЕ БШОНКМЕМХЪ ГЮОПНЯЮ. б НАЗЕЙРЮУ Container ЦПСООХПСЧРЯЪ НДМНРХОМШЕ НАЗЕЙРШ, Ю НАЗЕЙР Relation ОПЕДЯРЮБКЪЕР ЯБЪГЭ ЛЕФДС ОНКЪЛХ РЮАКХЖ ХКХ ГЮОПНЯЮЛХ.

пХЯ. 15.10. хЕПЮПУХЪ НАЗЕЙРНБ Dюн

дКЪ БНГЛНФМНЯРХ ХЯОНКЭГНБЮМХЪ НАЗЕЙРНБ ДНЯРСОЮ МЕНАУНДХЛН ГЮДЮРЭ ЯЯШКЙС МЮ АХАКХНРЕЙС Dюн 3.5. дКЪ ЩРНЦН Б ПЕДЮЙРНПЕ VBA МЕНАУНДХЛН БШАПЮРЭ ЙНЛЮМДС яЕПБХЯ, яЯШКЙХ (Tools, References) Х Б ОНЪБХБЬЕЛЯЪ ДХЮКНЦНБНЛ НЙМЕ яЯШКЙХ (References) СЯРЮМНБХРЭ ТКЮФНЙ МЮОПНРХБ ЩКЕЛЕМРЮ Microsoft DAO 3.5 Object Library

оНПЪДНЙ ПЮАНРШ ОПХ НАЗЕЙРМНЛ ДНЯРСОЕ Й ДЮММШЛ

оПХ ХГБКЕВЕМХХ ХМТНПЛЮЖХХ Я ОНЛНЫЭЧ НАЗЕЙРМНЦН ДНЯРСОЮ Й ДЮММШЛ МЮДН:

яНГДЮМХЕ ПЮАНВЕИ НАКЮЯРХ

пЮАНВСЧ НАКЮЯРЭ ЛНФМН ЯНГДЮРЭ ЛЕРНДНЛ CreateWorkspace НАЗЕЙРЮ DBEngine.

яХМРЮЙЯХЯ:

Set пЮАНВЮЪнАКЮЯРЭ = CreateWorkspace(Name, UserName, Password, UseType)

юПЦСЛЕМРШ:

пЮАНВЮЪнАКЮЯРЭ

нАЗЕЙРМЮЪ ОЕПЕЛЕММЮЪ, ОПЕДЯРЮБКЪЧЫЮЪ ЯНГДЮБЮЕЛШИ НАЗЕЙР Workspace

Name

бШПЮФЕМХЕ ХКХ ОЕПЕЛЕММЮЪ РХОЮ string, ЯНДЕПФЮЫЮЪ СМХЙЮКЭМНЕ ХЛЪ МНБНЦН НАЗЕЙРЮ workspace

UserName

бШПЮФЕМХЕ ХКХ ОЕПЕЛЕММЮЪ РХОЮ string, НОПЕДЕКЪЧЫЮЪ БКЮДЕКЭЖЮ МНБНЦН НАЗЕЙРЮ workspace

Password

бШПЮФЕМХЕ ХКХ ОЕПЕЛЕММЮЪ РХОЮ string, ЯНДЕПФЮЫЮЪ ОЮПНКЭ ДКЪ ДНЯРСОЮ Й МНБНЛС НАЗЕЙРС workspace

UseType

дНОСЯРХЛШЕ ГМЮВЕМХЪ: dbUseJet (ЯНГДЮМХЕ ПЮАНВЕИ НАКЮЯРХ ЪДПЮ Microsoft Jet) Х dbUseODBC (ЯНГДЮМХЕ ПЮАНВЕИ НАКЮЯРХ ODBCDirect)

мЮОПХЛЕП, ДКЪ ЯНГДЮМХЪ ПЮАНВЕИ НАКЮЯРХ Microsoft Jet ЛНФМН ХЯОНКЭГНБЮРЭ ЯКЕДСЧЫХЕ ДБЕ ХМЯРПСЙЖХХ:

Dim пЮАНВЮЪнАКЮЯРЭ As CreateWorkspace

Set пЮАНВЮЪнАКЮЯРЭ = DBEngine.CreateWorkspace(Name:="лНЪнАКЮЯРЭ", UserName:="admin", Password:="", UseType:=dbUseJet)

пЮАНВСЧ НАКЮЯРЭ ODBCDirect ЛНФМН ЯНГДЮРЭ ЯКЕДСЧЫХЛ НАПЮГНЛ (ЯЯШКЙЮ МЮ НАЗЕЙР DBEngine ОПХЛЕМЪЕРЯЪ ОН СЛНКВЮМХЧ, ОНЩРНЛС БН БРНПНИ ХМЯРПСЙЖХХ НАЗЕЙР DBEngine НОСЫЕМ):

Dim пЮАНВЮЪнАКЮЯРЭ As CreateWorkspace

Set пЮАНВЮЪнАКЮЯРЭ = CreateWorkspace(Name:="лНЪнАКЮЯРЭ", UserName:="UID'V Password:="", UseType:=dbUseODBC)

нРЙПШРХЕ АЮГШ (ХЯРНВМХЙЮ) ДЮММШУ

нРЙПШРЭ АЮГС ДЮММШУ ЛНФМН ЛЕРНДНЛ OpenDatabase НАЗЕЙРЮ Workspace.

яХМРЮЙЯХЯ:

Set аЮГЮдЮММШУ = пЮАНВЮЪнАКЮЯРЭ.OpenDatabase (name, options, readonly, connect)

юПЦСЛЕМРШ:

аЮГЮдЮММШУ

нАЗЕЙРМЮЪ ОЕПЕЛЕММЮЪ, ОПЕДЯРЮБКЪЧЫЮЪ НРЙПШБЮЕЛШИ НАЗЕЙР Database

пЮАНВЮЪнАКЮЯРЭ

нАЗЕЙРМЮЪ ОЕПЕЛЕММЮЪ, ОПЕДЯРЮБКЪЧЫЮЪ ЯСЫЕЯРБСЧЫХИ НАЗЕЙР workspace, ЙНРНПШИ АСДЕР ЯНДЕПФЮРЭ АЮГС ДЮММШУ. еЯКХ ЮПЦСЛЕМР пЮАНВЮЪнАКЮЯРЭ МЕ ГЮДЮМ, ЛЕРНД OpenDatabase ХЯОНКЭГСЕР ЯРЮМДЮПРМСЧ ПЮАНВСЧ НАКЮЯРЭ

Name

Выражение или переменная типа string, задающая имя существующего файла базы данных с ядром Microsoft Jet или имя источника данных ODBC

Options

  • Для рабочей области ядра Microsoft Jet допустимыми являются следующие значения аргумента: True (открытие базы данных для монопольного доступа) и False (по умолчанию, открытие базы данных для общего доступа)
  • Для рабочей области ODBCDirect допустимыми являются следующие значения аргумента:
    dbDriverNoPrompt,
    dbDriver Prompt,
    dbDrive r Complete,
    dbDriverCompleteRequired

Readonly

Допустимые значения: True (база данных открывается только для чтения) и значение False (по умолчанию, база данных открывается как для чтения, так и для записи)

Connect

Дополнительный аргумент, содержащий сведения о подключении, в том числе и пароли

Для закрытия базы данных следует применять метод close.

Например, для открытия базы данных с ядром Microsoft Jet можно использовать следующие две инструкции:

Dim БазаДанных As Database

Set БазаДанных = РабочаяОбласть

.OpenDatabase (Name:="C: \Пример.mdb",

Options:=True)

Объект Recordset

После открытия базы данных можно создать объект Recordset. Объект Recordset представляет собой записи исходной таблицы базы данных или результирующий набор записей, возвращаемые в результате запроса. Он позволяет управлять данными в базе данных на уровне записи. На уровне полей управление данными осуществляется объектом Field.

Имеются следующие типы объекта Recordset;

Тип

Описание

forward-only dynamic

Статический режим с последовательным доступом. Перемещаться от записи к записи можно только вперед. Этот режим самый скоростной

Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует динамическому указателю ODBC

table

dynaset snapshot

Работает с одной таблицей текущей базы данных. В этом случае данные можно индексировать, что ускоряет поиск записей и их сортировку. При поиске записей допустимо использовать вместо метода Find метод Seek

Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует указателю ключевого набора записей ODBC

В этом режиме в общем случае нельзя редактировать базу данных, но скорость работы больше, чем в двух предыдущих

Создание объекта Recordset

Объектная переменная типа Recordset создается при помощи метода openRecordSet. Как и для любой объектной переменной, ее надо сначала объявить, а только потом установить ссылку на объект, возвращаемый методом OpenRecordSet.

Синтаксис для объектов Connection и Database:

Set НаборЗапйсей = объект.OpenRecordset (Источник, Тип, Параметры, Блокировки)

Синтаксис для объектов QueryDef, Recordset и TableDef: Set НаборЗапйсей = Объект.OpenRecordset (Тип, Параметры, Блокировки) Аргументы:

Набор Записей

Объектная переменная, представляющая открываемый объект Recordset

Объект

Объектная переменная, представляющая существующий объект, используемый при создании нового объекта

Recordset

Источник

Выражение (или переменная типа string) , определяющее источник записей для нового объекта Recordset. В качестве источника записей можно указать имя таблицы или запроса, а также инструкцию SQL, которая возвращает записи. Для табличного объекта Recordset в базе данных Microsoft Jet в качестве источника допускается указание только имени таблицы

Тип

Константа, указывающая тип открываемого объекта

Recordset. Допустимые Значения: dbOpenTable,

dbOpenDynaset, dbOpenSnapshot, DbOpenForwardOnly и DbOpenDynamic

Блокировки

Устанавливает тип блокировки данных. Допустимые значения: dbReadOnly, dbPessimistic, dbOptimistic и dbOptimisticValue

Параметры

Специфицирует работу пользователя с объектом Recordset. Приведем некоторые из допустимых значений:

dbAppendOnly (пользователь может добавлять записи, но не может редактировать уже существующие), dbReadOnly (запрещено вносить изменения в записи), dbDenyWrite (запрещено другим пользователям вносить изменения)

Методы и свойства объекта Recordset

Приведем наиболее часто используемые методы и свойства объекта Recordset, позволяющие анализировать, редактировать записи базы данных. Способ их применения будет показан на примере простого приложения для работы с базой данных, разработанного в следующем разделе.

Методы объекта Recordset.

AddNew

Создает и добавляет новую запись. После внесения изменений в новую запись следует вызвать метод update для сохранения изменений и добавления записи в объект Recordset. До вызова метода update изменения в базу данных не заносятся

Clone

Создает копию объекта Recordset.

Синтаксис:

Set Копия = Оригинал . Clone

Close

Закрывает открытый объект доступа к данным

Delete

Удаляет текущую запись в обновляемом объекте

Recordset

Edit

Копирует текущую запись из обновляемого объекта Recordset в буфер копирования для последующего изменения. После внесения изменений в новую запись следует вызвать метод update для сохранения изменений и добавления записи в объект Recordset

MoveFirst,

MoveLast, MoveNext

и

MovePrevious

Делает текущей первую, последнюю, следующую или предыдущую запись объекта Recordset соответственно

FindFirst, FindLast,

FindNext и FindPrevious

Находит первую, последнюю, следующую или предыдущую запись соответственно, удовлетворяющую заданным условиям, и делает эту запись текущей записью Синтаксис:

(FindFirst | FindLast | FindNext | FindPrevious )Criteria criteria

≈ это выражение (или переменная типа string), используемая для поиска записи Приведем несколько примеров критериев:

"[Оценка] > 3" "[Фамилия] = 'Петров'" "[Оценка] =5 AND [Предмет] = 'Информатика'" " [ДатаЭкзамена] = #17/06/991


Seek

Находит в индексированном объекте Recordset типа table запись, удовлетворяющую заданным условиям для текущего индекса, и делает эту записи текущей.

Синтаксис:

Seek comparison, keyl, key2 . . . key13

Аргументы: comparison ≈ допустимые значения: "<", "<=", "=", ">=" или ">". keyl, key2, ..., key13 ≈ одно или несколько значений ключевых полей в текущем индексе объекта Recordset

GetRows

Загружает строки объекта Recordset в массив.

Синтаксис:

Set ИмяМассива = НаборЗаписей . GetRows (NumRows)

  • NumRows ≈ число строк

Update

Сохраняет вставки и изменения, произведенные в объекте Recordset При помощи методов AddNew и Edit

CancelUpdate

Отменяет все изменения объекта Recordset, выполненные При помощи методов AddNew и Edit

Свойства объекта Recordset.

BOF EOF

Возвращает значение True, если указатель текущей записи расположен перед первой записью набора записей, и значение False, если указатель текущей записи расположен на первой записи набора или на любой записи после нее Возвращает значение True, если указатель текущей записи расположен после последней записи набора, и значение False, если указатель текущей записи расположен на последней записи набора или на любой записи перед ней

Bookmark

Устанавливает или возвращает закладку, которая однозначно определяет текущую запись в объекте Recordset. Обычно используется для возврата в объект Recordset на определенное место, без указания конкретного адреса записи

NoMatch

Возвращаемые значения: True, если нужная запись не найдена, и False в противном случае

RecordCount

Возвращает число записей, к которым был осуществлен доступ в объекте Recordset. Свойство RecordCount не показывает, сколько записей содержится в объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу не удаленных записей в объекте Recordset. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast

Filter

Задает или возвращает значение, определяющее записи, которые будут включены в открываемый объект Recordset.

При указания критерия фильтрации названия полей заключаются в квадратные скобки. Приведем несколько примеров критериев:

[Оценка] = 5 [Оценка] >= 3 [Оценка] =5 AND [Предмет] = "Информатика" [Оценка] = 4 AND [Предмет] = "Информатика" [Оценка] >= 4 AND [Предмет] IN ("Информатика", "Право") [Длина] * [Ширина] > 100

В критериях вместо знака равенства допустимо использование ключевого слова LIKE, например:

[Оценка] LIKE 5

Sort

Задает или возвращает порядок сортировки записей в объекте Recordset (только в рабочей области Microsoft Jet). Для сортировки по возрастанию используется ключевое слово ASC, а по убыванию ≈ DESC.

Например,

[Оценка] ASC [Фамилия] DESC

Для сортировки первоначально по полю оценка, а потом по полю Фамилия: [Оценка] ASC, [Фамилия] DESC

 

Пример приложения

Рассмотрим работу с базой данных на примере следующего простого приложения, в котором используются все основные операции с записями. База данных находится в файле студенты.mdb, созданным в Access, и состоит из одной таблицы ПервыйКурс. В таблице имеются четыре поля: Фамилия, Группа, предмет и Оценка. При запуске приложения на экране отображается диалоговое окно Студенты первого курса.

Рис. 15.11. Диалоговое окно Студенты первого курса

Приводимая ниже программа:

  1. При активизации диалогового окна выводит в поля ввода информацию о первом студенте и в надписи всего записей указывает общее число записей в таблице.
  2. При нажатии кнопок > и < происходит перемещение на одну запись вперед и назад соответственно, а при нажатии кнопок >> и << ≈ перемещение в конец и начало таблицы соответственно.

При нажатии кнопки найти происходит поиск первой записи из таблицы с указанной фамилией (если такой записи нет, то при помощи свойства Bookmark указатель возвращается в ту же позицию, откуда начался поиск). При нажатии кнопки найти далее ищется последующая запись с той же фамилией.

  1. При нажатии кнопки Удалить удаляется запись.
  2. При нажатии кнопки новая запись создается новая запись по данным, введенным в поля ввода.
  3. При нажатии кнопки Редактировать вносятся изменения в запись из базы данных.
  4. При нажатии кнопки Закрыть закрываются база данных и диалоговое окно.
  5. При выборе переключателя хорошисты и отличники в диалоговом окне выводятся данные только о хорошистах и отличниках, а при выборе переключателя все ≈ выводится информация обо всех студентах.

'

' Переменные уровня модуля

'

Dim РабочаяОбласть As Workspace

Dim БазаДанных As Database

Dim Запись As Recordset

Dim ЗаписьДубль As Recordset

Dim Фамилия As String

Dim Критерий As String

Dim Закладка As Variant

'

Private Sub CommandButton1_Click()

'

' Найти запись по фамилии

'

' Запоминается на закладке текущая запись

Закладка = Запись.Bookmark

'

' Считывается фамилия из поля Фамилия, на ее основе

' создается критерий поиска и ищется первая запись с

' подобной фамилией '

Фамилия = Trim(TextBoxl.Text)

Критерий = "[Фамилия]="' & Фамилия & "'"

Запись.FindFirst Критерий

' Если запись с указанной фамилией найдена, то она отображается

' в диалоговом окне.

' Если запись не найдена, то отображается сообщение и

' при помощи закладки происходит возврат к записи, с которой

' был начат поиск

'

If Запись.NoMatch = False Then

ПоказатьЗапись Else

MsgBox "Запись не найдена", vblnformation, "Студенты"

Запись.Bookmark = Закладка

ПоказатьЗапись End If

End Sub

Private Sub CommandButtonlO_Click()

'

' Переход к последней записи

'

'

Запись.MoveLast ПоказатьЗапись

End Sub

'

Private Sub CommandButton2_Click()

' Найти следующую запись по фамилии

'

Закладка = Запись.Bookmark

Фамилия = Trim(TextBoxl.Text)

Критерий = "[Фамилия]='" & Фамилия & "'"

Запись.FindNext Критерий

If Запись.NoMatch = False Then

Показать Запись Else

MsgBox "Больше таких записей нет", vblnformation, "Студенты"

Запись.Bookmark = Закладка

Показать Запись

End If

End Sub

Private Sub CommandButton3_Click()

'

' Удаление записи

'

With Запись

.Delete

.MoveNext End With ПоказатьЗапись

End Sub

'

Private Sub CommandButton4_Click()

'

' Добавление записи

'

With Запись .AddNew

.Fields("Фамилия").Value = TextBoxl.Text

.Fields("Группа").Value = TextBox2.Text

.Fields("Предмет").Value = TextBox3.Text

.Fields("Оценка").Value = TextBox4.Text .Update

End With

'

Exit Sub

'

End Sub

Private Sub CommandButton5_Click()

'

' Редактирование записи

'

With Запись .Edit

.Fields("Фамилия").Value = TextBoxl.Text

.Fields("Группа").Value = TextBox2.Text

.Fields("Предмет").Value = TextBox3.Text

.Fields("Оценка").Value = TextBox4.Text

.Update End With End Sub

Private Sub CommandButton6_Click()

'

' Закрытие записи, базы данных и окна

'

Запись.Close

БазаДанных.Close

РабочаяОбласть.Close

UserForml.Hide

End Sub

Private Sub CommandButton7_Click()

' Переход к первой записи

'Запись.MoveFirst Показать Запись

End Sub

Private Sub CommandButton8_Click()

'

' Переход к предыдущей записи

'Запись.MovePrevious

'

' Если достигнута первая запись, то отображается сообщение

'

If Запись.BOF = True Then

Запись.MoveFirst

MsgBox "Первая запись", vblnformation, "Студенты"

End If

'ПоказатьЗапись

End Sub

'

Private Sub CommandButton9_Click()

' Переход к последующей записи

'

Запись.MoveNext

' Если достигнута последняя запись, то отображается сообщение

'

If Запись.EOF = True Then

Запись.MoveLast

MsgBox "Последняя запись", vblnformation, "Студенты"

End If

ПоказатьЗапись

End Sub

'

Private Sub OptionButtonl_Click()

'

' Отображение данных только о хорошистах и отличниках

'

' Создание копии записи

'

Set ЗаписьДубль = Запись.Clone

'

' Фильтрация записей по критерию

'

Запись.Filter = "[Оценка] >= 4"

'

' Создание отфильтрованной записи

'

Set Запись= Запись.OpenRecordset()

If Запись.RecordCount > 0 Then

'

' Если отфильтрованная запись существует, то она отображается

' в диалоговом окне

'ПоказатьЗапись

Else

'

' Если отфильтрованной записи нет, то отображается соответствующее

' сообщение, восстанавливается первоначальный объект Recordset

' и выбирается переключатель Все

'

MsgBox "Таких студентов нет", vblnformation, "Студенты"

Set- Запись = ЗаписьДубль.Clone

Set Запись = Запись.OpenRecordset()

OptionButton2.Value = True

End If

End Sub

Private Sub OptionButton2_Click()

'

' Отображение всех студентов

'

Set ЗаписьДубль = Запись.Clone

Set Запись = ЗаписьДубль.OpenRecordset()

ЗаписьДубль.Close

ПоказатьЗапись

End Sub

'

Private Sub UserForm_Initialize()

'

' Создание рабочей области

'

Set РабочаяОбласть = CreateWorkspace(Name:="", UserName:="admin",

Password:="", UseType:=dbUseJet)

'

' Открытие базы данных студенты.mdb

Set БазаДанных = _

РабочаяОбласть.OpenDatabase

(Name:="C:\MY_DOC\студенты.mdb",

Options:=True)

'

'

' Создание записей

'

Set Запись = БазаДанных.OpenRecordset("ПервыйКурс",dbOpenDynaset)

'

' Принудительное перемещение на последнюю запись для того,

' чтобы определить число записей Запись.MoveLast

'

' Вывод числа записей в надписи Номер записи из

'

'

Labels.Caption = "Всего записей " & CStr(Запись.RecordCount)

'

' Принудительное перемещение на первую запись

'Запись.MoveFirst

'

' Вывод первой записи в поля диалогового окна

'

ПоказатьЗапись With UserForm1

.Caption = "Студенты первого курса"

.OptionButton2.Value = True End With

End Sub

'

Sub ПоказатьЗапись()

'

' Процедура вывода записи в поля диалогового окна

'

TextBoxl.Text = Запись.Fields("Фамилия").Value

TextBox2.Text = Запись.Fields("Группа").Value

TextBox3 .Text = Запись.Fields ("Предмет.").Value

TextBox4.Text = Запись.Fields("Оценка").Value

'

End Sub