Интегрированная среда VB 6.0 обработки баз данных
Элемент управления Data. Основные свойства
Элемент управления Data обеспечивает связь проекта VB (его программы) с Базой Данных, позволяя получить доступ к записям одной таблицы БД. Несколько элементов Data позволят обеспечить доступ ко всем таблицам многотабличной БД.Элемент Data
вызывается обычным образом из панели элементов управления Toolbox на форму (рис. 6.1):
Кнопка Last позволяет сразу
переходить к последней записи
таблицы БД
![]() |
![]() |
||
Кнопка First Кнопка Previous Кнопка Next
вызывает
позволяет сразу вызывает переход переход к следующей записи
переходить к к предыдущей записи таблицы БД первой записи таблицы БД
таблицы БД
Рис. 6.1. Экранная форма с элементом Управления DataУказатель (внутренняя переменная) БД позволяет выбрать текущую запись и текущее поле в записи. При просмотре на форме в режиме проектирования указатель по записям можно перемещать с помощью кнопок элемента Data, по элементам (полям) – с помощью мыши.
При работе программы VB перемещение по записям (и полям) осуществляется специальными командами.
Совместно с элементом Data используются и совокупность других элементов управления Label, TextBox или ListBox. Каждый из совокупности этих элементов (объектов) связывается с определенным полем таблицы БД, показывая содержание поля. Поэтому их называют связанными объектами.
Связанных объектов может быть столько, сколько полей в таблице (или меньше, если не все поля нас интересуют).
При перемещении указателя таблицы с помощью кнопок Data связанные объекты обновляют свое содержание.
Свойства элемента Data:
Caption - Имя объекта данных (имя таблицы базы данных, например, Postavka).
Name – Имя элемента в программе. По умолчанию Data1, Data2, ¼
Font - выбор шрифта для текста, размещаемого на элементе Data.
Connect – указывает тип формата Базы данных (например, формат системы
Access устанавливается по умолчанию).
*DataBaseName – устанавливает полный путь к файлу, где записана База Данных
(например, H:\SKLAD, где H – имя рабочего диска, SKLAD –
имя БД).
RecordSource – устанавливает источник Данных:

имя таблицы БД (источник записей)
RecordSource = Text1.Text (имя элемента, в котором источник
записан Запрос) Данных
Запрос (SQL - оператор)
Свойство RecordSource (Источник записей) позволяет использовать операторы языка SQL), обеспечивающие выделение подмножества записей, удовлетворяющих заданным условиям, например:
RecordSource = “Select * From Postavka Where NameIzd = ‘Дисплей’ ”
RecordSetType – устанавливает тип источника (набора) данных:

