⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carter.pas

📁 这是一个DELPHI7应用案例开发篇有配套程序种子光盘
💻 PAS
字号:
unit Carter;
{PUBDIST}

interface

uses
  IWAppForm, IWApplication, IWTypes, Classes, Controls, IWControl, IWGrids,
  IWDBGrids, DB, IWHTMLControls, IWCompLabel, IWCompButton, IWCompEdit,
  SysUtils, IWCompListbox, SQLExpr, Graphics, IWLayoutMgr,
  IWTemplateProcessorHTML;

type
  TfrmCarter = class(TIWAppForm)
    IWDBGrid1: TIWDBGrid;
    dsCarter: TDataSource;
    IWLabel1: TIWLabel;
    lkTotal: TIWLink;
    edQuantity: TIWEdit;
    btnUpdateCount: TIWButton;
    btnDelete: TIWButton;
    btnComplete: TIWButton;
    cbPayType: TIWComboBox;
    IWLabel2: TIWLabel;
    IWTemplateProcessorHTML1: TIWTemplateProcessorHTML;
    procedure IWAppFormCreate(Sender: TObject);
    procedure IWDBGrid1Columns1Click(ASender: TObject;
      const AValue: String);
    procedure lkTotalClick(Sender: TObject);
    procedure btnUpdateCountClick(Sender: TObject);
    procedure btnCompleteClick(Sender: TObject);
    procedure IWDBGrid1RenderCell(ACell: TIWGridCell; const ARow,
      AColumn: Integer);
    procedure btnDeleteClick(Sender: TObject);
  public
  private
    procedure Total;
    procedure ComitOrder;
  end;

implementation
{$R *.dfm}

uses
  ServerController, DatamoduleUnit, IWUnit1;

procedure TfrmCarter.IWAppFormCreate(Sender: TObject);
begin
    dsCarter.DataSet := DataModule1.cdsCarter;
    Total;
end;

procedure TfrmCarter.Total;
var
    i, n : Integer;
    sum : Real;
begin
    with DataModule1.cdsCarter do
    begin
        sum := 0.0;
        n := RecordCount;

        First;
        for i:=0 to n-1 do
        begin
            sum := sum + FieldByName('BookCount').AsInteger*
                FieldByName('SellPrice').AsFloat;
                
            Next;
        end;

        lkTotal.Caption := Format('%7.2f',[sum]);
    end;
end;

procedure TfrmCarter.IWDBGrid1Columns1Click(ASender: TObject;
  const AValue: String);
begin
    DataModule1.cdsCarter.Locate('BookSerial',AValue,[]);
    edQuantity.Text := DataModule1.cdsCarter.FieldByName('BookCount').AsString;
end;

procedure TfrmCarter.lkTotalClick(Sender: TObject);
begin
    Total;
end;

procedure TfrmCarter.btnUpdateCountClick(Sender: TObject);
var
    count : Integer;
begin
    try
        count := StrToInt(edQuantity.Text);
        if count<1 then
        begin
            WebApplication.ShowMessage('数量至少为1!');
            Exit;
        end;

        with DataModule1.cdsCarter do
        begin
            Edit;
            FieldByName('BookCount').AsInteger := count;
            Post;
        end;
    except
        on E:Exception do
        begin
            WebApplication.ShowMessage(E.Message);
        end
    end;

    Total;
end;

procedure TfrmCarter.btnCompleteClick(Sender: TObject);
begin
    try
        if DataModule1.cdsCarter.RecordCount>0 then
        begin
            ComitOrder;
            DataModule1.cdsCarter.EmptyDataSet;
        end
        else
        begin
            WebApplication.ShowMessage('购物车中没有书籍');
            Exit;
        end;
    except
        on E:Exception do
        begin
            WebApplication.ShowMessage(E.Message);
            Abort;
        end;
    end;

    TIWAppForm(WebApplication.ActiveForm).Release;
    TformMain.Create(WebApplication).Show;
end;

procedure TfrmCarter.ComitOrder;
var
    i,n:Integer;
    SQLs : array [0..5] of String;
    qrAddOrder : TSQLQuery;
    AOrderSerial:Integer;
begin
    SQLs[0] := 'LOCK TABLES tb_order1 WRITE, tb_order2 WRITE';
    SQLs[1] := 'INSERT INTO tb_order2 VALUES (NULL,'''+UserSession.UserName+
        ''','+IntToStr(cbPayType.ItemIndex)+','''+
        FormatDateTime('yyyy-mm-dd',Now)+''',0,NULL)';
    SQLs[2] := 'SELECT MAX(OrderSerial) from tb_order2';
    SQLs[3] := 'INSERT INTO tb_order1 VALUES ';
    SQLs[4] := '(%d,''%s'',%d,%s),';
    SQLs[5] := 'UNLOCK TABLES';

    qrAddOrder := TSQLQuery.Create(Self);
    qrAddOrder.SQLConnection := DataModule1.SQLConnection1;

    qrAddOrder.SQL.Text := SQLs[0];
    qrAddOrder.ExecSQL(True);
    qrAddOrder.SQL.Text := SQLs[1];
    qrAddOrder.ExecSQL(True);

    qrAddOrder.SQL.Text := SQLs[2];
    qrAddOrder.Open;
    AOrderSerial := qrAddOrder.Fields[0].AsInteger;
    qrAddOrder.Close;

    with DataModule1.cdsCarter do
    begin
        n := RecordCount;
        First;
        for i:= 0 to n-1 do
        begin
            SQLs[3] := SQLs[3]+Format(SQLs[4],[AOrderSerial,
                FieldByName('BookSerial').AsString,
                FieldByName('BookCount').AsInteger,'100']);
                
            Next;
        end;
    end;

    SetLength(SQLs[3],Length(SQLs[3])-1);
    qrAddOrder.SQL.Text := SQLs[3];
    qrAddOrder.ExecSQL(True);
    qrAddOrder.SQL.Text := SQLs[5];
    qrAddOrder.ExecSQL(True);

    qrAddOrder.Free;
end;

procedure TfrmCarter.IWDBGrid1RenderCell(ACell: TIWGridCell; const ARow,
  AColumn: Integer);
begin
    if IWDBGrid1.RowIsCurrent then
        ACell.BGColor := clYellow;
end;

procedure TfrmCarter.btnDeleteClick(Sender: TObject);
begin
    if DataModule1.cdsCarter.RecNo >0 then
        DataModule1.cdsCarter.Delete;

    Total;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -