📄 queryarticle.pas
字号:
unit queryArticle;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, ComCtrls, DB,
DBTables,IdGlobal;
type
TfrmQueryArticle = class(TForm)
GroupBox1: TGroupBox;
Label2: TLabel;
Label1: TLabel;
Label9: TLabel;
Label12: TLabel;
Label4: TLabel;
goodsType: TEdit;
goodsName: TEdit;
birthplace: TEdit;
btnOk: TButton;
btnClear: TButton;
goodsId: TEdit;
GroupBox4: TGroupBox;
DBNavigator1: TDBNavigator;
GroupBox8: TGroupBox;
change: TButton;
delete: TButton;
GroupBox6: TGroupBox;
asc: TRadioButton;
desc: TRadioButton;
GroupBox5: TGroupBox;
id: TRadioButton;
name: TRadioButton;
price: TRadioButton;
stock: TRadioButton;
GroupBox7: TGroupBox;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
lowPrice: TEdit;
highPrice: TEdit;
lowStock: TEdit;
highStock: TEdit;
Label5: TLabel;
Label6: TLabel;
sqlgoods: TQuery;
DataSource1: TDataSource;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure ascClick(Sender: TObject);
procedure descClick(Sender: TObject);
procedure idClick(Sender: TObject);
procedure nameClick(Sender: TObject);
procedure priceClick(Sender: TObject);
procedure stockClick(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure changeClick(Sender: TObject);
procedure deleteClick(Sender: TObject);
private
{ Private declarations }
s:string;
function isInteger(s:string):boolean;
function isMoney(s:string):boolean;
public
{ Public declarations }
end;
var
frmQueryArticle: TfrmQueryArticle;
implementation
uses changeGoods, deleteGoods;
{$R *.dfm}
procedure TfrmQueryArticle.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
self.free;
end;
procedure TfrmQueryArticle.FormCreate(Sender: TObject);
begin
s:='select * from goods ';
with sqlgoods do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
activeControl:=goodsId;
lowPrice.Text:='0';
highPrice.Text:='999999';
lowStock.Text:='0';
highStock.Text:='999999';
end;
procedure TfrmQueryArticle.btnClearClick(Sender: TObject);
begin
goodsId.Text:='';
goodsName.Text:='';
activeControl:=goodsId;
goodsType.Text:='';
lowPrice.Text:='0';
highPrice.Text:='999999';
lowStock.Text:='0';
highStock.Text:='999999';
birthPlace.Text:='';
end;
procedure TfrmQueryArticle.ascClick(Sender: TObject);
var
col:string;
begin
if id.Checked then col:='商品编号'
else if name.Checked then col:='商品名称'
else if price.Checked then col:='单价'
else if stock.Checked then col:='存货';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+'order by '+col+' asc');
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.descClick(Sender: TObject);
var
col:string;
begin
if id.Checked then col:='商品编号'
else if name.Checked then col:='商品名称'
else if price.Checked then col:='单价'
else if stock.Checked then col:='存货';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+'order by '+col+' desc');
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.idClick(Sender: TObject);
var
t:string;
begin
if asc.Checked then t:='asc'
else if desc.Checked then t:='desc';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+' order by 商品编号 '+t);
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.nameClick(Sender: TObject);
var
t:string;
begin
if asc.Checked then t:='asc'
else if desc.Checked then t:='desc';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+' order by 商品名称 '+t);
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.priceClick(Sender: TObject);
var
t:string;
begin
if asc.Checked then t:='asc'
else if desc.Checked then t:='desc';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+' order by 单价 '+t);
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.stockClick(Sender: TObject);
var
t:string;
begin
if asc.Checked then t:='asc'
else if desc.Checked then t:='desc';
with sqlgoods do
begin
Close;
SQL.Clear;
SQL.Add(s+' order by 存货 '+t);
try
Open;
except
ExecSQL;
end;
end;
end;
procedure TfrmQueryArticle.btnOkClick(Sender: TObject);
var
i:integer;
low,high:string;
begin
s:='select * from goods ';
i:=0;
{处理商品编号}
if isInteger(goodsId.Text) then
begin
s:=s+'where 商品编号='+goodsId.Text;
i:=i+1;
end;
{处理商品名称}
if goodsName.Text<>'' then
begin
if i=0 then
s:=s+'where 商品名称='''+goodsName.Text+''''
else
s:=s+' and 商品名称='''+goodsName.Text+'''';
i:=i+1;
end;
{处理类型}
if goodsType.Text<>'' then
begin
if i=0 then
s:=s+'where 商品类型='''+goodsType.Text+''''
else
s:=s+' and 商品类型='''+goodsType.Text+'''';
i:=i+1;
end;
{处理单价}
if i=0 then
s:=s+'where '
else
s:=s+' and ';
if isMoney(lowPrice.Text) then
s:=s+'单价>='+lowPrice.Text
else if lowPrice.Text='' then
s:=s+'单价>=0'
else
begin
showMessage('单价输入错误!');
activecontrol:=lowPrice;
exit;
end;
if isMoney(highPrice.Text) then
s:=s+' and 单价<='+highPrice.Text
else if highPrice.Text='' then
s:=s+' and 单价<=999999'
else
begin
showMessage('单价输入错误!');
activecontrol:=highPrice;
exit;
end;
{处理存货}
if isInteger(lowstock.Text) then
s:=s+' and 存货>='+lowstock.Text
else if lowStock.Text='' then
s:=s+' and 存货>=0'
else
begin
showMessage('存货输入错误!');
activecontrol:=lowStock;
exit;
end;
if isInteger(highstock.Text) then
s:=s+' and 存货<='+highstock.Text
else if highStock.Text='' then
s:=s+' and 存货<=999999'
else
begin
showMessage('存货输入错误!');
activecontrol:=highStock;
exit;
end;
{处理产地}
if birthplace.Text<>'' then
s:=s+' and 产地='''+birthplace.Text+'''';
{查询商品资料}
with sqlgoods do
begin
close;
sql.Clear;
sql.Add(s);
try
open;
except
execsql;
end;
end;
end;
function TfrmQueryArticle.isInteger(s: string): boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isNumeric(s[i])=false) then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
function TfrmQueryArticle.isMoney(s: string): boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isNumeric(s[i])=false) and (s[i]<>'.')then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
procedure TfrmQueryArticle.changeClick(Sender: TObject);
begin
frmChangeGoods:=TFrmChangeGoods.create(self);
frmChangeGoods.ShowModal;
end;
procedure TfrmQueryArticle.deleteClick(Sender: TObject);
begin
frmDeleteGoods:=TfrmDeleteGoods.create(self);
frmDeleteGoods.ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -