Мониторинг обменных курсов валют
18c0693f

Обработка таблиц с использованием массивов, в которые переносятся элементы таблиц (Способ


             Шаги:

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 (выход из Проекта).

-           





Самый выгодный курс обмена валюты