Модуль учета поставок компьютеров, оргтехнике и комплектующих

Автор: Пользователь скрыл имя, 28 Февраля 2013 в 12:24, дипломная работа

Описание работы

Основной задачей предприятия по организации материально-техническим обеспечением является своевременное, бесперебойное и комплексное снабжение производства необходимой компьютерной техникой для осуществления автоматизации производственных процессов. Задачей отдела информационных технологий является своевременное и полное обеспечение всех подразделений завода вычислительной техникой.

Содержание

ВВЕДЕНИЕ 5
1 ОБЩАЯ ЧАСТЬ 7
1.1 Цель разработки 7
1.2 Анализ использования разработки 7
1.3 Анализ методов решения 8
1.4 Анализ средств автоматизации 9
2 Специальная часть 15
2.1 Постановка задачи 15
2.2 Описание алгоритма 18
2.3 Текст программы с описанием 20
2.4 Описание процесса отладки 21
2.5 Инструкция пользователя 22
3 Экономическая часть 29
3.1 Расчет себестоимости программного продукта «Модуль учета поставок компьютеров, оргтехники и комплектующих» 29
4 Охрана труда и Техника Безопасности 40
4.1 Анализ потенциально-опасных и вредных факторов 40
4.2 Техника безопасности 40
4.3 Эргономика 42
ЗАКЛЮЧЕНИЕ 45
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 46
ПРИЛОЖЕНИЕ 1 47

Работа содержит 1 файл

Пояснительная записка.docx

— 1.43 Мб (Скачать)

  end;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

  ed_link_dogovora.Items.Clear;

  ed_link_dogovora.Items.EndUpdate;

end;

procedure TPostavkiForm.PageControl1Change(Sender: TObject);

begin

end;

// Заполнение выпадающих списков

procedure TPostavkiForm.FillCombos;

var

  LO: TListObject;

begin

  // Для режима создания

  add_link_nomenklatura.Items.BeginUpdate;

  add_link_nomenklatura.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, naimeninovanie  FROM nomenklatura order by naimeninovanie;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('naimeninovanie').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

    add_link_nomenklatura.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

  add_link_nomenklatura.Items.EndUpdate;

  add_link_kontragenti.Items.BeginUpdate;

  add_link_kontragenti.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, naimeninovanie  FROM kontragenti order by naimeninovanie;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

     ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('naimeninovanie').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

    add_link_kontragenti.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

  add_link_kontragenti.Items.EndUpdate;

  add_link_dogovora.Items.BeginUpdate;

  add_link_dogovora.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, data_dogovora || '' / № договора '' || nomer_dogovora as dogovor FROM dogovora order by dogovor;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('dogovor').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

    add_link_dogovora.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

  add_link_dogovora.Items.EndUpdate;

  // Для режима правки

  ed_link_nomenklatura.Items.BeginUpdate;

  ed_link_nomenklatura.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, naimeninovanie  FROM nomenklatura order by naimeninovanie;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('naimeninovanie').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

   ed_link_nomenklatura.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

  ed_link_nomenklatura.Items.EndUpdate;

  ed_link_kontragenti.Items.BeginUpdate;

  ed_link_kontragenti.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, naimeninovanie  FROM kontragenti order by naimeninovanie;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('naimeninovanie').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

    ed_link_kontragenti.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

  ed_link_kontragenti.Items.EndUpdate;

  ed_link_dogovora.Items.BeginUpdate;

  ed_link_dogovora.Items.Clear;

  ListQuery.SQL.Text := 'SELECT id, data_dogovora || '' / № договора '' || nomer_dogovora as dogovor FROM dogovora order by dogovor;';

  ListQuery.Execute;

  ListQuery.First;

  while not ListQuery.Eof do

  begin

    LO := TListObject.Create;

    LO.name := ListQuery.FieldByName('dogovor').AsString;

    LO.id := ListQuery.FieldByName('id').AsLargeInt;

    ed_link_dogovora.Items.AddObject(LO.name, LO);

    ListQuery.Next;

  end;

ed_link_dogovora.Items.EndUpdate;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

end;

// Производит поиск столбца сетки DBGrid по имени поля БД

