Способ (непосредственная обработка таблиц)
В Способе 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 (выход из Проекта).