Рисунок 3.2 – Форма «Инвентарные номера инвентаря»
При создании формы использовались компоненты: TextBox, Command, Grid Каждая кнопка Command имеет событие Сlick. Обработчики событий Click для кнопок представлены в Приложении А.
В ходе выполнения курсовой работы была достигнута цель работы – проектирование базы данных хозяйственного учета футбольного клуба.
Для достижения цели был решен ряд задач: составление описания предметной области; составление словаря понятий и терминов; построение исходной модели (ER-диаграммы) базы данных; определение функциональных зависимостей; синтез схемы базы данных на основании функциональных зависимостей; построение оптимизированной концептуальной модели; построение запросов на выборку.
1. Атре, Ш., Структурный подход к организации баз данных. / [Текст] : Атре, Ш. - М.: Финансы и статистика, 1983. – 320 с.
2. Бойко, В.В., Проектирование баз данных информационных систем. / [Текст] : Бойко, В.В., Савинков, В.М., – М.: Финансы и статистика, 1989. – 351 с.
3. Гарсия-Молина, Гектор, Ульман, Джеффри, Д., Уидом, Дженнифер Системы баз данных. Полный курс. : Пер. с англ. – М. : Издательский дом “Вильямс”, 2003. – 188 с. : ил.
4. Дейт, К., Руководство по реляционной СУБД DB2. / [Текст] : Дейт, К. – М.: Финансы и статистика, 1988. – 320 с.
5. Джексон, Г., Проектирование реляционных баз данных для использования с микроЭВМ. / [Текст] : Джексон, Г., -М.: Мир, 1991. – 252 с.
6. Кириллов, В.В., Структуризованный язык запросов (SQL). / [Текст] : Кириллов, В.В., – СПб.: ИТМО, 1994. – 80 с.
7. Мартин, Дж., Планирование развития автоматизированных систем. / [Текст] : Мартин, Дж., – М.: Финансы и статистика, 1984. – 196 с.
8. Мейер, М., Теория реляционных баз данных. / [Текст] : Мейер, М.,– М.: Мир, 1987. – 608 с.
9. Тиори, Т., Проектирование структур баз данных. / [Текст] : Тиори, Т., Фрай, Дж., В 2 кн., – М.: Мир, 1985. Кн. 1. – 287 с.: Кн. 2. – 320 с.
10. Ульман, Дж., Базы данных на Паскале. / [Текст] : Ульман, Дж., – М.: Машиностроение, 1990. – 386 с.
11. Хаббард, Дж., Автоматизированное проектирование баз данных. / [Текст] : Хаббард, Дж., – М.: Мир, 1984. – 294 с.
12. Цикритизис, Д., Модели данных. / [Текст] : Цикритизис, Д., Лоховски, Ф., – М.: Финансы и статистика, 1985. – 344 с.
Приложение А
Текст обработчиков событий, связанных с компонентами формы «Инвентарные номера инвентаря»
А.1 Код, связанный с событием Click кнопок «След.» и «Пред.»
* Next IF NOT EOF()
SKIP
IF EOF()
GO BOTTOM
ЕNDIF
ENDIF
THISFORM.Refresh
THISFORM.Buttons
* Previous IF NOT BOF()
SKIP - 1
IF BОF()
G0 TOP
EHDIF
ЕNDIF
THISFORM.Refresh:
THISFORM.Buttons
А.2 Код, связанный с событием Click кнопки «Найти»
IF NOT USED([Invnum_inv])
USE Invnum_inv IN 0
ENDIF
IF thisform.container1.text1.Value=" "
ELSE
SELECT Invnum_inv
SET ORDER TO inv_number
LOCATE FOR
(ALLTRIM(inv_number))=ALLTRIM(thisform.container1.text1.value)
IF FOUND()
SEEK inv_number
ENDIF
thisform.refresh
ENDIF
А.3 Код, связанный с событием Click кнопки «Новая запись»
IF NOT USED([inventar])
USE inventar IN 0
ENDIF
IF NOT USED([Invnum_inv])
USE Invnum_inv IN 0
ENDIF
IF NOT USED([Arrival_object])
USE Arrival_object IN 0
ENDIF
thisform.Visible= .F.
SET RELATION TO
SET SKIP TO
SELECT Inventar
SET ORDER TO code_obj
SELECT Invnum_inv
SET RELATION TO code_obj INTO Inventar
SET SKIP TO Inventar
DO FORM "c:\documents and settings\yla\моидокументы\visual foxpro projects\my_football_new\f_inventar.scx"
А.4 Код, связанный с событием Click кнопки «Сохранить»
thisform.container2.command1.Enabled=.T.
SELECT invnum_inv
GO RECCOUNT()
IF (invnum_inv.inv_number!=' ')
thisform.Command1.Enabled=.T.
ELSE
MESSAGEBOX("Введите все данные!!!",16, "Ошибка")
ENDIF
А.5 Код, связанный с событием Click кнопки «Отмена»
thisform.Height= 260
thisform.container1.command3.Enabled=.t.
thisform.container2.command1.Enabled=.t.
thisform.container2.command2.Enabled=.t.
thisform.container2.command5.Enabled=.t.
thisform.container3.command4.Enabled=.t.
thisform.container3.command3.Enabled=.t.
thisform.container3.command6.Enabled=.f.
А.6 Код, связанный с событием Click кнопки «Удалить»
IF MESSAGEBOX ("Удалить эту запись", 4 + 32 + 256 ) = 6
DELETE NEXT 1
BLANK
SET DELETED ON
GO TOP
THISFORM.Refresh
ENDIF
А.7 Код, связанный с событием Click кнопки «Просмотр»
IF NOT USED([Arrival_object])
USE Arrival_object IN 0
ENDIF
IF NOT USED([inventar])
USE inventar IN 0
ENDIF
IF NOT USED([Invnum_inv])
USE Invnum_inv IN 0
ENDIF
thisform.Height= 454
thisform.container3.command6.Enabled=.t.
thisform.container1.command3.Enabled=.f.
thisform.container2.command1.Enabled=.f.
thisform.container2.command2.Enabled=.f.
thisform.container2.command5.Enabled=.f.
thisform.container3.command4.Enabled=.f.
thisform.container3.command3.Enabled=.f.
Приложение Б
Текст программы обработчика событий «Запрос» на форме «Универсальный запрос»
IF NOT USED([arrival_object])
USE arrival_object IN 0
ENDIF
IF NOT USED([inventar])
USE inventar IN 0
ENDIF
IF NOT USED([invnum_inv])
USE invnum_inv IN 0
ENDIF
IF NOT USED([gate])
USE gate IN 0
ENDIF
IF thisform.container2.txt_height_gate.Value=" "
thisform.container2.txt_height_gate.Value=""
ENDIF
str="(2<>1)"
out_fields="gate.code_obj"
IF thisform.ch_code.Value = 1
out_fields ="gate.code_obj"
ENDIF
IF thisform.ch_date_arrival.Value= 1
out_fields = out_fields +", arrival_object.date"
ENDIF
IF thisform.ch_balance.Value = 1
out_fields = out_fields +", arrival_object.balance"
ENDIF
IF thisform.ch_kol.Value = 1
out_fields = out_fields +", arrival_object.kol"
ENDIF
IF thisform.ch_firm.Value = 1
out_fields = out_fields +", inventar.firm"
ENDIF
IF thisform.ch_model.Value = 1
out_fields = out_fields +", inventar.model"
ENDIF
IF thisform.ch_inv_number.Value = 1
out_fields = out_fields +", invnum_inv.inv_number"
ENDIF
IF thisform.container2.ch_height_gate.Value = 1
out_fields = out_fields +", gate.height_gate"
ENDIF
IF thisform.container2.ch_kind_gate.Value = 1
out_fields = out_fields +", gate.kind"
ENDIF
IF thisform.container2.Ch_shirina_gate.Value = 1
out_fields = out_fields +", gate.shirina"
ENDIF
IF ALLTRIM(thisform.txt_code_obj.Value) == ""
ELSE
str = str +" AND "+
"((ALLTRIM(gate.code_obj))=ALLTRIM(thisform.txt_code_obj.Value))"
ENDIF
IF ALLTRIM(thisform.txt_date_arrival.Value) == ""
ELSE
str = str +" AND "+
"((ALLTRIM(DTOC(arrival_object.date)))=ALLTRIM(thisform.txt_date_arrival.Value))"
ENDIF
IF ALLTRIM(thisform.txt_balance.Value) == ""
ELSE
str = str +" AND "+
"((ALLTRIM(STR(arrival_object.balance)))=ALLTRIM(thisform.txt_balance.Value))"
ENDIF
IF ALLTRIM(thisform.txt_kol.Value) == ""
ELSE
str = str +" AND "+
((ALLTRIM(STR(arrival_object.kol)))=ALLTRIM(thisform.txt_kol.Value))
ENDIF
IF ALLTRIM(thisform.txt_firm.Value )== ""
ELSE
str = str +" AND "+
((ALLTRIM(inventar.firm))=ALLTRIM(thisform.txt_firm.Value))
ENDIF
IF ALLTRIM(thisform.txt_model.Value) == ""
ELSE
str = str +" AND "+
"((ALLTRIM(inventar.model))=ALLTRIM(thisform.txt_model.Value))"
ENDIF
IF ALLTRIM(thisform.container2.txt_kind_gate.Value) == ""
ELSE
str = str +" AND "+
"((ALLTRIM(gate.kind))=ALLTRIM(thisform.container2.txt_kind_gate.Value))"
ENDIF
IF ALLTRIM(thisform.container2.txt_height_gate.Value) == ""
ELSE
str = str +" AND "+ "((ALLTRIM(STR(gate.height_gate)))
=thisform.container2.txt_height_gate.Value)"
ENDIF
IF ALLTRIM(thisform.container2.txt_shirina_gate.Value)== ""
ELSE
str = str +" AND "+ "((ALLTRIM(STR(gate.shirina)))=
=ALLTRIM(thisform.container2.txt_shirina_gate.Value))"
ENDIF
IF out_fields="NULL"
out_fields ="*"
ENDIF
SELECT &out_fields;
FROM(((gate INNER JOIN inventar ON
ALLTRIM(inventar.code_obj)==ALLTRIM(gate.code_obj));
INNER JOIN arrival_object ON
ALLTRIM(arrival_object.code_obj)==ALLTRIM(gate.code_obj));
INNER JOIN invnum_inv ON
ALLTRIM(invnum_inv.code_obj)==ALLTRIM(gate.code_obj));
WHERE &str INTO TABLE My_tab
objExcel=CreateObject("Excel.Application")
objExcel.Visible=.T.
objExcel.Workbooks.add
nstol = 0
IF thisform.ch_code.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Кодпартии"
objExcel.Columns[nstol].ColumnWidth = 12
ENDIF
IF thisform.ch_date_arrival.Value= 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Датапоступления"
objExcel.Columns[nstol].ColumnWidth = 18
ENDIF
IF thisform.ch_balance.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Балансоваястоимость"
objExcel.Columns[nstol].ColumnWidth = 25
ENDIF
IF thisform.ch_kol.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Количество"
objExcel.Columns[nstol].ColumnWidth = 12
ENDIF
IF thisform.ch_firm.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Фирма-производитель"
objExcel.Columns[nstol].ColumnWidth = 25
ENDIF
IF thisform.ch_model.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Модель"
objExcel.Columns[nstol].ColumnWidth = 10
ENDIF
IF thisform.ch_inv_number.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Инвентарныйномер"
objExcel.Columns[nstol].ColumnWidth = 25
ENDIF
IF thisform.container2.ch_height_gate.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Высотаворот"
objExcel.Columns[nstol].ColumnWidth = 15
ENDIF
IF thisform.container2.ch_kind_gate.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Видворот"
objExcel.Columns[nstol].ColumnWidth = 20
ENDIF
IF thisform.container2.Ch_shirina_gate.Value = 1
nstol = nstol+1
objExcel.Cells(3,nstol).select
objExcel.Cells(3,nstol).Font.Bold=.T.
objExcel.Cells(3,nstol).Value="Ширинаворот"
objExcel.Columns[nstol].ColumnWidth = 15
ENDIF
IF nstol>0
tt1 = ""+CHRTRAN(objExcel.Cells(1,1).Address,"$","")
tt2 = ""+CHRTRAN(objExcel.Cells(1,nstol).Address,"$","")
WITH objExcel&&cel
WITH .Range(tt1+":"+tt2)
WITH .Font
Name = "Arial Cyr"
FontStyle = "полужирный"
Size = 14
ENDWITH
HorizontalAlignment = 3
VerticalAlignment = 1
WrapText = .F.