function TPostavkiForm.FindColumnByField(Field: string): TColumnEh;

var

  i: Integer;

begin

  result := Nil;

  for i := 0 to DBGridEh1.Columns.Count - 1 do

  begin

    // Если название  поля совпадает с переданному функции тексту, выходим, возвращая ссылку на столбец

    if DBGridEh1.Columns[i].FieldName = Field then

    begin

      result := DBGridEh1.Columns[i];

      break;

    end;

  end;

end;

// Заполнение сетки выборкой из БД

procedure TPostavkiForm.FillGrid;

begin

  // Создаем скрипт SQL на  основе выборки, текущего режима  сортировки и порядка (от меньщего к больщему или наоборот)

  ReadQuery.SQL.Text := Format('%s ORDER BY %s %s', [SQL, ORDER, SORT]);

  ReadQuery.Execute;

end;

// Обновление существующей  строки в БД

procedure TPostavkiForm.Button2Click(Sender: TObject);

begin

  editquery.sql.text:='update postavki set cena=:cena where id=:id';

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('cena').AsString:=ed_cena.Text;

  editquery.Execute;

  editquery.SQL.Text:='update postavki set kol_vo=:kol_vo where id=:id';

     ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('kol_vo').AsString:=ed_kol_vo.Text;

  editquery.Execute;

  editquery.SQL.Text:='update postavki set primechanie=:primechanie where id=:id';

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('primechanie').AsString:=ed_primechanie.Text;

  editquery.Execute;

  editquery.sql.text:='update postavki set inv_nomer=:inv_nomer where id=:id';

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('inv_nomer').AsString:=ed_inv_nomer.Text;

  editquery.Execute;

  editquery.sql.text:='update postavki set data_postavki=:data_postavki where id=:id';

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('data_postavki').AsDateTime:=ed_data_postavki.DateTime;

  editquery.Execute;

  editquery.sql.text:='update postavki set data_platezha=:data_platezha where id=:id';

  editquery.ParamByName('id').AsInteger:=readquery.FieldByName('id').AsInteger;

  editquery.ParamByName('data_platezha').AsDateTime:=ed_data_platezha.DateTime;

  editquery.Execute;

  editquery.sql.text:='update postavki set link_nomenklatura=:link_nomenklatura where id=:id';

  EditQuery.ParamByName('link_nomenklatura').AsLargeInt :=

  TListObject(ed_link_nomenklatura.Items.Objects[ed_link_nomenklatura.ItemIndex]).id;

  editquery.Execute;

  editquery.sql.text:='update postavki set link_kontragenti=:link_kontragenti where id=:id';

  EditQuery.ParamByName('link_kontragenti').AsLargeInt :=

  TListObject(ed_link_kontragenti.Items.Objects[ed_link_kontragenti.ItemIndex]).id;

  editquery.Execute;

  editquery.sql.text:='update postavki set link_dogovora=:link_dogovora where id=:id';

  EditQuery.ParamByName('link_dogovora').AsLargeInt :=

  TListObject(ed_link_dogovora.Items.Objects[ed_link_dogovora.ItemIndex]).id;

   editquery.Execute;

  readquery.Refresh

end;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

// Удаление выбраной строки  с проверкой ее использования в других таблицах

procedure TPostavkiForm.Button3Click(Sender: TObject);

var

  ok: boolean;

begin

  // Проверка на пустой ID

  if Trim(ed_id.Text) = '' then

  begin

    ShowMessage('Строка не выбрана!');

    exit;

  end;

  if MessageDLG('Действительно удалить выбранную строку?', mtConfirmation,

    [mbYes, mbNo], 0) = idYes then

  begin

    // Вызов хранимой процедуры удаления

    EditQuery.SQL.Text := 'delete from postavki where id = :id';

    EditQuery.ParamByName('id').AsString := ed_id.Text;

    ok := true;

    try

      EditQuery.Execute;

    except

      ok := false;

    end;

    if ok then

    begin

      // Обновление текущей выборки из таблицы

      ReadQuery.Refresh;

      FillDataForUpdate;

    end

    else

    begin

      ShowMessage('Произошла неизвестная ошибка.');

    end;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

  end;

