Загрузка данных


// 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