RSS    

   Реферат: Програмирование на Visual Basic

Dim Td As New TableDef, Fid() As New   Field

Dim Idx() As New Index, I As Integer

ReDim Fld(l To 5), Idx(l To 2)

Td.Name = “Поставщики” ' Имя таблицы. ‘ Создание полей таблицы.

For I = 1 То 5 'Задание свойств полей таблицы.

Fld(I).Name = Choosefl, “Номер_поставшика”, “Название_фирмы”, “Город”, “Адрес”, “Телефон”)

Fld(I).Type = Choose(I, DB_LONG, DB_TEXT, DB_TEXT, DB_TEXT, DB_TEXT)

Fld(I).Size = Choose(I, 4, 30, 15, 30, 10)

Next I

Fid(l).Attributes = DB_AUTOINCRFIELD

For I = 1 To 5

Td.Fields.Append Fld(I)

Next I ‘ Создание инде^ов.

Idx(l).Name == “PrimaryKey”

Idx(1).Fields = “Номер_поставщика”

Idx(1).Primary = True

Idx(1).Unique = True

Idx(2).Name = “Fi rmNarne”

Idx(2).Fields = “Название_фирмы”

For I = 1 To 2

Td.Indexes.Append Idx(I)

Next I

D.TableDefs.Append Td ‘ Создание таблицы. End Sub

Public Sub Relations (D As Database) Dim MyField As Field, MyRelation As Relation

Set MyRelation = D.CreateRelation(“MyRelation”) MyRelation.Table = “Поставщики” MyRelation.ForeignTable = “Товары” Set MyField =

MyRelation.CreateField(“Номер_поставщика”) MyField.ForeignName = “Номер_поставщика” MyRelation.Fields.Append MyField D.Relations.Append MyRelation End Sub

Константы в программе скопированы из входящего в состав Visual Basic файла DATACONS.TXT. Обращение к процедуре CreateNewDB создания базы данных помещено в процедуру обработки события Form_Click, из которой производится обращение к процедуре NewProduktTable, создающей таблицу товаров на складе, к процедуре NewProviderTable, создающей таблицу поставщиков товаров и к процедуре Relations, создающей отношения между таблицами. Следует обратить внимание на удобство использования встроенной функции Choose для задания свойств полей таблиц.

5.5.      ИСПОЛЬЗОВАНИЕ ЯЗЫКА SQL ДЛЯ

СОЗДАНИЯ И РАБОТЫ С БАЗАМИ ДАННБ1Х

Язык структурированных запросов (SQL) является стандартным средством для работы с базами данных и может использоваться как для интерактивной работы с базами данных, так и включаться в языки программирования. Применительно к Visual Basic SQL позволяет:

  • создавать, модифицировать или удалять таблицы в базе данных Access;
  • создавать или удалять индексы для таблиц в базе данных Access;
  • вставлять, удалять или модифицировать записи таблиц;
  • получать сводную информацию о данных в таблицах (число записей, суммы, средние, минимальные, максимальные значения и др.);
  • поиск данных в одной или более таблицах по запросу. Язык SQL используется совместно с элементом управления DATA или с объектами доступа к данным (DAO) механизма Jet. Объект Database содержит объекты доступа к данным TableDef, определяющие таблицы, объекты Field, определяющие поля, объекты Index, определяющие индексы и др.

В ранее рассмотренных параграфах данной главы через элемент управления Data подключалась одна таблица (свойству Re-cordSource элемента управления Data присваивалось значение имени таблицы). При использовании языка SQL запрос вводится в свойство RecordSource. В случае использования элемента управления Data, это позволяет работать с информацией из нескольких таблиц.

Следует отметить, что каждое выполнение оператора запроса изменяет набор записеи. В связи с этим необходимо применять метод Refresh для элемента управления Data после каждого присвоения SQL-запроса свойству RecordSource.

Рассмотрим операторы и использование языка SQL для работы с базами данных. Для поиска информации в базе данных используется оператор SELECT. Синтаксис оператора следующий:

SELECT список имен полей FROM список имен таблиц где SELECT, FROM — ключевые слова;

список имен полей список имен полей, которые выбираются из одной или нескольких 1аблиц. Для выбора всех полей можно использовать символ “*”, вместо перечисления имен всех полей. Если имя поля таблицы содержит пробел, то это имя должно заключаться в квадратные скобки;

список имен таблиц список имен таблиц, из которых производится выбор.

Имена полей и таблиц нечувствительны к регистру клавиатуры.

' Примеры:

