thisform.CMBMan2.Visible=.f.
thisform.CMBMan3.Visible=.f.
Выпадающий список с запросами - CMBQueries.Click:
case thisform.CMBQueries.ListIndex==15
thisform.LBLMan.Caption="Для класса:"
thisform.LBLMan.Visible=.t.
thisform.TXTMan.Visible=.f.
thisform.CMDMan.Visible=.t.
thisform.LBLMan2.Visible=.f.
thisform.CMBMan1.Visible=.t.
thisform.CMBMan2.Visible=.f.
thisform.CMBMan3.Visible=.f.
В результате работы этой процедуры, на форме появляются надпись "Для класса:", выпадающий список, содержащий все типы кораблей и кнопка "Вывести". Для вывода результата нужно выбрать в списке нужный элемент и нажать на кнопку "Вывести", либо клавишу Enter.
Кнопка "Вывести" - CMDMan.Click:
case thisform.CMBQueries.ListIndex==15
SELECT Types.class, AVG(Battleships.fire1_num);
FROM ships!battleships INNER JOIN ships!types ON Battleships.class_id = Types.class_id;
WHERE Battleships.class_id=thisform.CMBMan1.ListIndex-1;
INTO TABLE Temp;
NOCONSOLE
thisform.GRDMList.avgnumfire
thisform.GRDMList.RecordSourceType=0
thisform.GRDMList.RecordSource='Temp.dbf'
Выпадающий список с запросами - CMBQueries.Click:
case thisform.CMBQueries.ListIndex==5
SELECT Types.class;
FROM ships!Types;
INTO ARRAY types;
NOCONSOLE
n=ALEN(types)
DIMENSION mindate[n,2]
FOR i=1 TO n
SELECT MIN(Battleships.date_creation);
FROM ships!battleships INNER JOIN ships!types ON Battleships.class_id = Types.class_id;
WHERE Types.class = types(i);
INTO ARRAY tmp
mindate[i,1]=types[i]
mindate[i,2]=tmp[1]
ENDFOR
CREATE TABLE Temp1 FREE (col1 C(30), col2 N(4))
APPEND FROM ARRAY mindate
thisform.GRDMList.mindateshipcreation
thisform.GRDMList.RecordSourceType = 0
thisform.GRDMList.RecordSource = 'Temp1.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==4
SELECT Types.class;
FROM ships!Types;
INTO ARRAY types;
NOCONSOLE
n=ALEN(types)
DIMENSION numdrawn[n,2],tmp[1]
FOR i=1 TO n
SELECT battles.drawn;
FROM ships!battles INNER JOIN ships!battleships;
INNER JOIN ships!types ON Battleships.class_id = Types.class_id ON battles.ship_id = Battleships.ship_id;
WHERE battles.drawn = .T. AND Types.class = types[i];
INTO ARRAY tmp;
numdrawn[i,1]=types[i]
numdrawn[i,2]=ALEN(tmp)
ENDFOR
CREATE TABLE Temp3 FREE (col1 C(30), col2 N(2))
APPEND FROM ARRAY numdrawn
thisform.GRDMList.numshipsdrawnforeachclass
thisform.GRDMList.RecordSourceType = 0
thisform.GRDMList.RecordSource = 'Temp3.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.
Данная РГР, конечно же, не заслуживает называться полноценной базой данных и использование её на практике просто не реально, но всё же требованиям, поставленным в задании, она вполне удовлетворяет.
Ну а вообще говоря, для написания простой БД, при минимальных затратах времени и средств, MS Visual Fox Pro подходит идеально, что должно заинтересовать потенциальных пользователей БД.
MSDN Library, Copyright 1987-2004 Microsoft Corporation
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.