0 – Table (из таблицы - работа с полной таблицей );RecordSetType = 1 – Dynaset (из динамического набора, полученного в
результате выполнения SQL - запроса;
2 – Snapshot (из моментального списка (копия данных) –
только чтение.
Для примера разместим на форме (рис. 6.1) массив из нескольких связанных элементов Text1(0), Text1(1), … Text1(k).
Далее зададим указанные выше свойства элемента данных, которые свяжут его с БД, и свойства связанных элементов, определяющие источники информации.
Свойства связанных элементов:
Name = Text1(0)
DataSource = Data1 ‘источник данных (записей)
DataField = поле1 таблицы
Name = Text1(1)
DataSource = Data1 ‘источник данных (записей)
DataField = поле2 таблицы
Напоминаем, DataSource (устанавливает источник Данных для метки Label, текстового поля TextBox или списка ListBox) и DataField (устанавливает связь метки Label, текстового поля TextBox или списка ListBox с интересующим полем таблицы Базы Данных) - это свойства элементов Label, TextBox, ListBox.
Методы элемента Data
Элемент Управления Data имеет большой набор методов (напоминаем, методы – это системные подпрограммы, расширяющие функциональные возможности элементов Управления) для непосредственной работы с записями таблиц БД. Методы вызываются из раскрывающегося Менюв момент
указания свойства Name элемента Data (Data1) при написании Программного кода и записываются с использованием разделительного символа “.” в виде:
Data1.RecordSet.AddNew – добавление новой записи в таблицу;
*Data1.RecordSet.MoveLast – переход к последней записи;
*Data1.RecordSet.MoveFirst – переход к первой записи;
*Data1.RecordSet.MoveNext – переход к следующей записи;
*Data1.RecordSet.MovePrevious – переход к предыдущей записи;
Data1.RecordSet.Delete – удаление текущей записи;
Data1.RecordSet.Edit – переход к редактированию записи;
Data1.RecordSet.Update – передача в текущую запись введённых или
изменённых данных;
значений; Data1.RecordSet.RecordCount – количество записей в текущей таблице;
Data1.RecordSet.Fields (K).Value – передача значения K-го поля текущей записи;
Data1.RecordSet.Fields (K).Name– передача значения имени K-го поля текущей таблицы;
Data1.RecordSet.Fields.Count – количество столбцов текущей таблицы;
Data1.RecordSet.Refresh – обновление содержимого всех элементов Экранной формы,
связанных с текущей таблицей, в соответствии с её текущим физическим состоянием;
Data1.RecordSet.Eof – метка конца текущей таблицы.
Действия методов, отмеченных “*”, аналогичны действиям кнопок элемента Data.
Пример 1. Фрагмент вычисления среднего значения третьего по порядку числового поля таблицы: . . .
S=0
Data1.RecordSet.MoveFirst ‘первая запись стала текущей
For I=1 To Data1.RecordSet.RecordCount ‘по записям текущей таблицы
S=S + Data1.RecordSet.Fields(3).Value
Data1.RecordSet.MoveNext ‘к следующей записи таблицы
Next I
S=S/ Data1.RecordSet.RecordCount ‘искомое среднее значение
. . .
Обработка двухтабличной БД с помощью элемента DATA
Пусть созданы поквартальная таблица поставок комплектующих изделий Postavka(см. п. 6.3) и таблица комплектующих изделий Izd.
Таблица комплектующих изделий (Izd)
| Шифр изделия (ShIzd) | Наименование (NameIzd) | Цена (руб.) (Cena) | Вес (кг.) (Ves) | ||||
| С15 | Принтер | 27000 | 3.5 | ||||
| Д84 | Клавиатура | 7500 | 1.7 | ||||
| IS22 | Сканер | 1550 | 1.4 | ||||
| А16 | Дисплей | 67000 | 7.5 | ||||
| BJ | Картридж | 875 | 0.25 | ||||
| SDR | Дисковод | 175 | 0.25 | ||||
| I18 | Источник питания | 75 | 0.2 | ||||
| B11 | Батарея | 100 | 0.25 | ||||
| IS16 | Сканер | 175 | 0.2 | ||||
| SDRU | Дисковод | 200 | 0.2 |
В таблице Izd 10 записей.
Требуется определить и вывести на элементы формы совокупную стоимость изделий, поставленных в 1- 4 кварталах, а также общий вес годовых поставок. Таблица Postavka может содержать меньше изделий, чем таблица Izd. Порядок размещения записей в таблицах произвольный.
Обработка однотабличной БД с помощью элемента Data
Пусть имеется поквартальная таблица поставок Postavka комплектующих (объём поставки в рублях):Таблица поставок комплектующих (Postavka)
| Шифр изделия (ShIzd) | Наименование изделия (NameIzd) | Поставка в 1-м кв. (Pkv1) | Поставка во 2-м кв. (Pkv2) | Поставка в 3-м кв. (Pkv3) | Поставка В 4-м кв. (Pkv4) | ||||||
| IS22 | Сканер | 30 | 20 | 40 | 35 | ||||||
| Д84 | Клавиатура | 60 | 20 | 50 | 44 | ||||||
| BJ | Картридж | 115 | 212 | 100 | 90 | ||||||
| B11 | Батарея | 20 | 21 | 34 | 37 | ||||||
| I18 | Источник питания | 30 | 28 | 15 | 14 | ||||||
| A16 | Дисплей | 16 | 27 | 32 | 5 | ||||||
| C15 | Принтер | 5 | 32 | 27 | 16 | ||||||
| SDR | Дисковод | 45 | 50 | 40 | 35 |
Таблица создана средствами Visual Data Manager. В ней 8 записей. Необходимо напечатать наименования изделий, объёмы поставок которых по кварталам монотонно падают.
Обработка таблиц с использованием массивов, в которые переносятся элементы таблиц (Способ
Шаги:1. В секции General Declaration модуля объявить динамические глобальные двумер-
ные массивы, соответствующие таблицам Postavka и Izd, и глобальные переменные:
Public P () As Variant
Public Iz () As Variant
Public I%, J%, KztP%, KztI%, L%, F%
2. На форме Form1 расположить:
- массив элементов TextBox(Text1(0) …Text1(5)) для полей записей таблицы Postavka (связанные объекты);
- элемент данных Data1;
- кнопки : Cmd1 – для запуска процедуры передачи значений полей записей
таблицы Postavka в массив P и в сетку Flp;
Cmd2 – для запуска решения задачи;
Сmd3 – для перехода на форму 2;
Cmd4 – для выхода из Проекта;
- метку надписи ”Стоимость” над элементом ListBox (с именем Lbl1);
- метку для указания искомого веса или сообщения “Таблицы не согласованы” (с именем Lbl2);
- элемент ListBox (с именем Lst1);
- элемент MSFlexGrid (с именем Flp) для отображения таблицы Postavka;
Связанные элементы TextBox
Элемент управления Data1
Lbl2(Указание искомого веса
или сообщения – “Таблицы не
согласованы”)
Надпись над элементом
ListBox (элемент Lbl1)
ListBox (для вывода определяемых
заданием сведений


Командная кнопка Cmd4выхода из Проекта
Командная кнопка Cmd3 перехода на форму Form2
![]() |
|||
![]() |
Командная кнопка Cmd1
запуска программы передачи значений полей
табли
цы Postavka в массив P и вMSFlexGrid – Гибкая сетка с именем Flp сетку Flp

Командная кнопка Cmd2 запуска решения задачи

Рис. 6.3. Экранная форма для работы с БД с таблицей (Postavka) 3. Установить свойства объекта Data1:
Name = Data1
Caption = Tаблица Postavka
Connect = Access
DataBaseName = “H:\ . . . . .” – полный путь к файлу
RecordSource = Postavka – имя таблицы – источник записей
RecordSetType = 0
4. Установить свойства связанных элементов :
Name = Text1(0)
DataSource = Data1 - источник записей
DataField = ShIzd - поле таблицы
Name = Text1(1)
DataSource = Data1
DataField = NameIzd
. . .
Name = Text1(5)
DataSource = Data1
DataField = Pkv4
5. Установить основные свойства сетки MSFlexGrid, элементов ListBox и Label :
Name = Flp; Name
= List1; Name = Lbl1; Name = Lbl2.
- элемент данных Data2;
6. Создать Form2. На ней расположить:
- массив элементов TextBox (Text2(0) …Text2(3)) для полей записей
таблицы Izd (связанные объекты);
Связанные элементыTextBox
Элемент управления Data2Командная кнопка Cmd5 для
запуска процедуры передачи
значений полей записей табли-цы Izd в массив Iz и в сетку Fli
Командная кнопка Cmd6 для
перехода на форму Frm1

MSFlexGrid – гибкая сеткас именем FLi
![]() |
Рис. 6.4. Экранная форма для работы с БД (с таблицей Izd)
- кнопки:
Cmd5 – для запуска процедуры передачи значений полей записей
таблицы Izd в массив Iz и в сетку Fli;
Сmd6 – для перехода на форму Form1;
- элемент MSFlexGrid (с именем Fli) для отображения нужных полей
- таблицы Izd.
7. Установить свойства объекта Data2:
Name = Data2
Caption = Tаблица Izd
Connect = Access
DataBaseName = “H:\ . . . . .” – полный путь к файлу
RecordSource = Izd – имя таблицы – источник записей
RecordSetType = 0
8. Установить свойства связанных элементов:
Name = Text2(0)
DataSource = Data2 - источник записей
DataField = ShIzd - поле таблицы
Name = Text2(1)
DataSource = Data2
DataField = NameIzd
Name = Text2(2)
DataSource = Data2
DataField = Cena
Name = Text2(3)
DataSource = Data2
DataField = Ves
9. Установить свойства сетки MSFlexGrid :
Name = Fli
10. Разработать процедуры Form1:
Private Sub Cmd1_Click ( ) ‘процедура (1), считывание таблицы Postavka в _
массив P и в сетку Flp
Data1.RecordSet.MoveFirst ‘ установка на первую запись таблицы Postavka
KztP = Data1.RecordSet.RecordCount ‘количество записей таблицы Postavka
KptP = Data.RecordSet.Fields.Count ‘количество полей таблицы Postavka
ReDim P(1 To KztP, 1 To KptP)
Flp.Rows = KztP+1 : Flp.Cols = KptP ‘установление размеров сетки Flp
For I = 1 To KztP
For J = 1 To KptP
If I = 1 Then Flp.TextMatrix(I-1, J-1) = Data1.RecordSet.Fields(J-1).Name
P(I, J) = Text1(J-1) : Flp.TextMatrix(I, J-1) = P(I, J) ‘или = Text1(J-1), _
или Data1.RecordSet.Fields(J-1).Value
Next J
Data1.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Private Sub Cmd2_Click ( ) ‘процедура (2), совместная обработка таблиц БД
Dim St(1 To 4) As Single ‘массив стоимости поставляемых изделий по кварталам
Dim Sh As String
, V! ‘Sh – шифр (изделия), V–общий вес изделий искомого шифра
KztI = Data2.RecordSet.RecordCount ‘количество записей таблицы Izd
V = 0
For L = 1 To 4 ‘обнуление массива St
St(L) = 0
Next L
For I = 1 To KtzP ‘по строкам таблицы Postavka
Sh = P(I, 1) ‘В Sh заносится шифр изделия текущей строки таблицы Postavka
F = 0 ‘флажок
For J = 1 To KztI ‘по строкам таблицы Izd
If Iz (J, 1) = Sh Then ‘равенство шифров в таблицах Postavka и Izd
For L = 1 To 4
St(L) = St(L) + P(I, L+2) * Iz(J,3) ‘вычисление стоимости постав- _
ляемого искомого изделия по кварталам
V = V + P(I, L+2) * Iz(J, 4) ‘вычисление общего веса изделия _
искомого шифра
Next L
F=1 : Exit For ‘Таблицы согласованы. Данные получены. Флажок
изменен выход из цикла J
End If
Next J
If F = 0 Then Lbl2.Caption = “Таблицы не согласованы” : Exit Sub
Next I
Lbl2.Caption = “Искомый вес=” & Str(V)
For L=1 To 4
Lst1.List (L-1) = St(L)
Next L
End Sub
Private Sub Form1.Cmd3_Click ( ) ‘ процедура (3)
Form1.Hide ‘спрятать форму Form1
Form2.Show ‘показать форму
Form2
End Sub
Private Sub Form1.Cmd4_Click ( ) ‘процедура (4), выход из Проекта
End
End Sub
Private Sub Cmd5_Click
( ) ‘процедура (5), считывание таблицы Izd в массив Iz _
и в сетку Fli
Data2.RecordSet.MoveFirst ‘установка на первую запись таблицы Izd
KztI = Data2.RecordSet.RecordCount ‘количество записей таблицы Izd
KptI = Data.RecordSet.Fields.Count ‘количество полей таблицы Izd
ReDim Iz(1 To KztI, 1 To KptI)
Fli.Rows = KztI +1 : Fli.Cols = KptI ‘установление размеров сетки Fli
For I = 1 To KztI ‘по строкам таблицы Izd
For J = 1 To KptI
If I = 1 Then Fli.TextMatrix (I-1, J-1) = Data2.RecordSet.Fields(J-1).Name
Iz(I, J) = Text2(J-1) : Fli.TextMatrix(I, J-1) = Iz(I, J) ‘или = Text2(J-1), _
или Data2.RecordSet.Fields(J-1).Value
Next J
Data2.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Private Sub Cmd6_Click ( )
Form2.Hide ‘спрятать форму Form2
Form1.Show ‘показать форму
Form1
End Sub
Действия:
- запустить Проект;
- на Form1 нажать Cmd1 ( выполняется процедура считывания таблицы Postavka в
массив P
и в сетку Flp), затем Cmd3 (осуществляется переход на форму Form2);
- на Form2 нажать Cmd5 (выполняется процедура считывания таблицы Izd в массив Iz и в сетку Fli), затем Cmd6 (осуществляется переход на форму Form1);
- на Form1 нажать Cmd2 (решение задачи);
- на Form1 нажать Cmd4 (выход из Проекта).
-
Способ (непосредственная обработка таблиц)
В Способе 1 информационная связь между формами осуществляется через глобальные переменные, и в первую очередь, через массивы P и Iz, доступные во всём Проекте.Система Visual Basic 6.0 не может осуществлять другой связи между формами. Поэтому в Способе 2, не использующем глобальные массивы, мы вынуждены ограничиться одной объединённой формой (рис. 6.5), расположив на ней все элементы форм Form1 (рис. 6.3) и Form2 (рис. 6.4) Способа 1 (за исключением кнопок перехода Cmd3 и Cmd6).
Способ 2 основывается на использовании Методов элементов Data1 и Data2.
Шаги:
1. Выполнить пункты Способа 1:
2 (на форме Form1 кнопка Cmd1 должна иметь надпись “Postavka в сетку Flp”), 3, 4, 5,
6 (кнопка Cmd5 должна иметь надпись “Izd в сетку Fli”), 7, 8, 9.

Рис. 6.5. Объединённая форма для работы с двумя таблицами Postavka и Izd
2. Разработать процедуры Form1 (рис. 6.5).
Процедуры (1) и (2) перепишутся в виде:
Private Sub Cmd1_Click ( ) ‘процедура (1), считывание таблицы Postavka в сетку Flp
Dim I%, J%, K%
Data1.RecordSet.MoveFirst ‘переход на первую запись таблицы Postavka
K= Data1.RecordSet.RecordCount ‘количество записей таблицы Postavka
L = Data1.RecordSet.Fields.Count ‘количество полей таблицы Postavka
Flp.Rows = K+1: Flp.Cols = L ‘установление размеров сетки Flp
For I = 1 To
K
For J = 1 To
L
If I=1 Then Flp. Flp.TextMatrix (I-1, J-1)=Data1.RecordSet.Fields(J-1). _
Name
Flp.TextMatrix
(I, J-1) = Text1(J-1) ‘или = Data1.RecordSet.Fields(J-1).Value
Next J
Data1.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Private Sub Cmd2_Click ( ) ‘процедура (2), совместная обработка таблиц БД
Dim St(1 To 4) As Single ‘ массив стоимости поставляемых изделий по кварталам
Dim V! ‘V – общий вес изделий искомого шифра
Dim I%, J%, F%, L%
V = 0
For L = 1 To 4 ‘обнуление массива St
St(L) = 0
Next L
Data1.RecordSet.MoveFirst ‘установка на
1-ю запись таблицы Postavka
For I = 1 To
Data1.RecordSet.RecordCount ‘по строкам таблицы Postavka
F=0
Data2.RecordSet.MoveFirst ‘установка на 1-ю запись таблицы Izd
For J = 1 To Data2.RecordSet.RecordCount
‘по строкам таблицы Izd
If Data2.RecordSet.Fields(1).Value=Data1.RecordSet.Fields(1).Value Then
For
L = 1 To 4
St(L)=St(L)+Data1.RecordSet.Fields(L+1).Value* _
Data2.RecordSet.Fields(2).Value
V = V + Data1.RecordSet.Fields(L+1).Value* _
Data2.RecordSet.Fields(3).Value
Next L
F=1 : Exit For
End If
Data2.RecordSet.MoveNext ‘к следующей записи таблицы Izd
Next J
If F = 0 Then Lbl2.Caption = “Таблицы не согласованы” : Exit Sub
аблицы не согласован Data1.RecordSet.MoveNext ‘к следующей записи таблицы Postavka
Next I
Lbl2.Caption = “Искомый вес=” & Str(V)
For L=1 To 4
Lst1.List(L-1) = St(L)
Next L
End Sub
Процедура (4) перепишется без изменений из п. 10.
Процедура (5) будет выглядеть следующим образом:
Private Sub Cmd1_Click ( ) ‘процедура (5), считывание таблицы Izd в сетку Fli
Dim I%, J%, K%
Data2.RecordSet.MoveFirst ‘переход на первую запись таблицы Izd
K= Data2.RecordSet.RecordCount ‘количество записей таблицы Izd
L = Data2.RecordSet.Fields.Count ‘количество полей таблицы Izd
Fli.Rows = K+1: Fli.Cols = L ‘установление размеров сетки Flp
For I = 1 To K
For J = 1 To L
If I=1 Then Fli.TextMatrix
(I-1, J-1)=Data2.RecordSet.Fields(J-1). _
Name
Fli.TextMatrix
(I, J-1) = Text2(J-1) ‘или = Data2.RecordSet.Fields(J-1).Value
Next J
Data2.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Действия:
- запустить Проект;
- нажать Cmd1 (считывание
таблицы Postavka в сетку Flp);
- нажать Cmd5 (считывание
таблицы Izd в сетку Fli);
- нажать Cmd2 (осуществляется совместная обработка таблиц Postavka и Izd);
- нажать Cmd4 (выход из Проекта).
Способ (непосредственная обработка таблицы)
Способ 2 основывается на использовании Методов элемента управления Data, обеспечивающих возможность непосредственнойработы с таблицами Базы Данных.
Шаги:
1. Выполнить пункты 2,3,4,5 Способа 1.
При создании формы Form1 (рис. 6.2) изменить надпись командной кнопки Cmd1 – на надпись “Таблица в сетку”.
2. Разработать процедуры Form1:
Private Sub Cmd1_Click ( ) ‘считывание
таблицы Postavka в сетку Flp
Dim I%, J%, K%
Data1.RecordSet.MoveFirst ‘переход на первую запись таблицы Postavka
K= Data1.RecordSet.RecordCount ‘количество записей таблицы Postavka
L = Data1.RecordSet.Fields.Count ‘количество полей таблицы
Flp.Rows = K+1: Flp.Cols = 6 ‘установление размеров сетки Flp
For I = 1 To K ‘по записям таблицы Postavka
For J = 1 To L ‘по полям текущей записи
If I = 1 Then
Flp. Flp.TextMatrix (I-1, J-1)=Data1.RecordSet.Fields(J-1). _
Name
Flp.TextMatrix (I, J-1) = Text1(J-1) ‘или = Data1.RecordSet.Fields(J-1).Value
Next J
Data1.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Private Sub Cmd2_Click ( ) ‘нахождение изделий, объёмы поставок которых _
по кварталам монотонно падают
Dim I%, J%, F%, P%
Data1.RecordSet.MoveFirst
: P = -1
For I = 1 To
Data1RecordSet.RecordCount
F = 0
For J = 2 To 4
If Data1.RecordSet.Fields(J).Value <= Data1.RecordSet.Fields(J+1).Value
_
Then
F=1
Next J
If F = 0 Then P = P+1 : Lst1.List(P) = Data1.RecordSet.Fields(1).Value
Data1.RecordSet.MoveNext
Next I
If P = -1 Then
Lbl1.Caption = “нет таких изделий” Else _
Lbl1.Caption=“иск.изделия”
End Sub
Private Sub Cmd3_Click ( ) ‘выход из Проекта
End
End Sub
Способ (обработка таблицы с использованием массива, в который переносятся элементы таблицы)
Способ 1 основывается на использовании двумерных массивов. В эти массивы переносятся (передаются) значения полей таблиц Базы Данных.Шаги:
1. В секции General Declaration модуля объявить глобальный динамический двумерный массив B, соответствующий таблице Postavka, и глобальные переменные.
Public B() As Variant
Public I%, J%, K%, P%, F%
Замечание: В переменной типа Variant происходит внутреннее преобразование типов в соответствии с полученным значением. Пусть А – переменная этого типа.
Пример 1 :
А = “123” ‘тип String – содержит строку
А = А+5 ‘тип Integer – содержит число 123+5= 128
А = А& “_рублей” ‘тип String – содержит “128_рублей”.
Пример 2 : Если необходимо сравнивать числовые значения переменных А и В, имеющих тип Variant, то нужно указать это в виде:
If Val
(A) < Val (B) Then ….
2. Создать форму:


Связанные элементы TextBox 

Элемент управления Data1
Надпись над элементом

ListBox (элемент Lbl1)ListBox (для вывода наимено-
ваний найденных изделий)
Командная кнопка Cmd1 для за
пуска программы передачи значений полей записей таблицы Postavka в массив B и в сетку Flp
Командная кнопка Cmd3(выход из программы)
![]() |
|||
![]() |
Командная кнопка Cmd2 для
запуска решения задачи
![]() |
MSFlexGrid – гибкая сетка с именем Flp
![]() |
|||
![]() |
|||
Рис. 6.2. Экранная форма для работы с БД с одной таблицей (Postavka)На ней расположить:
- массив элементов TextBox (Text1(0), Text1(1), …Text1(5)) для полей записей таблицы Postavka (связанные объекты);
- элемент управления Data1;
- кнопки:
Cmd1 – для запуска процедуры передачи значений полей записей таблицы в
массив В и в сетку Flp;
Cmd2 – для запуска решения задачи;
Cmd3 – для выхода из Проекта;
– метку:
Lbl1 – надпись над элементом ListBox;
- элемент ListBox для вывода наименований найденных изделий (с именем Lst1);
- элемент MSFlexGrid с именем Flp (Microsoft FlexGrid Control 6.0) – для отображения таблицы Postavka.
Элемент управления MSFlexGrid обеспечивает отображение на Экранной форме таблиц БД (двумерных массивов) и существенно облегчает пользователю общение с Базой Данных. В основном наборе панели элементов управления Toolbox он не содержится. Этот элемент включён в дистрибутивное хранилище дополнительных элементов управления Components, которое можно открыть либо, как это указано в Лекции 1, или выполнив последовательность команд:
Меню – Проект (Project) – Компоненты … (Components) – окно Components
В окне у компоненты Microsoft FlexGrid Control 6.0 поставить галочку и нажать OK. На панели Toolbox появится элемент управления MSFlexGrid в виде
. Затем обычным способом вызвать элемент на экранную форму и установить его размеры.Основные свойства элемента MSFlexGrid (его часто называют гибкой сеткой):
Name – имя гибкой сетки в программе (по умолчанию MSFlexGrid1). Можно задать
Flp;
Rows – количество строк в сетке, начиная с нуля (задаётся в окне свойств элементов
управления, или в программе);
Cols – количество столбцов в сетке, начиная с нуля (задаётся в окне свойств элементов
управления, или в программе);
DataSource – устанавливает источник данных для MSFlexGrid, например,
DataSource = Postavka;
Font – выбор шрифта для текста сетки;
При использовании элемента управления MSFlexGrid при работе с Базами Данных ( и двумерными массивами) удобно использовать его метод TextMatrix (I, J), позволяющий определять координаты ячейки таблицы Базы Данных или массива. Метод Sort обеспечивает упорядочение строк считанной в гибкую сетку таблицы БД по заданному полю, если в программе записано выражение в виде:
<имя сетки MSFlexGrid > .Sort = <заданное поле сетки MSFlexGrid >
например, Flp.Sort = 1.
3. Установить свойства элемента Data1:
*Name = Data1 ‘имя элемента Data
Caption
= Таблица
Postavka ‘надпись на элементе Data1
Connect
= Access (или Excel, FoxPro и т.д.) ‘тип Базы Данных
* DataBaseName = H:\ … - имя БД ‘полный путь к Базе Данных
*RecordSource = Postavka ‘источник данных - имя текущей таблицы БД
*RecordSetType = 0 ‘режим обработки (0- из таблицы, где “*” – основные свойства элемента Data.
4. Установить свойства связанных элементов (элементов Text):
Name = Text1(0) ‘номер в скобках не устанавливается
DataSource = Data1 ‘источник данных (записей)
DataField = ShIzd ‘поле текущей таблицы
Name = Text1(1)
DataSource = Data1
DataField = NameIzd ‘поле текущей таблицы
. . .
Name = Text1(5)
DataSource = Data1
DataField = Pkv4 ‘поле текущей таблицы
5. Установить основные свойства сетки MSFlexGrid, элементов ListBox и Label (рис.6. 2).
6. Разработать процедуры Form1:
Private Sub Cmd1_Click ( ) ‘считывание
таблицы Postavka в массив В
и в сетку Flp
Data1.RecordSet.MoveFirst ‘ переход на первую запись
K = Data1.RecordSet.RecordCount ‘количество записей таблицы Postavka
L = Data1.RecordSet.Fields.Count ‘количество полей таблицы
ReDim B(1 To K, 1 To L)
Flp.Rows = K+1: Flp.Cols = 6 ‘установление размеров сетки Flp
For I = 1 To
K ‘по записям таблицы Postavka
For J = 1 To L ‘по полям текущей записи
If I = 1 Then Flp.TextMatrix (I-1, J-1) = Data1.RecordSet.Fields(J-1).Name
B(I, J) = Text1(J-1) : Flp.TextMatrix(I, J-1) = B(I, J) ‘или = Text1(J-1)
или Data1.RecordSet.Fields(J-1).Value
Next J
Data1.RecordSet.MoveNext ‘переход к следующей записи
Next I
End Sub
Private Sub Cmd2_Click ( ) ‘нахождение изделий, объёмы поставок которых
по кварталам монотонно падают
P = -1
For I = 1 To K
F = 0
For J = 3 To 5
If B(I, J) <= B(I, J+1) Then F=1
Next J
If F = 0 Then P = P+1 : Lst1.List(P) = B(I, 2)
Next I
If P = -1 Then Lbl1.Caption
= “нет таких изделий” _
Else
Lbl1.Caption = “искомые изделия”
End Sub
Private Sub Cmd3_Click ( ) ‘выход из Проекта
End
End Sub
Возможности среды VISUAL BASIC по обработке Баз данных
После создания Базы Данных очередной становится задача организации её обработки с целью получения нужной информации. Имеется несколько вариантов работы:
- доступ к Базам Данных через элемент управления Data;
- доступ к Базам Данных с использованием языка SQL (Structured Query Language - Структурированный Язык Запросов);
- доступ к Базам Данных с использованием других средств.
Рассмотрим доступ, основывающийся на операциях с элементом управления Data, мощным инструментом для выполнения разнообразнейших операций с Базами Данных.
Программирование: Языки - Технологии - Разработка
- Программирование
- Технологии программирования
- Разработка программ
- Работа с данными
- Методы программирования
- IDE интерфейс
- Графический интерфейс
- Программирование интерфейсов
- Отладка программ
- Тестирование программ
- Программирование на Delphi
- Программирование в ActionScript
- Assembler
- Basic
- Pascal
- Perl
- VBA
- VRML
- XML
- Ada
- Lisp
- Python
- UML
- Форт
- Языки программирования