SELECT * FROM Titles — выбор всех полей из таблицы Titles рассмотренной выше базы данных по библиографии по Visual Basic.

SELECT Title, /Year Published/ FROM Titles — выбор полей заголовков (Title) и года издания (Year Published) из таблицы Titles. Имя поля года издания берется в квадратные скобки (имеет пробел).

Для поиска информации, соответствующей некоторому условию, используется дополнение к оператору SELECT — WHERE, которое имеет следующий синтаксис:

SELECT список имен полей FROM список имен таблиц WHERE условие где условие определяет критерии поиска информации.

В условии используются имена полей, операции сравнения (<> <=, =, >, >=, <>) и специальные операции сравнения IN, LIKE, BETWEN. Эти операции могут объединяться с помощью логических операций и задавать сложные условия поиска информации.

Примеры:

SELECT /Year Published/, Title FROM Titles

WHERE /Year Published/ > 1991 определяет выбор названий книг, год выпуска которых позже 1991.

SELECT I Last Name], /First Name/ FROM Employees

WHERE /Last Name/ = ‘King’ определяет выбор полей имен и фамилий из таблицы служащих, фамилии которые совпадают с фамилией King.

Операция IN сравнивает содержимое поля со списком значений, определяющих критерий поиска информации.

Примеры:

SELECT /Year Published/, Title FROM Titles

WHERE /Year Published/ IN (1995, 1996) определяет выбор книг, опубликованных в 1995 и в 1996 гг.

SELECT /Last Name/, /First Name/, City FROM Employees

