Способ (обработка таблицы с использованием массива, в который переносятся элементы таблицы)
Способ 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