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

📄 queryarticle.pas

📁 餐饮管理源代码 使用BDE Administrator在本地机器上添加一个Paradox数据库别名命名为WorkData
💻 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 + -