end;

// Вставка (создание) новой записи в БД

procedure TPostavkiForm.Button4Click(Sender: TObject);

var

ok: boolean;

begin

  // Проверям, заполнены ли обязательные поля ввода

  if (Trim(add_cena.Text) <> '') then

  begin

    // Вызываем хранимую  процедуру вставки новой записи (та же функция, что и для  обновления, но с пустым ID)

    // Функция возвращает ID создаваемой записи, генерированный силами самой СУБД

  EditQuery.SQL.Text :=

  'INSERT INTO postavki(  '+

  '       link_nomenklatura, link_kontragenti, link_dogovora, cena, '   +

  '       kol_vo, inv_nomer, data_platezha, data_postavki, primechanie) '   +

  'VALUES (:link_nomenklatura, :link_kontragenti, :link_dogovora, :cena, :kol_vo,  '     +

  '       :inv_nomer, :data_platezha, :data_postavki,:primechanie); '  ;

  EditQuery.ParamByName('inv_nomer').AsString := add_inv_nomer.Text;

  EditQuery.ParamByName('primechanie').AsString := add_primechanie.Text;

  EditQuery.ParamByName('kol_vo').AsString := add_kol_vo.Text;

  EditQuery.ParamByName('data_platezha').AsDateTime := add_data_postavki.Date;

  EditQuery.ParamByName('data_postavki').AsDateTime := add_data_postavki.Date;

  EditQuery.ParamByName('link_nomenklatura').AsLargeInt :=

  TListObject(add_link_nomenklatura.Items.Objects[add_link_nomenklatura.ItemIndex]).id;

  EditQuery.ParamByName('link_kontragenti').AsLargeInt :=

  TListObject(add_link_kontragenti.Items.Objects[add_link_kontragenti.ItemIndex]).id;

  EditQuery.ParamByName('link_dogovora').AsLargeInt :=

  TListObject(add_link_dogovora.Items.Objects[add_link_dogovora.ItemIndex]).id;

  EditQuery.ParamByName('cena').AsString := add_cena.Text;

    ok := false;

    try

     ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1 

    EditQuery.Execute;

      ok := true;

    except

      on E: Exception do

      begin

        ShowMessage('Произошла неизвестная ошибка: ' + E.Message);

        ok := false;

      end;

    end;

    if ok then

    begin

        // Обновление  текущей выборки из БД, отображаемой DbGrid

        ReadQuery.Refresh;

        FillDataForUpdate;

        FillDataForAdd;

    end;

  end

  else

  begin

    ShowMessage('Проверьте  заполнение полей ввода!');

  end;

end;

procedure TPostavkiForm.CheckBox1Click(Sender: TObject);

begin

 if checkbox1.Checked=true then ed_data_platezha.DateMode:=dmUpDown else ed_data_platezha.DateMode:=dmComboBox;

end;

procedure TPostavkiForm.CheckBox2Click(Sender: TObject);

begin

 if checkbox2.Checked=true then ed_data_postavki.DateMode:=dmUpDown else ed_data_postavki.DateMode:=dmComboBox;

end;

procedure TPostavkiForm.CheckBox3Click(Sender: TObject);

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

begin

 if checkbox3.Checked=true then add_data_platezha.DateMode:=dmUpDown else add_data_platezha.DateMode:=dmComboBox;

end;

procedure TPostavkiForm.CheckBox4Click(Sender: TObject);

begin

 if checkbox4.Checked=true then add_data_postavki.DateMode:=dmUpDown else add_data_postavki.DateMode:=dmComboBox;

end;

procedure TPostavkiForm.DBGridEh1CellClick(Column: TColumnEh);

begin

  // Перечитать значение  полей ввода на основе текущей строки выборки

  FillDataForUpdate;

end;

// Смена сортировки по  щелчку на заголовке столбца DbGrid

procedure TPostavkiForm.DBGridEh1TitleBtnClick(Sender: TObject;

  ACol: Integer; Column: TColumnEh);

