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