Загрузка данных
// module 4 (form4 cpp)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit5.h"
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmOrders *frmOrders;
void TfrmOrders::LoadOrders()
{
qOrders->Close();
qOrders->SQL->Text = "SELECT o.Order_ID, o.OrderNumber, o.OrderDate, o.DeliveryDate, o.PickupCode, "
"s.StatusName, "
"p.City + ', ' + p.Street + ', ' + p.HouseNumber AS Address "
"FROM Orders o "
"JOIN OrderStatuses s ON o.Status_ID = s.Status_ID "
"JOIN PickupPoints p ON o.PickupPoint_ID = p.PickupPoint_ID";
qOrders->Open();
}
//---------------------------------------------------------------------------
__fastcall TfrmOrders::TfrmOrders(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::FormShow(TObject *Sender)
{
btnAddOrder->Visible = (userRole == 1);
btnEditOrder->Visible = (userRole == 1);
btnDeleteOrder->Visible = (userRole == 1);
LoadOrders();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::FormClose(TObject *Sender, TCloseAction &Action)
{
qOrders->Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::btnBackClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::btnAddOrderClick(TObject *Sender)
{
frmOrderEdit = new TfrmOrderEdit(NULL);
frmOrderEdit->isEdit = false;
frmOrderEdit->userId = frmMain->userId;
frmOrderEdit->ShowModal();
delete frmOrderEdit;
LoadOrders();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::btnEditOrderClick(TObject *Sender)
{
if (userRole != 1) {
ShowMessage("Доступ запрещён!");
return;
}
if (qOrders->IsEmpty()) {
ShowMessage("Нет заказа для редактирования!");
return;
}
frmOrderEdit = new TfrmOrderEdit(NULL);
frmOrderEdit->isEdit = true;
frmOrderEdit->editId = qOrders->FieldByName("Order_ID")->AsInteger;
frmOrderEdit->userId = frmMain->userId;
frmOrderEdit->ShowModal();
delete frmOrderEdit;
LoadOrders();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrders::btnDeleteOrderClick(TObject *Sender)
{
if (qOrders->IsEmpty()) return;
int id = qOrders->FieldByName("Order_ID")->AsInteger;
if (MessageDlg("Удалить заказ?", mtWarning, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
{
TADOQuery *q = new TADOQuery(NULL);
q->Connection = frmLogin->ADOConnection1;
q->SQL->Text = "DELETE FROM OrderItems WHERE Order_ID = " + IntToStr(id);
q->ExecSQL();
q->SQL->Text = "DELETE FROM Orders WHERE Order_ID = " + IntToStr(id);
q->ExecSQL();
delete q;
LoadOrders();
}
}
//---------------------------------------------------------------------------
// unit4.h
//---------------------------------------------------------------------------
#ifndef Unit4H
#define Unit4H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Data.DB.hpp>
#include <Data.Win.ADODB.hpp>
#include <Vcl.DBGrids.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Grids.hpp>
//---------------------------------------------------------------------------
class TfrmOrders : public TForm
{
__published: // IDE-managed Components
TPanel *pnlTop;
TADOQuery *qOrders;
TDataSource *dsOrders;
TDBGrid *dbgOrders;
TButton *btnBack;
TButton *btnAddOrder;
TButton *btnEditOrder;
TButton *btnDeleteOrder;
void __fastcall FormShow(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall btnBackClick(TObject *Sender);
void __fastcall btnAddOrderClick(TObject *Sender);
void __fastcall btnEditOrderClick(TObject *Sender);
void __fastcall btnDeleteOrderClick(TObject *Sender);
private: // User declarations
public: // User declarations
int userRole;
void LoadOrders();
__fastcall TfrmOrders(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmOrders *frmOrders;
//---------------------------------------------------------------------------
#endif
// МОДУЛЬ 4 ФОРМА 5 cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmOrderEdit *frmOrderEdit;
//---------------------------------------------------------------------------
__fastcall TfrmOrderEdit::TfrmOrderEdit(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrderEdit::btnSaveClick(TObject *Sender)
{
if (edtId->Text == "")
{
ShowMessage("Введите ID!");
return;
}
if (edtArticle->Text == "")
{
ShowMessage("Введите артикул!");
return;
}
int orderId = edtId->Text.ToInt();
int statusId = cmbStatus->ItemIndex + 1;
// Получаем PickupPoint_ID
int pointId = 1;
TADOQuery *q = new TADOQuery(NULL);
q->Connection = frmLogin->ADOConnection1;
q->SQL->Text =
"SELECT PickupPoint_ID FROM PickupPoints "
"WHERE City + ', ' + Street + ', ' + HouseNumber = '" +
cmbAddress->Text + "'";
q->Open();
if (!q->IsEmpty())
pointId = q->Fields->Fields[0]->AsInteger;
q->Close();
if (isEdit)
{
q->SQL->Text =
"UPDATE Orders SET "
"OrderNumber = '" + edtArticle->Text +
"', OrderDate = '" + edtOrderDate->Text +
"', DeliveryDate = '" + edtDeliveryDate->Text +
"', PickupCode = '" + edtPickupCode->Text +
"', Status_ID = " + IntToStr(statusId) +
", PickupPoint_ID = " + IntToStr(pointId) +
" WHERE Order_ID = " + IntToStr(editId);
}
else
{
q->SQL->Text =
"INSERT INTO Orders "
"(Order_ID, OrderNumber, OrderDate, DeliveryDate, PickupCode, Status_ID, PickupPoint_ID, User_ID) "
"VALUES (" +
IntToStr(orderId) + ", '" +
edtArticle->Text + "', '" +
edtOrderDate->Text + "', '" +
edtDeliveryDate->Text + "', '" +
edtPickupCode->Text + "', " +
IntToStr(statusId) + ", " +
IntToStr(pointId) + ", " +
IntToStr(userId) + ")";
}
q->ExecSQL();
delete q;
ShowMessage("Данные сохранены!");
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrderEdit::FormShow(TObject *Sender)
{
cmbAddress->Items->Clear();
TADOQuery *q = new TADOQuery(NULL);
q->Connection = frmLogin->ADOConnection1;
q->SQL->Text = "SELECT PickupPoint_ID, City + ', ' + Street + ', ' + HouseNumber AS FullAddress FROM PickupPoints";
q->Open();
while (!q->Eof)
{
cmbAddress->Items->Add(q->Fields->Fields[1]->AsString);
q->Next();
}
q->Close();
delete q;
cmbStatus->ItemIndex = 0;
if (cmbAddress->Items->Count > 0) cmbAddress->ItemIndex = 0;
if (isEdit)
{
Caption = "Редактирование заказа";
q = new TADOQuery(NULL);
q->Connection = frmLogin->ADOConnection1;
q->SQL->Text = "SELECT * FROM Orders WHERE Order_ID = " + IntToStr(editId);
q->Open();
edtArticle->Text = q->FieldByName("OrderNumber")->AsString;
edtOrderDate->Text = q->FieldByName("OrderDate")->AsString;
edtDeliveryDate->Text = q->FieldByName("DeliveryDate")->AsString;
edtPickupCode->Text = q->FieldByName("PickupCode")->AsString;
int statusId = q->FieldByName("Status_ID")->AsInteger;
int pointId = q->FieldByName("PickupPoint_ID")->AsInteger;
q->Close();
delete q;
cmbStatus->ItemIndex = statusId - 1;
q = new TADOQuery(NULL);
q->Connection = frmLogin->ADOConnection1;
q->SQL->Text = "SELECT City + ', ' + Street + ', ' + HouseNumber AS FullAddress FROM PickupPoints WHERE PickupPoint_ID = " + IntToStr(pointId);
q->Open();
if (!q->IsEmpty())
cmbAddress->ItemIndex = cmbAddress->Items->IndexOf(q->Fields->Fields[0]->AsString);
q->Close(); delete q;
}
else Caption = "Добавление заказа";
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrderEdit::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
// ФОРМА 5 h
//---------------------------------------------------------------------------
#ifndef Unit5H
#define Unit5H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Data.DB.hpp>
#include <Data.Win.ADODB.hpp>
//---------------------------------------------------------------------------
class TfrmOrderEdit : public TForm
{
__published: // IDE-managed Components
TEdit *edtArticle;
TEdit *edtOrderDate;
TComboBox *cmbStatus;
TComboBox *cmbAddress;
TEdit *edtDeliveryDate;
TEdit *edtPickupCode;
TButton *btnSave;
TADOQuery *qOrderEdit;
TButton *btnCancel;
TEdit *edtId;
void __fastcall btnSaveClick(TObject *Sender);
void __fastcall FormShow(TObject *Sender);
void __fastcall btnCancelClick(TObject *Sender);
private: // User declarations
public: // User declarations
bool isEdit;
int editId;
int userId;
__fastcall TfrmOrderEdit(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmOrderEdit *frmOrderEdit;
//---------------------------------------------------------------------------
#endif