WHERE City In (‘Interlaken ', ‘New York’, ‘Frankfurt’) определяет выбор служащих, живущих в городах Interlaken, New York или Frankfurt.

Операция LIKE сравнивает содержимое поля со значением образца. Для записи образца используются строковые константы, символы шаблона и списки диапазона символов.

Символы шаблона следующие: *, ?, #. * — соответствует цепочке символов, ? — соответствует одному символу, # — соответствует одной цифре.

Примеры:

R* — возможные результаты поиска right, Roza.

А? — возможные результаты поиска and, any.

12345# — возможные результаты поиска 123455. 123457.

Список диапазона заключается в квадратные скобки и первый и “последний символы диапазона отделяются дефисом (-). Диапазон задается в возрастающем порядке.

Примеры:

SELECT /Last Name/, /First Name/ FROM Employees WHERE /Last Name/ Like ‘S*’ определяет выбор служащих, фамилии которых начинаются с буквы S. SELECT Author FROM Authors WHERE Author LIKE fA-K/ определяет выбор авторов, фамилии которых начинаются с букв от А .до К.

SELECT Title FROM Titles

WHERE Title LIKE “database*” AND [Year Publisher/ = 1996 определяет выбор названий, в которых присутствует слово “database” и выпущенных в 1996 году.

Операция BETWEEN проверяет принадлежность значения поля диапазону значении и является включающим значением (выбираются записи, содержащие поле со значением, равным границе диапазона). Границы значений объединяются операцией AND.

Примеры:

SELECT lOnler IDI, I Order Dale/

FROM Orders WHERE /Order Date/ Between # I-1-94” And #6-30-94# определяет выбор документов первой половины 1994 г. С

SELECT /Last Name/, Salary FROM Employees '

WHERE [Last Name] Between ‘Lon’ And To/’ определяет выбор зарплаты служащих, начальные буквы фамилий которых, расположенные в алфавитном порядке, находятся в диапазоне 'Lon' и 'ТоГ.

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

SELECT список имен полей FROM список имен таблиц WHERE условие ORDER BY имя поля [DESC] [имя поля [DESC]] где имя поля поле, по которому производится упорядочение. Опция DESC устанавливает обратный порядок сортировки. Упорядочение может вестись по нескольким полям (сортировка, например, по фамилии, а затем по имени)

Пример:

SELECT Title FROM Titles WHERE Title LIKE

“*database*” AND [Year Publisher] = 1996 ORDER BY Title определяет выбор названий книг, в которых присутствует слово “database” и выпущенных в 1996 г., и упорядочивает названия в алфавитном порядке.

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

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

SELECT список имен полей FROM список имен таблиц, список связей

где список связей определяет, как таблицы в списке имен таблиц связаны между собой. В частности для задания связи используется рассмотренное дополнение WHERE (WHERE имя_табмщы1.1шя_поля1 = 1шя_таблицы2.имя_поля2).

Примеры:

  • SELECT Tities.Title, Publishers. [Company Name} FROM Titles. Publishers WHERE Titles. Pubid = Publishers. Pubid определяет выбор названий книг (Title) из таблицы названий (Titles) и названий издательств (Company Name) из таблицы издательств (Publishers). Дополнение WHERE определяет связь между таблицами (выбирается название книги и номер издательства из таблицы Titles, по номеру издательства в таблице издательств Publishers находится название издательства).

SELECT Tities.Title. Authors. Author, Publishers. [Company Name]

FROM Titles, Authors. Publishers WHERE Titles.auJd = Authors. au_id AND Tilles.pubid = Publishers. Pubid определяет выбор из всех трех таблиц полной информации по книге (название, автор, издательство).

В целом, язык SQL имеет широкий набор средств для организации различных запросов, о которых можно более подробно узнать из встроенной системы помощи Visual Basic.

Пример программы.

Модернизируем приведенную выше программу для просмотра таблиц баз данных для ввода SQL-запросов и отображения полученной информации. Добавим на форму текстовое окно для ввода SQL-запроса (нажатием клавиши ввода запрос вводится). Полученная информация динамически (соответственно запросу) формируется и отображается элементом управления Grid.

Форма показана на рис. 5.24, пример ввода запроса и таблица с информацией — на рис. 5.25.

Текст программы:

Option Explicit

Const vbOFNPATHMUSTEXIST =           &H800&

Const vbOFNFILEMUSTEXIST =            S.H1000&

Private Sub Coinmandl_Click () Combol.Clear

CommonDialogI.DefaultExt = “MDB” CommonDiaiogI.FiieName = “”

CommonDialogI.Filter = “Базы данных Access(*.MDB)|*.MDB”

CommonDialogI.Flags = vbOFNPATHMUSTEXIST

CommonDialogI.Action = 1

If CommonDialogl.FileName = “” Then Exit Sub

OpenDataBase CommonDialogI.FileName End Sub

Public Sub OpenDataBase(ByVal DataFile             As String)

Dim I As Integer

Datal.Connect = “”

Datal.DatabaseName = DataFiie

Datal.Refresh

For I = 0 To Datal.Database.TableDefs.Count - 1

Combo 1.Addltem Datal.Database.TableDefs(I).Name

Next

Combol.Text = “”

End Sub

Public Sub FillGrid(ByVai Zapros As String)

Dim I As Integer, CellWidth As Integer

Datal.RecordSource = Zapros

Debug.Print Zapros

Datal.Refresh

Gridl.Cols = Datal.Recordset.Fields.Count

Debug.Print Gridl.Cols

Gridl.Row •= 0 ‘

For I = 0 To Datal.Recordset.Fields.Count - 1

Gridl.Coi = I

Gridl.Text = Datal.Recordset.Fields(I).Name Gridl.ColWidth(I) = TextWidth(Gridi.Text) + 100 . Next Datal.Refresh Datal.Recordset.MoveLast

Gridl.Rows = Datal.Recordset.RecordCount + 1 Datal.Recordset.MoveFirst Gridl.Row = 0

Do While Not Datal.Recordset.EOF Gridl.Row = Gridl.Row + 1

For I = 0 To Datal.Recordset.Fields.Count - 1 Gridl.Coi = 1 If IsNuil(Datal.Recordset.Fields(I).Value) Then

Gridl.Text =• “” Else

Gridl.Text = Datal.Recordset.Fields(I).Value End If

CellWidth =.TextWidth(Gridi.Text) + 100 If CellWidth > Gridi.ColWidth(I) Then Gridl.ColWidth(I) = CeilWidth

End If Next I

Datal.Recordset.MoveNext Loop End Sub

Private Sub Textl_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then FillGrid Textl.Text

End If End Sub

ЗАКЛЮЧЕНИЕ

Автор надеется, что прочитавший эту книгу до конца и самостоятельно выполнивший на компьютере приведенные в ней примеры получил достаточные знания и навыки программирования на Visual Basic, позволяющие самостоятельно создавать программные системы.

Вы получаете в свои руки относительно простой, но очень эффективный инструмент для создания программ, работающих в операционной системе Windows. Эти программы могут иметь любую прикладную направленность: от простых баз данных для личного использования на работе и дома до профессиональных систем автоматизации производственной, торговой, банковской, страховой и других видов деятельности.

Вы делаете первые шаги, чтобы стать специалистом в области информационных технологий. Технологий, которые прокладывают дорогу в XXI век и в значительной степени определят дальнейшее развитие человечества.

Желаю Вам успехов на этом сложном, но очень перспективном пути.


Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.