цКЮБЮ
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-ЯРПНЙНБНЕ
БШПЮФЕМХЕ, СЙЮГШБЮЧЫЕЕ ЙПХРЕПХХ, ОН ЙНРНПШЛ ЯНГДЮЕРЯЪ ГЮОПНЯ |
||
дКЪ СМХТХЙЮЖХХ
ЯОНЯНАЮ ПЮАНРЮ Я АЮГЮЛХ ДЮММШУ, ЯНГДЮММШЛХ ПЮГМШЛХ ЯПЕДЯРБЮЛХ (МЮОПХЛЕП, Access,
FoxPro, SQL Server Х Р. Д.), Microsoft ПЮГПЮАНРЮК ХМРЕПТЕИЯ ДНЯРСОЮ Й ДЮММШЛ,
МЮГШБЮЕЛШИ ОПНРНЙНКНЛ ODBC (Open Database Connectivity - НРЙПШРЮЪ ЯБЪГЭ Я АЮГНИ
ДЮММШУ). бБНД, ОНКСВЕМХЕ Х ПЮАНРЮ Я ДЮММШЛХ ОПНХЯУНДХР ОПХ ОНЛНЫХ ЯРПСЙРСПХПНБЮММНЦН
ЪГШЙЮ ГЮОПНЯНБ (SQL, Structured Query Language). оПНРНЙНК ODBC НАЕЯОЕВХБЮЕР
ЯРЮМДЮПР ОЕПЕДЮВХ ДЮММШУ ХГ НДМНЦН ОПХКНФЕМХЪ Б ДПСЦНЕ.
йПНЛЕ РНЦН,
НМ ОНГБНКЪЕР ЯНГДЮБЮРЭ, СДЮКЪРЭ, ПЕДЮЙРХПНБЮРЭ, ЯНПРХПНБЮРЭ Х ТХКЭРПНБЮРЭ ОНКЪ,
ГЮОХЯХ Х РЮАКХЖШ.
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 |
|
||
Readonly |
Допустимые значения:
True (база данных открывается только для чтения) и значение False
(по умолчанию, база данных открывается как для чтения, так и для записи) |
||
Connect |
Дополнительный
аргумент, содержащий сведения о подключении, в том числе и пароли |
||
Для закрытия
базы данных следует применять метод close.
Например,
для открытия базы данных с ядром Microsoft Jet можно использовать следующие
две инструкции:
Dim БазаДанных
As Database
Set БазаДанных = РабочаяОбласть
.OpenDatabase
(Name:="C: \Пример.mdb",
Options:=True)
После открытия
базы данных можно создать объект 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)
|
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. Диалоговое окно Студенты первого курса
Приводимая
ниже программа:
При нажатии
кнопки найти происходит поиск первой записи из таблицы с указанной фамилией
(если такой записи нет, то при помощи свойства Bookmark указатель возвращается
в ту же позицию, откуда начался поиск). При нажатии кнопки найти далее ищется
последующая запись с той же фамилией.
'
' Переменные уровня модуля
'
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