Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Структура таблицы «Счета»
Поле | Тип | Размер | Описание | Ключ |
Код | Число | 15 | Код товара | Да |
Номер | Текстовое | 15 | Номер счета | |
Дата | Дата/время | - | Дата документа | |
Код клиента | Число | 15 | Код покупателя |
\
Таблица 2.2.9
Структура таблицы «Табличная часть счет»
Поле | Тип | Размер | Описание | Ключ |
Код | Число | 15 | Код строки | Да |
Номер | Число | 15 | Номер счета | |
Код товара | Число | 15 | Код товара | |
Количество | Число | 10 | Количество товара |
2.3 Выходная информация
Выходной информацией для разрабатываемой информационной системы являются: результаты поиска информации, а также упорядоченные по заданным критериям таблицы данных, различная информация из этих таблиц, а также отчет по остаткам продукции на складе. Данная информация выводится на экран. Отчет выводятся в Microsoft Excel, а уже оттуда на печать.
Диаграмма последовательностей используется для точного определения логики сценария выполнения прецедента. Диаграммы последовательностей отображают типы объектов, взаимодействующих при исполнении прецедентов, сообщения, которые они посылают друг другу, и любые возвращаемые значения, ассоциированные с этими сообщениями. Прямоугольники на вертикальных линиях показывают "время жизни" объекта. Линии со стрелками и надписями названий методов означают вызов метода у объекта.
Линия жизни объекта изображается пунктирной вертикальной линией, ассоциированной с единственным объектом на диаграмме последовательности. Линия жизни служит для обозначения периода времени, в течение которого объект существует в системе и, следовательно, может потенциально участвовать во всех ее взаимодействиях.
Отдельные объекты, выполнив свою роль в системе, могут быть уничтожены, чтобы освободить занимаемые ими ресурсы. Для таких объектов линия жизни обрывается в момент его уничтожения.
Каждое взаимодействие описывается совокупностью сообщений, которыми участвующие в нем объекты обмениваются между собой. В этом смысле сообщение представляет собой законченный фрагмент информации, который отправляется одним объектом другому.
Типы сообщений:
- "call" (вызвать) - сообщение, требующее вызова операции или процедуры принимающего объекта;
- "reply" (возвратить) - сообщение, возвращающее значение выполненной операции или процедуры вызвавшему ее объекту;
- "creation" (создать) - сообщение, требующее создания другого объекта для выполнения определенных действий;
- "destruction" (уничтожить) - сообщение с явным требованием уничтожить соответствующий объект. Посылается в том случае, когда необходимо прекратить нежелательные действия со стороны существующего в системе объекта, либо когда объект больше не нужен и должен освободить задействованные им системные ресурсы.
3 РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ
3.1Управление базой данных
Для управления базой данных в программе использованы два компонента Borland C++ Builder.
TADOConnection:
Компонент предназначен для управления соединением с объектами хранилища данных ADO. Он обеспечивает доступ к хранилищу данных компонентам ADO, инкапсулирующим набор данных. Применение этого компонента дает разработчику ряд преимуществ:
все компоненты доступа к данным ADO обращаются к хранилищу данных через одно соединение;
возможность напрямую задать объект провайдера соединения;
доступ к объекту соединения ADO;
возможность выполнять команды ADO;
выполнение транзакций;
расширенное управление соединением при помощи методов-обработчиков событий.
Перед открытием соединения необходимо задать его параметры. Для этого предназначено свойство
property ConnectionString: WideString;
Набор параметров изменяется в зависимости от типа провайдера и может настраиваться как вручную, так и при помощи специального редактора параметров соединения, который вызывается двойным щелчком на компоненте, перенесенным на форму, или щелчком на кнопке в поле редактирования свойства ConnectionString в Инспекторе объектов. Здесь можно настроить соединение через свойство ConnectionString (радиокнопка Use Connection String) или загрузить параметры соединения из файла с расширением udl (радиокнопка Use Data Link File).
TADOQuery:
Компонент может использоваться в приложениях ADO вместо компонента Query приложений BDE, выполняющего аналогичные функции. Он применяется для выполнения произвольных запросов SQL. Это могут быть запросы просмотра данных SELECT и запросы изменения данных INSERT, DELETE, UPDATE, ALTER TABLE, CREATE TABLE. Могут также выполняться хранимые процедуры.
База данных задается свойством ConnectionString, или свойством Connection, подключающим компонент к ADOConnection. Для управления данными в приложение вводится, помимо компонента ADOQuery, обычный компонент источника данных DataSource, в свойстве DataSet которого задается имя компонента ADOQuery. Далее к этому источнику данных DataSource подключаются любые компоненты отображения данных.
Основное свойство компонента — SQL, содержащее запрос. Запрос SELECT выполняется методом Open или заданием значения true свойству Active. Выполнение запросов, не возвращающих множество данных (INSERT, DELETE, UPDATE, ALTER TABLE, CREATE TABLE), осуществляется методом ExecSQL.
Любое изменение текста SQL во время выполнения приводит к разрыву соединения компонента с базой данных. Так что после задания нового значения SQL соединение надо восстанавливать методом Open или заданием true свойству Active. При этом если связь с базой данных осуществляется через компонент ADOConnection, надо учитывать указанную в описании этого компонента взаимосвязь свойства Active компонента ADOQuery и свойства Connected компонента ADOConnection.
3.2 Организация поиска
При разработке программы «Учет ТТН» использовались множество процедур. Некоторые из них и будут описаны.
Форма программного продукта «Документы» служит для ввода документа определенного вида в базу данных. Для сохранения документа служит кнопка «Сохранить».При ее нажатии активируется процедура
void __fastcall TForm8::Button2Click(TObject *Sender)
{
if(Form8->Caption == ""){
DataModule2->ADOQuery1->SQL->Clear();
if(Form8->Hint == "0") DataModule2->ADOQuery1->SQL->Add("INSERT INTO НакладныеПр (Номер, КодКлиента, Дата)");
if(Form8->Hint == "1") DataModule2->ADOQuery1->SQL->Add("INSERT INTO НакладныеРас (Номер, КодКлиента, Дата)");
if(Form8->Hint == "2") DataModule2->ADOQuery1->SQL->Add("INSERT INTO Счета (Номер, КодКлиента, Дата)");
DataModule2->ADOQuery1->SQL->Add("VALUES ("+QuotedStr(Edit1->Text)+','+StringGrid1->Cells[0][0]+','+QuotedStr(Edit2->Text)+")");
DataModule2->ADOQuery1->ExecSQL();
DataModule2->ADOQuery1->SQL->Clear();
if(Form8->Hint == "0") DataModule2->ADOQuery1->SQL->Add("SELECT * FROM НакладныеПр");
if(Form8->Hint == "1") DataModule2->ADOQuery1->SQL->Add("SELECT * FROM НакладныеРас");
if(Form8->Hint == "2") DataModule2->ADOQuery1->SQL->Add("SELECT * FROM Счета");
DataModule2->ADOQuery1->Open();
DataModule2->ADOQuery1->Last();
Form8->Caption = DataModule2->ADOQuery1->Fields->Fields[0]->AsString;
DataModule2->ADOQuery1->Close();
for (int i=1; i<StringGrid2->RowCount; i++){
//////
DataModule2->ADOQuery1->SQL->Clear();
if(Form8->Hint == "0") DataModule2->ADOQuery1->SQL->Add("INSERT INTO Приход (Номер, КодТовара, Количество)");
if(Form8->Hint == "1") DataModule2->ADOQuery1->SQL->Add("INSERT INTO Расход (Номер, КодТовара, Количество)");
if(Form8->Hint == "2") DataModule2->ADOQuery1->SQL->Add("INSERT INTO СчетДет (Номер, КодТовара, Количество)");
DataModule2->ADOQuery1->SQL->Add("VALUES ("+Form8->Caption+','+StringGrid2->Cells[0][i]+','+StringGrid2->Cells[3][i]+")");
DataModule2->ADOQuery1->ExecSQL();
}
ShowMessage("ДАННЫЕ СОХРАНЕНЫ!");
}else
{ // редактирование
DataModule2->ADOQuery1->SQL->Clear();
DataModule2->ADOQuery1->SQL->Add("UPDATE Клиенты");
DataModule2->ADOQuery1->SQL->Add("SET Номер="+QuotedStr(Edit1->Text)+',');
DataModule2->ADOQuery1->SQL->Add("КодКлиента="+StringGrid1->Cells[0][0]+',');
DataModule2->ADOQuery1->SQL->Add("Дата="+QuotedStr(Edit2->Text));
DataModule2->ADOQuery1->SQL->Add("WHERE Код="+Form8->Caption);
DataModule2->ADOQuery1->ExecSQL();
for (int i=1; i<StringGrid2->RowCount; i++)
if (StringGrid2->Cells[0][i] == ""){
//////
DataModule2->ADOQuery1->SQL->Clear();
if(Form8->Hint == "0") DataModule2->ADOQuery1->SQL->Add("INSERT INTO Приход (Номер, КодТовара, Количество)");
if(Form8->Hint == "1") DataModule2->ADOQuery1->SQL->Add("INSERT INTO Расход (Номер, КодТовара, Количество)");
if(Form8->Hint == "2") DataModule2->ADOQuery1->SQL->Add("INSERT INTO СчетДет (Номер, КодТовара, Количество)");
DataModule2->ADOQuery1->SQL->Add("VALUES ("+Form8->Caption+','+StringGrid2->Cells[0][i]+','+StringGrid2->Cells[3][i]+")");
DataModule2->ADOQuery1->ExecSQL();
}
ShowMessage("ДАННЫЕ ИЗМЕНЕНЫ!");
}
Close();
}
Для печати формы документа служит кнопка «Печать». При ее нажатии активируется процедура выгрузки данных формы в соответствующий шаблон MS Excel, для последующей печати или сохранения.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 |