begin

  if ORDER = Column.FieldName then

  begin

    // Столбец уже  тот, что выбран ранее - меняем только порядок

    if SORT = 'ASC' then

    begin

      SORT := 'DESC';

      Column.Title.SortMarker := smDownEh;

    end

    else

    begin

      SORT := 'ASC';

      Column.Title.SortMarker := smUpEh;

    end;

  end

  // Столбец другой - меняем  поле БД и порядок ставим по-умолчанию

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

 else

  begin

    ORDER := Column.FieldName;

    SORT := 'ASC';

    Column.Title.SortMarker := smUpEh;

  end;

  FillGrid;

end;

// Заполнение полей ввода  режима редактирования текущей строкой

procedure TPostavkiForm.FillDataForUpdate;

begin

ed_id.Text := ReadQuery.FieldByName('id').AsString;

ed_inv_nomer.Text := ReadQuery.FieldByName('inv_nomer').AsString;

ed_cena.Text := ReadQuery.FieldByName('cena').AsString;

ed_primechanie.Text := ReadQuery.FieldByName('primechanie').AsString;

ed_data_postavki.Date := ReadQuery.FieldByName('data_postavki').AsDateTime;

ed_data_platezha.Date := ReadQuery.FieldByName('data_platezha').AsDateTime;

ed_kol_vo.Text := ReadQuery.FieldByName('kol_vo').AsString;

 if ReadQuery.FieldByName('link_nomenklatura').IsNull then

ed_link_nomenklatura.ItemIndex := -1 else

ed_link_nomenklatura.ItemIndex := LBItemByID(ed_link_nomenklatura, ReadQuery.FieldByName('link_nomenklatura') .AsLargeInt);

//

 if ReadQuery.FieldByName('link_kontragenti').IsNull then

ed_link_kontragenti.ItemIndex := -1 else

ed_link_kontragenti.ItemIndex := LBItemByID(ed_link_kontragenti, ReadQuery.FieldByName('link_kontragenti') .AsLargeInt);

//

 if ReadQuery.FieldByName('link_dogovora').IsNull then

ed_link_dogovora.ItemIndex := -1 else

ed_link_dogovora.ItemIndex := LBItemByID(ed_link_dogovora, ReadQuery.FieldByName('link_dogovora') .AsLargeInt);

end;

// Заполнение полей ввода  режима создания

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

procedure TPostavkiForm.FillDataForAdd;

begin

 add_inv_nomer.Text := '';

//  add_c_number.Text := '';

//  add_reg_number.Text := '';

//  add_date_from.Date := Now;

//  add_date_to.Date := Now;

//  add_docdate.Date := Now;

//  add_unlim.Checked := False;

//  add_scanfile.Text := '';

//

//   add_resp.ItemIndex := -1;

//   add_part_resp.ItemIndex := -1;

//

//   add_partner.ItemIndex := -1;

 

end;

// События при активации формы (окна)

procedure TPostavkiForm.FormActivate(Sender: TObject);

var

  Col: TColumnEh;

begin

  onActivate := nil;

  PageControl1.ActivePageIndex := 0;

  Col := Self.FindColumnByField(ORDER);

  FillCombos;

  // Сортировка по-умолчанию и показ выборки

  DBGridEh1.OnTitleBtnClick(Col, Col.Index, Col);

end;

procedure TPostavkiForm.FormDestroy(Sender: TObject);

begin

  onDestroy := nil;

  NullCombos;

   ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1

end;

procedure TPostavkiForm.N2Click(Sender: TObject);

begin

  // Выходи из окна

  Close;

end;

procedure TPostavkiForm.N4Click(Sender: TObject);

begin

 Report.ShowReport(true); //Предросмотр

end;

procedure TPostavkiForm.ToolButton1Click(Sender: TObject);

begin

  // Диалог поиска

  DBGridEhFindDlgs.ExecuteDBGridEhFindDialog(DBGridEh1, '', '', nil, false)

end;

procedure TPostavkiForm.ToolButton4Click(Sender: TObject);

begin

  // Заполнение выборки

  FillGrid;

end;

end.

 

ПРИЛОЖЕНИЕ 2

Связь модулей.

Unit 5


Unit 6 1

Unit 4

Unit 3

Unit 2

Unit 1


 


Информация о работе Модуль учета поставок компьютеров, оргтехнике и комплектующих