ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Курс лекцій з VB 5.0
         

     

    Інформатика, програмування

    Програмування в середовищі VB 5.0

    У додатках VB 5.0 виконувані рядки повинні розміщуватися всерединіпроцедур або функцій. Оператори в VB рідко використовують номери рядків, абудь-які з них зазвичай починаються з нового рядка. Строки обмежені довжиною в
    1023 символу. можна розширювати рядка, використовуючи символ "_" після пробілу вкінці рядка. Кілька операторів можна поєднувати в одному рядку,розділяючи їх ":".

    Коментарі задаються верхній лапками ( '), або оператором REM.
    Коментар може бути виведений окремим рядком, або в кінці рядка. Піддругому випадку краще використовувати лапки ( '), ніж REM, тому що REM тутвимагає роздільник (:). Наприклад,

    DIM FARENG 'мінлива для обчислення t0 за Фаренгейтомабо

    DIM FARENG: REM мінлива для обчислення t0 за Фаренгейтом

    Оператор End - програма зупиняється. Після оператора Endзакриваються всі вікна, відкриті програмою, а сама вона стирається з пам'яті.
    Всередині програми VB може бути скільки завгодно операторів End, але зазвичайкраще використовувати тільки один оператор End у процедурі обробки подій
    QueryUnload для основної форми. У цьому випадку всі оператори End замінюютьсяна Unload Me, який викликає собі QueryUnload для форми.

    Одним з основних операторів є присвоювання значення зміннимта встановлення значень властивостей.

    Наприклад,

    1) Result = 0.5 (20 ім'я значення змінної

    Можна використовувати оператор LET

    2 ) об'ект.свойство = значення txtDisplay.Text = ""

    Властивості за замовчуванням

    У будь-якого об'єкта VB є властивість за замовчуванням. Наприклад, длятекстового поля це властивість Text. При посиланні на даний властивість можна невказувати його ім'я.

    Наприклад, txtDisplay = "Привіт!"

    Деякі властивості можуть приймати значення TRUE або FALSE. У VB5є вбудовані константи для позначення даних властивостей, наприклад,cmdExit = False буде приховувати командну кнопку, поки не з'явиться виразcmdExit = True.

    Всередині себе VB використовує значення 0 для False і -1 для True (абобудь-яке нульове значення).

    Можна використовувати наступне вираз для зміни властивості напротилежне cmdExit.Visible = Not (cmdExit.Visible).

    Змінні. Імена змінних менше 255 символів починаються з літери, заякою йдуть інші літери, цифри або символ "_". Регістр значення немає. В якості імен змінних можна використовувати зарезервованіслова, наприклад, Print. Прийнято використовувати змішаний регістр при завданніімен змінних, що складаються з декількох слів, наприклад, CurrentValue.

    Типи змінних. Використовується 14 стандартних типів змінних. Можнавизначити і власний тип. Основні типи:

    String - рядкові змінні. Для позначення цього типу можнадодати символ "$" до кінця імені.

    Наприклад, Message $ = txtDisplay.Text

    Integer - цілочисельних мінлива в діапазоні -32768 (+32767. Дляпозначення в кінці імені додається "%" арифметичний операторвиконується швидко.

    Наприклад, IntVar% = 5

    LongInteger - довге ціле від -2147483648 до 2147483647.
    Позначається "&".

    LongInt & = 123456789.

    SinglePrecision зберігає дробові числа з точністю до 7 цифр. Для начисел може досягати 38 знаків з позначенням "!". Обчислення ч данимизмінними буде приблизними.

    DoublePrecision "#". Числа з точністю до 16 цифр і довжиною до 300символів. Обчислення теж приблизні, а швидкість невелика.
    Використовується для наукових розрахунків.

    Currency - використовується під час перетворення десяткових чисел в двійковуформу і навпаки. Позначення - "@". Може мати до 14 цифр до коми і до
    4 цифр - після. Використовується для фінансових розрахунків.

    Date - значення дати і часу від 00 час.1 января.100 року до 00час.31декабря.9999 р. Значення позначається "#".

    Time = # May 5, 1999 #

    Byte - для зберігання цілих чисел від 0 до 255. Заощаджує оперативнупам'ять і розміри масивів. Використовується також при роботі з двійковимифайлами.

    Variant - дані будь-якого типу. Якщо VB не знає тип прийнятих даних,використовується цей тип. Використання його уповільнює роботу програм, тому щовимагає часу і ресурси для операцій перетворення типів.

    На відміну від інших версій Basic в одній програмі не можна використовуватиодні й ті ж імена змінних, що відрізняються тільки типом. Наприклад, A% і А!

    При першому використанні змінної VB тимчасово привласнює змінноїтип Variant і пусте значення. Це значення зникає в той момент, колизмінної привласнюється реальне. Будь-який тип даних має своє "порожня"значення. Для String це рядок нульової довжини "". Для чисельних зміннихце 0.

    Можна не використовувати ідентифікатори для позначення типу змінної,а використовувати оператор Dim. Оператор Dim служить для оголошення типівзмінних.

    Dim Years As Integer

    Dim Amount As Currency

    . . . .

    Оголошення можна комбінувати в одному рядку.

    Dim Years As Integer, Amount As Currency

    Dim Result без типу присвоює змінній тип Variant.

    Якщо в програмі використовуються неоголошені змінні, легкодопустити помилку при написанні їх імені. У цьому випадку використовуєтьсяпримусове оголошення змінних за допомогою оператора Option Explicit.
    Цей оператор не використовується в конкретних процедурах обробки подій, арозміщується в розділі General форми, щоб бути доступним всім процедурамобробки подій. Після того, як VB зустрічає оператор Option Explicit,він не дозволяє використовувати неоголошені змінні. Цей операторможна використовувати для зміни значень за замовчуванням.

    Область видимості змінних

    У програмах VB5 всі змінні ізольовані усередині процедур. Тобтомінлива Result в одній процедурі не впливає на значення змінної з тимже ім'ям в іншій процедурі. Тобто змінні є локальними повідношенню до процедур, якщо не зазначено інакше.

    Іноді необхідно, щоб якась мінлива була доступна всімпроцедурам форми. Такі змінні називають змінними рівня форми абомодуля. Змінні рівня форми також оголошуються в розділі General здопомогою операторів Private або Dim.

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

    Це робиться в розділі Declarations будь-якого модуля коду:

    Public Amount As Single або Global Amount As Single

    Коли VB викликає процедуру обробки події, старі значеннялокальних змінних знищуються. Вони приймають значення за замовчуванням.
    Такі змінні називаються динамічними. Але в деяких випадкахнеобхідні статичні змінні, які не ініціалізувалися повторно привиклику процедури. Часто такі змінні використовуються для лічильників, їхвикористовують, щоб зробити елементи управління видимими або невидимими.
    Щоб оголосити статичну змінну всередині процедури необхідний оператор
    Dim замінити на Static.

    Static Amount As Single, Is_Visible As Boolean.

    Якщо необхідно, щоб всі змінні у процедурі були статичними,необхідно додати

    Static Private Sub cmdLom_Click ()

    Строки

    Операція конкатенації для складання кількох рядків + або &

    Наприклад, A $ = "Іванов"

    B $ = "Іван"

    C $ = "Іванович"

    D $ = A $ & B $ & C $ або D $ = A $ + B $ + C $

    Відмінність. За допомогою "&" можна об'єднувати рядкові та інші види.
    Наприклад, C = A% & B $, зміниться їх тип на Variant.

    Для переходу до нової рядку при друці символів (переклад каретки)використовується вбудована const VbCrLf. Наприклад, щоб розірвати рядок уінформаційної панелі або в многостроковом текстовому полі можна

    Message $ = "1-й рядок"

    Message $ = Message $ + VbCrLf + "2-й рядок" < p> MsgBox Message $

    Зауваження. Якщо в програмі використовуються числа і вони не присвоюютьсязмінної Variant, то VB вважає:

    1) Якщо число не має десяткового дробу і лежить в діапазоні від

    -327686 +32767, то це Integer.

    2) Якщо не має десяткового дробу і лежить в діапазоні для Long

    Integer, то це Long Int.

    3) Якщо має десяткову крапку і лежить в діапазоні для чисел із звичайною точністю ( 7 цифр), то це Single precision.

    4) Якщо має десяткову крапку, але лежить поза діапазону, то це Double precision.

    Такі приблизні розрахунки часто приводять до проблем. Наприклад, VBвважає, що тип результату з двома цілими числами є ціле. Наприкладрезультат Print 123456 (789 виходить за рамки цілого і виникає помилкапереповнення. Тоді необхідно використовувати ідентифікатор хоча б для однієїзмінної Print 123456 & (789.

    Можна також використовувати вбудовані функції для перетворення типів,наприклад, LInt - округлює число до цілого, Clong - до довгого цілого,
    Cvar - перетворить до Var.

    Якщо проводяться операції зі змінними Variant, то не виникаєпроблем з перетворенням типів.

    Крім звичайних, десяткових чисел, VB використовує двійкові ішістнадцяткові. Останні позначаються з префіксом & H. Наприклад, число
    49 = & H31.

    шістнадцяткові цифри використовуються для кодування різних кольорів:будь-який код кольору складається з 6 шістнадцяткові цифр від & H000000 & = 0 до
    & HFFFFFF & (довге ціле) (16777215).

    Взагалі конкретний колір визначається кількістю R червоного, зеленого Gі синього кольорів B у всіляких сполученнях. У коді кольору VB дваостанні цифри означають кількість червоного, дві середні - кількістьзеленого, а два перші - кількість синього, наприклад

    & H0000FF & - максимально червоний

    & H00FF00 & - максимально зелений

    & HFF0000 & - максимально синій

    & H000000 & - чорний

    & HFFFFFF & - білий

    & H00FFFF & - жовтий (червоний + зелений)

    & H808080 & - сірий (рівні кількості кольорів)

    Константи

    Для незмінних значень в програмі використовуються константи. Константиоголошуються аналогічно змінним, за тими ж правилами: ім'я містить небільше 200 символів, перший символ буква. Якщо в програмі використовуєтьсятільки одна форма, то константу можна оголосити у розділі DeclarationHousдля об'єкта General. Або ж можна й безпосередньо у процедурі, але цегірше. Константу оголошують через зарезервовані слова Const. Наприклад,

    Const Pi = 3? 14159

    Const Course = "Informatics"

    VB5 має тільки набір вбудованих констант, наприклад, VbCrLf або
    VbOrOnly. Їх можна додавати до тексту програми з вікна Object Browser (F2або меню View). Щоб вставити Const в програмі:
    Курсор повинен бути у вікні коду.
    У вікні Object Browser клацнути на кнопці Copy to Clipboard.
    Перейти в програмі на місце вставки і натиснути Ctrl + V. < p> Вбудовані функції

    Особливе значення мають рядкові функції, тому що в полях введення інформаціязберігається в текстовому форматі або в форматі ariant. Використання жнеявних перетворень типів з Variant часто призводить до проблем іє більш повільним.

    рядкові функції:

    = Space (число пропусків) - видає рядок, що складається з одних прогалин,причому число символів в рядку визначається параметром у дужках.

    = String (число, рядковий вираз $) - формує рядок, що міститьоднакові символи.

    Наприклад, X $ = String (10, "z") - 10z

    = Len (рядковий вираз) - довжина поточного рядка з проблемами інадрукованими символами.

    = Mid (рядок, початок [, довжина])

    Mid ( "Visual Basic", 1,6) = "Visual"

    Mid ( "Visual Basic", 8,6) = "Basic"

    Mid ( "Visual Basic", 8) = "Basic"

    Приклад. Підрахунок числа точок у рядку

    Points% = 0

    Length% = Len (Text $)

    For I% = 1 to Length%

    If Mid (Text $, I%, 1) = "." then

    Points $ = Points $ + 1

    End If

    Next I%

    = Left (дані для, № до позиції)

    = Right (рядок, с № позиції)

    Функцію Mid можна використовувати для зміни змісту всерединіпоточного рядка. Наприклад

    X $ = "Best Basic"

    Mid (X $, 1,5) = "Quick" яку кількість символівз якого символу буде взято з нового рядкавставляється новарядок поверх старої частини

    = Insert ([початкова позиція], рядок для пошуку, підрядок) чи є даний рядок частиною іншого рядка, видає номер позиції,з якої починається підрядок.

    Text $ = "QuickBasic"

    X $ = Instr (1, Text $, "Basic") = 6.

    Якщо підрядок не знайдено Instr повертає нульове значення (False).

    Приклад.

    If Instr (Text $, "(") then

    Print "символ знайдено"

    Else

    Print "Не знайдено"

    End If

    = LСase, = UСase - перетворить всі символи рядка в нижній (верхній )регістр

    Замість Lcase $ Ucase $

    = Str lomp - для порівняння рядків

    Нехай X = StrComp (A $, B $) =

    Якщо A $ або B $ порожня, то х = NULL

    Якщо використовувати StrComp (A $, B $, 1) - регістр не враховується, а якщо
    StrComp (A $, B $, 0) - регістр враховується.

    = Trim (рядок $) - знищує прогалини початку і кінці рядка

    LTrim (рядок $) - знищує прогалини в лівій частині рядка

    RTrim (рядок $) - знищує прогалини в правій частині

    Всі рядкові функції, за винятком Mid, не змінюють рядок, астворюють її копію і потім з нею працюють.

    Керуючі структури у програмі

    Певні цикли

    For ___ Next

    For I% = 1 to 10 (% - цілочисельний тип для прискорення роботи циклу)

    Print I%

    Next I%

    Цикл завершується, не в той момент, коли значення лічильника дорівнюєкінцевому, а коли воно перевищує його.

    Приклад. Друк всіма доступними шрифтами екрану.

    Private Sub Form_Click ()

    Dim I As Integer

    For I = 0 to Screen.FontCount - 1

    FontName = Screen.Fonts (I)

    Print "Це шрифт"; Screen.Fonts (I)

    Next I

    End Sub

    Невизначені цикли

    Не виконуються фіксоване число разів. Цикл може виконуватися або нів залежності від результату, обчислюваного всередині циклу

    Do

    Вираз

    Loop Until виконується умова

    Приклад. Перевірка пароля

    Private Sub Form_Load ()

    Do

    X $ = InputBox $ ( "Пароль ?")

    Loop Until X $ = "VB"

    End Sub

    Для зупинки нескінченного процесу використовують клавіші "Break" або
    Run | End або закрити програму. У програмі можна використовувати оператор
    Exit Do (або Exit For), які переводять програму до оператора наступногопісля циклу.

    Складні невизначені цикли

    У невизначених циклах перевірка відбувається в кінці циклу і лічильниказбільшується ще на 1. Іноді це викликає зайве оновлення лічильника.
    Можна пересунути перевірку умови на початок циклу:

    Do Until умова

    Тіло циклу Вираз

    Loop

    Do While < p> Do

    Loop Until аналогічний

    Do

    Loop While умова

    Приклад.

    Do Do

    Loop Until N> 5 (Loop While N = 0 and N - наступний запис,>
    - Подальша запис), буде змінювати вміст зв'язаного елементауправління.

    Інші властивості елемента керування Data.

    Connect - визначає тип БД, наприклад, FoxPro 3.0.

    Exclusive = True - заборона доступу до БД, поки користувач її незакриє (після цього необхідно ... Share.exe)

    ReadOnly (True/False)

    RecordSetType - якщо RecordSet створюється за допомогою коду або елементауправління.

    Метод Refresh-за цим методом всі пов'язані елементи формионовлюють свій стан у відповідності з поточним станом таблиці.

    Data1.Refresh.

    Він відкриває БД, а також встановлює вказівник запису на першурядок у таблицю або мережі перегляду.

    Властивість RecordSet об'єкта Data - це уявна таблиця, до якоїпідключений елемент Data. Це може бути реальна таблиця з RecordSource абосітка перегляду, що визначається SQL-виразом.

    Методи RecordSet

    AddNew - очищення буфера копіювання, що містить дані, якіповинні бути записані в БД, і переміщення поточного запису в кінець. =
    Додавання запису, яка стає поточною.

    Data1.RecordSet.AddNew.

    Delete - видалення поточного запису.

    Update - реальна пересилання вмісту буфера копіювання в таблицюабо dynaset.

    Edit - копіює поточну запис у буфер копіювання для можливості їїредагування.

    MoveNext - перейти на наступний запис

    MovePrevious - перейти на попередній запис

    MoveLast - перейти на останній запис

    MoveFirst -- перейти на перший запис

    BOF - початок файлу.

    EOF - кінець файлу.

    RecordCount - кількість записів з першої до поточної.

    Приклад. Видалення всіх записів в таблиці.

    Data1.RecordSet.MoveFirst

    Do While Data1.RecordSet.EOF

    Data1.RecordSet.Delete

    Data1.RecordSet.MoveNext

    Loop

    Властивість RecordSource - джерело записів, дозволяє крім таблиць БДвикористовувати оператори SQL, щоб виділити підмножина записів,задовольняють деяким умовам. Це дозволяє створювати програмніелемента dynaset або snapshop.

    Введення наступний фраз:

    Select - відбір інформації з полів.

    From - вказує ім'я таблиці.

    Where - визначає умови вибірки.

    Group By - для розподілу вибраних записів в певні групи.

    Having - визначає умова, якому повинна задовольняти наступнагрупа записів.

    Order By - порядок сортування вибраних записів.

    Наприклад.

    Data1.RecordSource = "Select Name, Address From AdressBook ...

    Data1.RecordSource = "Select Name, Address From AdressBook

    Data1.RecordSource =" Select Name, Address From AdressBook Where Name
    = 'Іванов'''

    ". . . . Like''Іван "(Івасів, Іваницький, Іванченко ...)

    Select Employers.Dept, MName From Supervisors, Employers Where
    Employers.Dept = Supervisiors.Dept

    Можна використовувати змінні

    Data1.RecordSource = "Select * From Telephone Where Name = '" & A &"'"

    Text1.Text

    У фразою Where можна використовувати кінцеві операції And, Or, Not дляз'єднання кількох виразів або операції порівняння =,,
    Between, Like, In (для записів у БД)

    Наприклад

    Data1.RecordSource = "Select * From Products

    Where Tovar in (Select Tovar From_ Details Where Price> = 25) "

    Крім запитів SQL можна змінювати (Update, Set - нове значення
    Where), додавати (Insert into), видаляти (Delete From) запису в таблиці.

    Наприклад

    Dim A As String

    A = "Update Orders"

    A = A + "Set Amount = Amount * 1.1, Cast = Cast * 0.97"

    A = A + "Where Order = 'Цемент'"

    Data1.Database.Execute ... Query - запит з впливом

    Властивість Value

    Можна посилатися на деяке поле поточного запису, навіть якщо на формінемає пов'язаного елементу.

    На?? Ример

    Sub

    Dim A As String

    A = Data1.RecordSet.Fields ( "Name"). Value

    MsgBox "Прізвище:" + A

    End Sub

    Об'єктна модель DAO

    Об'єктна модель DAO - об'єктно - орієнтований інтерфейспроцесора БД Jet. Це ієрархія класів, які є логічнимподанням реляційної моделі бази даних. Ці класи використовуються длястворення об'єктів доступу до даних, які звертаються до конкретної бази даних.

    DBEngine

    Workspace

    Database

    TableDef QueryDef Recordset Container
    Relation

    Field Field Field
    Document Field

    Index Parameter

    Error Field

    Рис. Фрагмент об'єктної ієрархії DAO.

    Наявність об'єктної ієрархії означає, що об'єкти можуть міститиінші об'єкти, які, у свою чергу, можуть містити інші об'єкти.
    Ця об'єктне включення реалізується через спеціальний вид об'єкта -колекцію. Основне призначення об'єкта-колекції - містити ігрупувати інші об'єкти. Всі об'єкти, які містяться в даній колекції,одного виду.

    Елементи в ієрархії DAO фактично класи, а не об'єкти. Це макетидля об'єктів, що створюються при формуванні програми бази даних, Классподібний до типу даних у тому сенсі, що він описує, до якого виду об'єктавідбувається обіг. Наприклад, в оголошенні Dim Ws As встановлюється, щомінлива Ws служитиме посиланням на об'єкт класу Workspace.

    Нагорі ієрархії - об'єкт DBEngine, безпосередньо процесор базиданих MS Jet. Він є власником колекції Workspaces (робочаобласть), яка містить об'єкти Workspace. Кожен об'єкт Workspaceвключає колекцію Databases, яка містить один або більше об'єктів
    Database. Кожен об'єкт Database включає колекцію TableDefs, якамістить один або більше об'єктів TableDef (визначення таблиці) і т.д.

    Об'єкти члена колекції індексуються, починаючи з 0 і можуть бутидоступні через цей індекс. Наприклад, перший об'єкт TableDef об'єкта
    Database, що назване Database1, буде адресуватися як Database1. TableDefs
    (0). Другий TableDef того самого об'єкта Database - Database1. TableDefs (1) іт.д. Об'єкти в ієрархії ідентифікуються повним шляхом через вкладеніколекції, до яких вони належать. Наприклад,

    DBEngine. Workspaces (0). Databases (0). ss TableDefs
    (0). Fields ( "Customer") адресується до поля Customer в першу TableDef колекції TableDefsперший Database колекції Databases перший Workspace колекції Workspacesоб'єкта DBEngine. Крім того, для колекції Fields можна замість індексувикористовувати властивість Name об'єкта Field колекції. При явному зверненні дочлену колекції по іменівместо точки використовується знак оклику.
    Наприклад, ss

    TableDefs (0). Fields ( "Customer") еквівалентно

    TableDefs (0). Fields! Customer.

    Більшість об'єктів доступу до даних має умолчательние колекції.
    Це дозволяє спрощувати програмний код. Наприклад, умолчательная колекція,яку містить об'єкт Recordset - колекція Fields. Наприклад, усі 3запису еквівалентні:

    Cust = Recordset1! Customer

    Cust = Recordset1. Fields! Customer

    Cust = Recordset1. Fields ( "Customer ").

    Програмування з об'єктами DAO.

    Програмування з об'єктами DAO полягає у створенні об'єктнихзмінних і управління ними, виклику методів об'єктів та встановлення їхвластивостей. Наприклад,

    Dim DB As Database, WS As Workspace ( "account.mdb") 'Оголошеннязмінних

    Set WS = DBEngine. Workspaces (0) 'Організовується робоча область
    (іменнованний сеанс користувача).

    Set DB = WS.OpenDatabase ( "account.mdb") 'Метод OpenDatabase об'єкта
    WS типу Workspace використовується для відкриття бази даних account.mdb іприсвоєння посилання на неї об'єктної змінної DB типу Database.

    Set RS = DB.OpenRecordset ( "Clients") 'За допомогою методу OpenRecordsetоб'єкта DB створюється набір записів на основі таблиці Clients, посилання наякий присвоюється змінної RS типу Recordset.

    RS.Index = "ClientID" 'Властивості Index об'єкта RS присвоюєтьсязначення ClientID.

    Створення бази даних

    Процедура побудови бази даних Jet - це процес створення івизначення об'єктів доступу до даних, які відповідають таблиць,полям, індексами та відносин структури нової бази даних.

    Хай потрібно створити бібліографічну базу даних Biblio.mdb,що складається з 3-х таблиць "Співробітники" (Authors), "Назви" (Titles),
    "Видавці" (Publishers), пов'язаних між собою відносинами наступними:

    Titles Authors

    Publishers

    Title AU_ID

    PubID

    Year Published Author

    Name

    ISBN

    Company

    AU_ID

    Address

    PubID

    ... (10)

    Необхідно створити об'єкт Database, визначити його логічнуструктуру, додавши об'єкти TableDef і Field.
    1. Для кожного об'єкта бази даних створюються нові об'єктні змінні:

    Dim DB As DataBase, WS As Workspace 'об'єкт бази даних DataBase

    Dim AuTd As TableDef, TitTd As TableDef, PubTd As TableDef'об'єкт 'TableDef для кожної з 3-х таблиць

    Dim AuFlds (2) As Field, TitFlds (5) As Field, PubFlds (10) As Field'об'єкт Field

    'для кожного поля кожної таблиці

    Dim AuIdx AS Index, TitIdx As Index, PubIdx As Index' об'єкт Index для

    'кожного індексу кожної з 3-х таблиць


    2.На основі методу CreateDatabase об'єкта Workspace створюється нова базаданих:

    Set Ws = DBEngine. Workspace (0)

    Set
    Db = Ws.CreateDataBase ( "C: VBBiblio.mdb", dbLangGeneral, dbVersion30) 'константа dbLangGeneral визначає мовну версію бази даних, аdbVersion30-базу даних Jet версії 3.0

    3. За допомогою методу CreateTableDef об'єкта Database створюються об'єкти
    Tabledef для кожної таблиці бази даних:

    Set TitTd = DB.CreateTableDef ( "Titles")

    Set AuTd = DB.CreateTableDef ( "Authors")

    Set PubTd = DB.CreateTableDef ( "Publishers")

    4. За допомогою методу CreateField об'єкта TableDef створюються об'єкти Fieldдля кожного поля кожної таблиці бази даних. Для кожного полявстановлюються властивості, що визначають розмір, тип даних та іншінеобхідні атрибути. Наприклад, для поля Author код буде виглядатинаступним чином:

    Set AuFlds (0) = AuTd.CreateField ( "AU_ID, dbLong)

    'зробити поле лічильником

    AuFlds (0). Attributes = dbAutoIncrField

    Set AuFlds (1) = AuTd.CreateField ( "Author, dbText)

    AuFlds (1) = 50 'довжина поля

    5.Іспользуя метод Append додати кожне поле до його таблиці, а кожнутаблицю - до бази даних:

    AuTd.Fields.Append AuFlds (0)

    AuTd.Fields.Append AuFlds (1)

    DB.TableDefs.Append AuTd


    6. Використовуючи метод CreateIndex об'єкта TableDef, створити індекси для кожноїтаблиці і встановити їх властивості. Наприклад. для таблиці Authors:

    Set AuIdx = AuTd.CreateIndex ( "Au_ID")

    AuIdx.Primary = True 'Первинний ключ

    AuIdx.Unique = True' Унікальний ключ

    7. Використовуючи метод CreateField об'єкта Index, створити поля для кожногоіндексного об'єкту:

    Set NewFld = AuIdx.CreateField ( "Au_ID")

    8. Додати поле до об'єкта Index, а об'єкт Index до об'єкта TableDef:

    AuIdx.Fields.Append NewFld

    AuTd.Indexes.Append AuIdx

    Новостворені поля об'єкту Index не стають частиною об'єкта
    TableDef. Разом з тим їм дається те ж саме властивість Name, що і в поляоб'єкта TableDef, яке вони повинні індексувати. Властивості Type і Size уцих полів не визначаються.

    Зв'язування таблиць

    Створення об'єктів TableDef, які містять первинний і зовнішнійключі, дозволяють пов'язувати записи в одній таблиці з відповіднимизаписами в іншій таблиці, відповідно до загальних значень первинного/зовнішньогоключів. Під час додавання або видалення записів важливо підтримувати такзвану посилальну цілісність. Посилальна цілісність означає, щозовнішній ключ у будь-який посилається таблиці завжди має посилатися надостовірну запис у адресується таблиці, яка містить первинний ключ. Дляпідтримки посилальної цілісності використовується об'єкт Relation.

    1. Додати ставлення до бази даних:

    Dim Au_Tit As Relation 'об'єкт Relation

    Set Au_Tit = Db.CreateRelation ( "Authors_Titles")' створюється об'єкт
    Relation за допомогою методу. CreateRelation

    Au_Tit.Table = "Authors" 'Встановлюються властивості об'єкта Relation

    Au_Tit.ForegnTable = "Titles"

    2. Створити поле, яке у відношенні буде визначати спільне полепервинного/зовнішнього ключа:

    DimTempField As Field

    Set TempField = Au_Tit.CreateField ( "Au_Id") 'створюється сполучнаполе за допомогою методу CreateField

    TempField. ForegnName = "Au_Id" 'Встановлюються властивості об'єкта
    Field

    3. Додати об'єкт Fields до об'єкта Relation, а об'єкт Relation дооб'єкту Database за допомогою методу Append:

    Au_Tit.Fields.Append TempField

    Db.Relations .. Append Au_Tit

    Зв'язування таблиць зовнішніх баз даних

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

    Процедура зв'язування таблиці зовнішньої бази даних подібна визначеннямі створення нової внутрішньої таблиці, за винятком того, що при створенніоб'єкта TableDef необхідно визначити властивості SourceTableName і Connect.
    Крім того, для цієї таблиці не можна зв'язування створювати або додаватинові об'єкти Field і Index.

    Для зв'язування зовнішньої таблиці з базою даних необхідно:
    Створити для пов'язується таблиці новий об'єкт TableDef, використовуючи метод
    CreateTableDef об'єкта Database. Призначити таблиці нове ім'я (властивість
    Name). Наприклад, щоб приєднати таблицю Сustomers з бази даних
    Stocks.mdb до бази даних Biblio.mdb, можна записати:

    Set NewTd = DB.CreateTableDef ( "Customers") 'Передбачається, що базаданих Biblio.mdb відкрита методом OpenDatabase і їй призначено мінлива
    DB.

    2. Встановити властивості SourceTableName і Connect об'єкта TableDef:

    NewTd. SourceTableName = "Customers"

    NewTd. Connect = "; DATABASE = C: AccessStocks.mdb;"

    3.Добавіть новий об'єкт TableDef до бази даних:

    DB.TableDefs.Append NewTd

    Модифікація бази даних

    Процедури зміни бази даних подібні до її створення. Використовуються тіж методи Create і Append.

    1. Для додавання таблиці до бази даних необхідно додати новийоб'єкт TableDef до існуючої колекції TableDefs. Наприклад:

    Dim DB As DataBase

    Dim NewTd As TableDef 'Створити новий об'єкт TableDef

    Dim NewFld As Field' Створити новий об'єкт Field < p> Set Db = DBEngine. Workspace (0). OpenDatabase ( "Biblio.mdb")

    Set NewTd = DB.CreateTableDef ( "NewTable")

    Set NewFld = NewTd.CreateField ( "NewField", dbInteger )

    NewTd.Fields.Append NewFld 'додати поле до таблиці

    DB.TableDefs.Append NewTd' додати таблицю до бази даних

    Db.Close 'Закрити базу даних

    1. Щоб додати поля до таблиці необхідно додати новий об'єкт
    Field до існуючої колекції Fields

    Dim DB As DataBase

    Dim Td As TableDef

    Dim Fld As Field 'Створити новий об'єкт Field

    Set Db = DBEngine. Workspace (0). OpenDatabase ( "C: Biblio.mdb")

    Set Td = DB. TableDefs ( "Authors")

    Set Fld = Td.CreateField ( "NewField1", dbText, 30) 'Створити перший новеполе

    Td.Fields.Append Fld 'додати поле до колекції Fields

    Set Fld = Td.CreateField ( "NewField2", dbText, 20)' Створити другий новеполе за допомогою тієї ж змінної

    Td.Fields.Append Fld 'додати ще один об'єкт до колекції Fields

    Db.Close' Закрити базу даних

    2. Для додавання таблиці до бази даних необхідно додати новийоб'єкт TableDef до існуючої колекції TableDefs. Наприклад:

    Dim DB As DataBase

    Dim NewTd As TableDef 'Створити новий об'єкт TableDef

    Dim NewFld As Field' Створити новий об'єкт Field < p> Set Db = DBEngine. Workspace (0). OpenDatabase ( "C: Biblio.mdb")

    Set NewTd = DB.CreateTableDef ( "NewTable")

    Set NewFld = NewTd.CreateField ( "NewField" , dbInteger)

    NewTd.Fields.Append NewFld 'додати поле до таблиці

    DB.TableDefs.Append NewTd' додати таблицю до бази даних

    Db.Close 'Закрити базу даних

    3. Щоб додати індексу до таблиці необхідно додати новий об'єкт
    Index до існуючої колекції Indexes. Наприклад:

    Dim DB As DataBase, Td As TableDef, NewIdx As Index, NewFld As Field

    Set Db = DBEngine. Workspace (0). OpenDatabase ( "C: Biblio.mdb")

    Set Td = DB. TableDefs ( "Authors")

    Set NewIdx = Td.CreateIndex ( "Address_Index")

    NewIdx.Unique = False

    Set NewFld = NewIdx.CreateField ( "Address ",)

    NewIdx.Unique = False

    NewIdx.Fields.Append NewFld 'додати поле до об'єкта Index

    Td. Indexes.Append NewIdx 'додати об'єкт Index до TableDef

    Db.Close' Закрити базу даних

    4. Для видалення таблиці використовується метод Delete колекції
    TableDefs. Цей метод видаляє з таблиці всі поля, індекси і дані,містяться всередині таблиці. Наприклад:

    Db.TableDefs.Delete "Authors"

    5. Для видалення поля (об'єкта Field) використовується метод Deleteоб'єкта TableDef.

    Для видалення індексованого поля необхідно спочатку видалитиіндекс, а також створені за допомогою цього індексу об'єкти Relation. Післяцього можна буде видалити об'єкт Field або об'єкт TableDef, якийє частиною відносини.

    6. Для видалення індексу використовується метод Delete колекції
    TableDefs.

    Наприклад:

    Db.TableDefs ( "Authors"). Indexes.Delete "Address_Index" 'Зколекції Indexes в таблиці Authors видаляється індекс "Address_Index".

    Не можна видаляти об'єкт Index, який формує об'єкт Relation.

    7. Щоб змінити поля необхідно створити новий об'єкт TableDef,який відображає необхідні зміни в полях, і потім перемістити дані внову таблицю, видаливши стару.

    Модифікацію бази даних можна також проводити за допомогою спеціальнихзапитів SQL.

    Робота із записами бази даних

    Робота із записами бази даних (додавання, видалення, модифікація,пошук, сортування) здійснюються за допомогою DAO об'єктів Recordset.
    Об'єкт Recordset представляє запису вихідної таблиці або запису,одержувані в результаті виконання запиту. Існують 5 типів об'єктів
    Recordset:
    Об'єкт Recordset типу table працює з локальною таблицею бази даних абовесняній бази даних, створеної MS Jet. Цей об'єкт можна індексувати,використовуючи індекс, створений для вихідної таблиці, що набагато прискорюєсортування та пошук в порівнянні з іншими типами об'єктів Recordset.
    Об'єкт Recordset типу dynaset (динамічний набір) створюється для локальнихабо пов'язаних таблиць або з результатами запитів. Фактично, це набірпосилань на запису однієї або більше таблиць. За допомогою dynaset можна отримувати імодифіковані дані більше, ніж однієї таблиці, включаючи пов'язані таблиціз інших баз даних. Набір dynaset і його вихідні таблиці модифікуютьодин одного. Dynaset - найбільш гнучкий і потужний тип набору записів, хочапошук в них працює не так швидко, як у випадку table.
    Об'єкт Recordset типу snapshot (моментальний знімок) містить фіксованукопію даних у стані на момент створення snapshot. Snapshot, створенийна базі джерела даних MS Jet, не може бути поновлений. Snapshot вимагаєменших витрат обробки, ніж dynaset або table, і запити у нихвиконуються швидше.
    Об'єкт Recordset типу forward-only (гортаємо знімок, тільки вперед),забезпечує підмножина функцій snapshot. Він надає найменшеможливостей, але зате саме високу швидкодію. Він не єобновлюваним, і він дозволяє переміщатися по записах тільки в прямомунапрямі.
    Об'єкт Recordset типу dynamic - результуючий набір запиту однієї абокількох вихідних таблиць, в якому можна додавати, змінювати або видалятизапису.

    Вибір того чи іншого типу набору записів залежить від того, якіфункції необхідно виконати, чи потрібно змінювати або просто переглядатидані. Зазвичай Об'єкт Recordset типу table майже завжди забезпечуєнайвищу ефективність.

    Створення переміщень RecordSet

    Для цього використовується метод OpenRecordSet

    Set rstNew = dbs.OpenRecordSet ( "Customers", dbs.Open RecordSet), де rstNew - змінна, dbs.OpenRecordSet ( "Customers", dbs.Open
    RecordSet) - посилання на об'єкт, що повертається методом OpenRecordSet.

    Цей метод доступний не толко для об'єкта Database, а й Connection,
    TableDef, QueryDef та існуючих наборів RecordSet.

    Set rstNew = qdf.OpenRecordSet

    Наприклад, створюється об'єкт RecordSet з збережених в поточної БДзапиту.

    Dim dbs As Database, Rst As RecordSet

    Set dbs = OpenDatabase ( "Nwind.mdb"

    [Set rst = dbs.OpenRecordSet ( " Сохраняет_Запрос ")] або якщо збереження запиту не існує

    Dim strQuerySQL As String

    Set dbs = OpenDatabase (...

    StrQuerySQL =" Select * From Products "_ &" Order by ProductName "

    Set rst = dbs.OpenRecordSet (strQuerySQL)

    Переміщення по набору записів

    Методи MoveFirst, MoveLast, MoveNext, MovePrevious - переміщуєпокажчик.

    Move [n]

    Переділ набору записів визначається властивостями BOF і EOF, кількістьзаписів властивістю - RecordCount.

    Знайти певну запис в наборі можна за допомогою методу Seek (для
    Table) і Find (dynaset, snapshop): FindFirst, FindLast, FindNext,
    FindPrevious.

    Наприклад rstOrderDetails.Find "Order ID =" & rstOrders. [Order ID] - для першогозаписи в Orders знайти .... запис у OrderDetails

    rst Suppliers.Index = "CompanyName" rst Suppliers.Seek "=" str CompanyNAme

    If rst Suppliers. NoMatch Then ...

    (використовується поточний індекс таблиці, визначеної властивістю Index).
    Властивість NoMatch використовується для перевірки знайденої запису, критерійпошуку.

    Після створення об'єкта RecordSet типу table або dynaset у зміннійможна удавлять або додавати, модифікувати нові записи (Update, Delete,
    AddNew).

    .... модифікації набагато ефективніше за допомогою запитів SQL.

    Dim dbs As DataBAse, qdfChangeTitles As QueryDef

    Set dbs = Open Database ( 'Nwind.mbb)

    Set qdfChangeTitles = dbs.Create QueryDef ( "") qdf ChangeTitles.SQL = "Update Employers" & "Where Title = 'Бухг'"

    Після вилучення запису можна звертатися до її окремих полях черезколекцію Fields об'єкта RecordSet за його властивості Name (ім'я стовпця втабліцк) rst Employers.Fields ( "LastName") або rstEm.LastName або rstEm.Fields (0) - індексом в колекції

    Типи даних об'єкта Field: dbChar, bdByte, dbDouble, dbInteger,dbSingle, dbLong, dbText.

    При роботі з даними Field використовується його властивість Value.

    Sub Change Title () rstEmployces.LastName.Value = strName

    Dim dbsSales As Database

    Dim rstEmp As RecordSet, fldTitle As Field

    Dim wspCurrent As WorkSpace

    Set wspCurrent As WorkSpace

    Set wspCurrent = dbEngine WorkSpace (0)

    Set dbsSales = OpenDatabnase ( "Nwind.mdb"

    Set rstEmp = dbsSales.Open RecordSet ( "Employes", dbOpenTable)

    Set fldTitle = rstEmp.Fields ( "Title") rst Emp.MoveFirst

    Do Until rstEmp.EOF

    If fldTitle = "Ком. предст." Then rstEmp.Edit fldTitle = " Кім. агент "rstEmp.Update

    End If rstEmp.MoveNext

    Loop rstEmp.Close dbsSales.Close

    End Sub

    Створення запитів

    Методв CreateQueryDef:

    Set запит = БД.CreateQueryDef ([ім'я] [, рядок SQL])

    - запит - об'єктна змінна, в яких буде зберігатися посилання назнову створюваний об'єкт типу QueryDef

    - БД - об'єктна змінна, що зберігає посилання на об'єкт Database, вкоординує буде зберігатися створюваний об'єкт QueryDef

    - ім'я - ім'я запиту

    - рядок SQL - вираз SQL, ..... об'єкт QueryDef

    Наприклад,

    Dim dbs As Database

    Dim myqdf As QueryDef

    SQL str = "Select * From Products"

    SQL str = SQl str & "Where price> 1000 and price

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status