📄 carter.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 + -