Формирование нескольких баз данных, основная из которых – «Морские сражения», страница 6

·  Найти названия всех кораблей, спущенных на воду до 1918 года (ввод года).

Выпадающий список с запросами - CMBQueries.Click:

  case thisform.CMBQueries.ListIndex==12

    thisform.LBLMan.Caption="До:"

    thisform.LBLMan.Visible=.t.

    thisform.TXTMan.Visible=.t.

    thisform.CMDMan.Visible=.t.

    thisform.LBLMan2.Visible=.f.

    thisform.CMBMan1.Visible=.f.

    thisform.CMBMan2.Visible=.f.

    thisform.CMBMan3.Visible=.f.

В результате работы этой процедуры, на форме появляются надпись "До:", поле ввода данных и кнопка "Вывести". Для вывода результата нужно ввести данные и нажать на кнопку "Вывести", либо клавишу Enter.

Кнопка "Вывести" - CMDMan.Click:

case thisform.CMBQueries.ListIndex==12

  SELECT Types.class, Battleships.name, Battleships.water_cap,;

    Battleships.fire1_diameter, Battleships.fire1_num,;

    Battleships.fire2_diameter, Battleships.fire2_num,;

    Battleships.fire3_diameter, Battleships.fire3_num,;

    country.country, Battleships.date_creation;

  FROM  ships!battleships INNER JOIN ships!types  ON  Battleships.class_id = Types.class_id;

      INNER JOIN ships!country ON Battleships.country_id = country.country_id;

   WHERE Battleships.date_creation < val(thisform.TXTMan.Text);

  ORDER BY Battleships.date_creation,Battleships.name;

  INTO TABLE Temp;

  NOCONSOLE

  thisform.GRDMList.all

  thisform.GRDMList.RecordSourceType=0

  thisform.GRDMList.RecordSource='Temp.dbf'

·  Найти названия кораблей, потопленных в морских сражениях и наименования этих сражений.

Выпадающий список с запросами - CMBQueries.Click:

  case thisform.CMBQueries.ListIndex==11

    SELECT battles.place, battles.b_date, Battleships.name, battles.drawn,;

      Country.country;

     FROM  ships!battles INNER JOIN ships!battleships;

               INNER JOIN ships!country ;

       ON  Battleships.country_id = Country.country_id ;

       ON  battles.ship_id = Battleships.ship_id;

     WHERE battles.drawn = .T.;

     ORDER BY battles.place, Country.country, Battleships.name;

     INTO TABLE Temp;

     NOCONSOLE

    thisform.GRDMList.shipsdrawninbattles

    thisform.GRDMList.RecordSourceType = 0

    thisform.GRDMList.RecordSource = 'Temp.dbf'

    thisform.LBLMan.Visible=.f.

    thisform.TXTMan.Visible=.f.

    thisform.CMDMan.Visible=.f.

    thisform.LBLMan2.Visible=.f.

    thisform.CMBMan1.Visible=.f.

    thisform.CMBMan2.Visible=.f.

    thisform.CMBMan3.Visible=.f.

·  Найти названия кораблей, начинающихся с буквы «К» (ввод буквы).

Выпадающий список с запросами - CMBQueries.Click:

  case thisform.CMBQueries.ListIndex==10

    thisform.LBLMan.Caption="Начинающиеся с:"

    thisform.LBLMan.Visible=.t.

    thisform.TXTMan.Visible=.t.

    thisform.CMDMan.Visible=.t.

    thisform.LBLMan2.Visible=.f.

    thisform.CMBMan1.Visible=.f.

    thisform.CMBMan2.Visible=.f.

    thisform.CMBMan3.Visible=.f.

В результате работы этой процедуры, на форме появляются надпись "Начинающиеся с:", поле ввода данных и кнопка "Вывести". Для вывода результата нужно ввести данные и нажать на кнопку "Вывести", либо клавишу Enter. Запрос не чувствителен к регистру вводимых данных, т.е., например, символы "К" и "к" считаются равнозначными и приводят к одинаковому результату.

Кнопка "Вывести" - CMDMan.Click:

case thisform.CMBQueries.ListIndex==10

  SELECT Types.class, Battleships.name, Battleships.water_cap,;

    Battleships.fire1_diameter, Battleships.fire1_num,;

    Battleships.fire2_diameter, Battleships.fire2_num,;

    Battleships.fire3_diameter, Battleships.fire3_num,;

    country.country, Battleships.date_creation;

  FROM  ships!battleships INNER JOIN ships!types  ON  Battleships.class_id = Types.class_id;

      INNER JOIN ships!country ON Battleships.country_id = country.country_id;

   WHERE UPPER(Battleships.name) LIKE UPPER(TRIM(thisform.TXTMan.Text)+"%");

  ORDER BY Battleships.name;