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

• • •

Но губы пришлось наложить пластырь, и он почти полностью заткнул мне рот. Нос кровоточить почти перестал - очень помог пакет со льдом. Все будет в порядке. Моя физиономия постепенно заживет. Как мне кажется, обморок продолжался около 15-ти минут. Второй раз за сегодня я потерял драгоценное время, становясь жертвой полностью неконтролируемых обстоятельств. Рабочий стол ждет меня.

НАЗАД, К ФОРМЕ ВВОДА ИМА

Поигрывая крандашом, я осмысливал следующий шаг. Новая форма, очевидно, будет самой сложной из всех, ведь ей нужны будут данные из многих таблиц. Форма должна автоматически присваивать серийные номера и даты новым ЯМА и отображать оба элемента (непосредственно из таблицы RMA). Это можно сделать с помощью объекта DBText. Поле с инициалами легко обслуживается комбинированным списком, содержащим все инициалы из таблицы "Служащие". Сообщение о статусе RMA формируется из перечня сообщений через поле RMA_STATUS в таблице RMA Здесь также уместно задействовать комбинированный список. Само собой, описание проблемы должно обслуживаться DBMemo.

А теперь самое хитрое. Мне нужен способ поиска специфицированного счета или возможность просматривать таблицу "Счета". Как только конкретный счет обнаружится, я получу непосредственный или косвенный доступ сразу к нескольким фрагментам нужных данных. Складские и серийные номера можно извлечь из таблицы "Элементы счета". Теперь, просматривая список элементов счета (я решил что для этой цели лучше всего подходит DBGrid), технический работник может выбрать именно тот элемент, который указал покупатель. В счете также указан идентификатор покупателя, следовательно - из таблицы "Покупатели" можно извлечь его имя.

Навигационное оборудование нужно то же самое, что и для формы RMA Management - DBNavigator и кнопка Find. Дополнительно необходимы кнопки OK и Отменить (Cancel). В третий раз я взялся за линейку и начертил в блокноте эскиз, который и представлен на рисунке 17.8.

Далее - знакомый процесс создания и увеличения новой формы (Form4). В верхней горизонтальной строке я разместил четыре Lable. Ниже каждой из них - по объекту DBText и затем - разместил в новой форме все оставшиеся компоненты эскиза.

Если мои подсчеты верны, то для таблиц RMA счетов, элементов счетов, покупателей и служащих нужно пять пар объектов Table/DataSource. Но стоп! Как же обработать

Программирование в среде Delphi
Рис. 17.8 Эскиз формы ввода RMA Input.

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


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Август
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31