📄 querysaleunit.pas
字号:
unit querysaleunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, ComCtrls, DB, ADODB;
type
Tfrm_querysale = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
articleId: TComboBox;
GroupBox2: TGroupBox;
Label3: TLabel;
lowTime: TDateTimePicker;
highTime: TDateTimePicker;
GroupBox3: TGroupBox;
Label4: TLabel;
lowMoney: TEdit;
highMoney: TEdit;
b_query: TButton;
b_clear: TButton;
articleName: TEdit;
GroupBox4: TGroupBox;
DBNavigator1: TDBNavigator;
GroupBox6: TGroupBox;
asc: TRadioButton;
desc: TRadioButton;
GroupBox7: TGroupBox;
DBGrid1: TDBGrid;
q_sale: TADOQuery;
t_article: TADOTable;
ds_sale: TDataSource;
procedure b_clearClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure b_queryClick(Sender: TObject);
procedure ascClick(Sender: TObject);
procedure articleIdChange(Sender: TObject);
private
{ Private declarations }
str:string;
function ismoney(s:string):boolean;
public
{ Public declarations }
end;
var
frm_querysale: Tfrm_querysale;
implementation
uses datamoduleunit;
{$R *.dfm}
function Tfrm_querysale.ismoney(s:string):boolean;
var i:integer;
begin
i:=1;
while i<length(s) do
begin
if (s[i]<>'.') and((ord(s[i])<48) or (ord(s[i])>57)) then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
procedure Tfrm_querysale.b_clearClick(Sender: TObject);
begin
articleid.ItemIndex:=0;
articlename.Clear;
lowtime.Date:=strtodate('1983-6-27');
hightime.Date:=now;
lowmoney.Text:='';
highmoney.Text:='';
if desc.Checked then desc.Checked:=false;
if asc.Checked then asc.Checked:=false;
end;
procedure Tfrm_querysale.FormCreate(Sender: TObject);
var i:integer;
begin
articleid.Items.Add('');
i:=1;
t_article.Open;
while i<=t_article.RecordCount do
begin
articleid.Items.Add(t_article.FieldValues['商品编号']);
t_article.Next;
i:=i+1;
end;
end;
procedure Tfrm_querysale.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
t_article.Close;
q_sale.Close;
end;
procedure Tfrm_querysale.FormShow(Sender: TObject);
begin
frm_querysale.b_clearClick(nil);
end;
procedure Tfrm_querysale.b_queryClick(Sender: TObject);
var s:string;
low,high:string;
begin
s:='select 商品编号,sum(金额) as 销售总金额 from mytransaction';
if articleid.Text<>'' then
s:=s+' where 商品编号='+articleid.Text;
if articleid.Text='' then s:=s+' where' else s:=s+' and';
s:=s+' 日期>='''+datetostr(lowtime.Date)+'''';
s:=s+' and 日期<='''+datetostr(hightime.Date)+'''';
s:=s+' group by 商品编号 having sum(金额)>=';
if lowmoney.Text=''
then s:=s+'0'
else if ismoney(lowmoney.Text)=true
then s:=s+lowmoney.Text
else begin
showmessage('你输入的销售金额错误,请重新输入');
activecontrol:=lowmoney;
exit;
end;
if highmoney.Text=''
then s:=s+' and sum(金额)<=999999'
else if ismoney(highmoney.Text)=true
then s:=s+' and sum(金额)<='+highmoney.Text
else begin
showmessage('你输入的销售金额错误,请重新输入');
activecontrol:=highmoney;
exit;
end;
q_sale.Close;
q_sale.SQL.Clear;
q_sale.SQL.Add(s);
try
q_sale.Open;
except
q_sale.ExecSQL;
end;
str:=s;
end;
procedure Tfrm_querysale.ascClick(Sender: TObject);
var s:string;
begin
s:=str;
if asc.Checked then s:=s+' order by 商品编号 asc' else s:=s+' order by 商品编号 desc';
q_sale.Close;
q_sale.SQL.Clear;
q_sale.SQL.Add(s);
try
q_sale.Open;
except
q_sale.ExecSQL;
end;
end;
procedure Tfrm_querysale.articleIdChange(Sender: TObject);
begin
t_article.Close;
if articleid.ItemIndex=0 then
begin
articlename.Text:='';
exit;
end
else t_article.Filter:='商品编号='+articleid.Text;
t_article.Filtered:=true;
t_article.Open;
if t_article.RecordCount=1
then articlename.Text:=t_article.FieldValues['商品姓名'];
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -