2.6 Разработка системы поиска информации в БД
В курсовой работе представлено 2 варианта поиска: простой и расширенный. Простой поиск выводит в DBGrid одну запись, поле ФИО которой равно введенному в строке поиска тексту или же начинается с тех же символов.
Примечательность простого поиска в том, что он ищет все записи, соответствующие запросу, но выводит сначала лишь первую, а по кнопке «Искать далее» переходит на следующую запись. По окончании простого поиска в окне появляются 3 новые кнопки: удалить, отобразить все и добавить информацию. Первая удаляет запись, отображающуюся на данный момент, посредством следующего кода:
DataSource2.DataSet:=Table1;
Vid_DBGrid;
Table1.First;
//Находим в БД студенты удаляемую запись
for i:=1 to Table1.RecordCount do begin
if Table1['ФИО']=Query1['ФИО'] then begin
Query1.Close;
s:=Table1['Группа'];
Table1.Delete;
break;
end;
Table1.Next;
end;
//Для всех записей за ней из той же группы уменьшаем порядковый номер на 1
b:=true;
While b=true do
if Table1['Группа']=s then begin
Table1.Edit;
Table1['Номер']:=Table1['Номер']-1;
Table1.Post;
Table1.Next;
end else
b:=false;
Вторая кнопка отображает в DBGrid вновь все записи, при этом осуществляя Refresh всех записей. Третья кнопка вызывает окно добавления информации (см. рис.1), предназначенное для добавления информации к тем студентам, которые получают более одного поощрения или ездили более, чем в одну поездку. Примечательность работы этого окна заключается том, что в поле Сумма будет выводиться общая сумма, полученная студентом с момента выдачи первого поощрения.
рис.1 Окно добавления информации
2.7 Разработка функции перехода в следующий семестр
Один раз в семестр одно из полей нашей БД (Группа) должно меняться, раз в год меняется еще одно поле (Курс), а те записи, значение поля Группа которых заканчивается буквой “Д” (ЭВМ-1Д), должны удаляться из БД, но сохраняться в еще каком-нибудь месте.
Реализовано это в пункте меню Доплонительно àПерейти в след. Семестр. Выпускники при выполнении этой операции удаляются из БД и записываются в файл с расширением *.csv.
procedure TForm1.N14Click(Sender: TObject);
var
i,j,k:integer;
s,st,str:string;
f:textfile;
begin
if MessageDlg('Вы уверены, что хотите перевести всех студентов в следующий семестр?',mtConfirmation,[mbOK, mbCancel],0)=mrOK then begin
assignfile(f,'Выпускники'+DateToStr(Now)+'.csv');
rewrite(f);
for i:=1 to Table1.RecordCount do begin
s:=Table1['Группа'];
j:=0;
str:='';
repeat
j:=j+1;
str:=str+s[j];
until s[j]='-';
st:='';
for k:=j+1 to length(s) do
st:=st+s[k];
if st[length(st)]='Д' then begin
st:=inttostr(Table1['Номер'])+';'+Table1['ФИО']+';'+Table1['Факультет']+';';
st:=st+inttostr(Table1['Курс'])+';'+Table1['Группа']+';';
if Table1['Поощрения']=null then
st:=st+';'
else
st:=st+Table1['Поощрения']+';';
if Table1['Дата выдачи']=null then
st:=st+';'
else
st:=st+Table1['Дата выдачи']+';';
if Table1['Сумма']=null then
st:=st+';'
else
st:=st+Table1['Сумма']+';';
if Table1['Примечание']=null then
st:=st+';'
else
st:=st+Table1['Примечание']+';';
if Table1['Поездки']=null then
st:=st+';'
else
st:=st+Table1['Поездки']+';';
if Table1['Примечания']=null then
st:=st+';'
else
st:=st+Table1['Примечания']+';';
writeln(f,st);
Table1.Delete;
end else begin
j:=strtoint(st) div 10;
if j<11 then begin
with Query2 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM '+Table1['Факультет']+'.db');
SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');
Open;
end;
Table1.Edit;
Table1['Группа']:=str+inttostr(j+1)+s[length(s)];
if (j mod 2)=0 then
Table1['Курс']:=Table1['Курс']+1;
Table1.Post;
if Query2['Группа']<>'' then begin
Query2.Edit;
Query2['Группа']:=Table1['Группа'];
Query2.Post;
end;
Table1.Next;
end else
if j=11 then begin
with Query2 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM '+Table1['Факультет']+'.db');
SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');
Open;
end;
Table1.Edit;
Table1['Группа']:=str+s[length(s)]+'Д';
if (j mod 2)=0 then
Table1['Курс']:=Table1['Курс']+1;
Table1.Post;
if Query2['Группа']<>'' then begin
Query2.Edit;
Query2['Группа']:=Table1['Группа'];
Query2.Post;
end;
Table1.Next;
end;
end;
end;
closefile(f);
end;
end;
3. Технологическая часть
3.1 Системные требования и характеристики программы
1) ОС: Widows 95, 98, 2000, NT, Me, XP, Vista
2) 128 Мб ОЗУ, 1.7 ГГц
3) мышь, клавиатура
4) наличие установленной программы BDE Administrator
3.2 Руководство администратора базы данных.
Перед началом работы с базой данных необходимо установить программу BDE Administrator (рис. 1) Эта утилита может устанавливаться как с Delphi так и без него. В этой программе необходимо создать псевдоним базы и указать её местоположение. Для этого заходим в меню Object и выбираем New. В появившемся окне New Database Alias выбираем Standard и нажимаем OK.
рис. 1 Главное окно программы BDE Administrator
В левой колонке вводим псевдоним базы данных. В нашем случае это Profkom. Расположение базы нужно указать в поле Path.
... или отменить редактирования записи. При выборе пункта 4 на экран выведутся все записи. Упорядочивание по алфавиту происходит автоматически при создании, удалении или редактировании записи. При выборе пятого пункта пользователю предлагается сначала выбрать тип вместимости стадионов (равно, больше, меньше, больше или равно, меньше или равно), затем ввести вместимость, по которой хотите ...
... int(11)); mysql> DESCRIBE pokup; mysql> CREATE TABLE sale (cod_s int(11), cost_s float, date_s date, cod_pokup int(11), cod_prodav int(11)); mysql> DESCRIBE sale; Посмотрим список созданных таблиц mysql> SHOW TABLES; Вводим данные в таблицы. Сначала заполним таблицу sale mysql> INSERT INTO sale -> VALUES (3003, 767, "2005-03-04", 2001, 1001); ...
... за счет доменов прямо пропорционально количеству полей всех таблиц. Поэтому, обычно создают достаточное количество доменов для описания таблиц в БД, а потом создают сами таблицы. Вот выдержка из реальной базы данных для создания доменов: CREATE DOMAIN IZMER_NUM INTEGER NOT NULL; CREATE DOMAIN ACTIVITIES_NUM INTEGER NOT NULL; . . . CREATE DOMAIN NAMES_TYPE VARCHAR(45) COLLATE PXW_CYRL; CREATE ...
... Мягкий 31.07.2006 240 Познавательная Внешним ключом таблицы является поле Автор. Структуры созданных таблиц выглядят следующим образом: Структура таблицы «Авторы» созданной базы данных «Картотека книг» Имя поля Тип данных Описание КодАвтора Счетчик Отражает числовое значение кода авторов книг Имя Текстовый (10) Имя автора Фамилия Текстовый (20) Фамилия автора ...
0 комментариев