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

📄 pfm_query.pas

📁 POS收银系统
💻 PAS
字号:
unit pfm_query;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Buttons, pvar_lib,db,DBTables, ExtCtrls;

type
  Tfm_query = class(TForm)
    LView1: TListView;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ComBox1: TComboBox;
    ComBox2: TComboBox;
    ComBox3: TComboBox;
    ComBox4: TComboBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComBox1Change(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComBox3KeyPress(Sender: TObject; var Key: Char);
   private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fm_query: Tfm_query;

implementation

{$R *.DFM}

procedure Tfm_query.FormCreate(Sender: TObject);
var
newCol:TListColumn;
i:integer;
begin
        Lview1.ViewStyle:=vsReport;
        newCol:=LView1.Columns.add;
        newCol.caption:='字段';
        newCol.width:=120;
        newCol:=LView1.Columns.add;
        newCol.caption:='操作符';
        newCol.width:=80;
        newCol:=LView1.Columns.add;
        newCol.caption:='条件';
        newCol.width:=200;
        newCol:=LView1.Columns.add;
        newCol.caption:='关系';
        newcol.width:=lView1.Width-lview1.Columns[1].width-lview1.columns[2].width
        -lview1.columns[0].width;
//初始化查询字段下拉表
        for i:=0 to mFieldNum do
                combox1.items.Add(mFieldcap[i]);
end;

procedure Tfm_query.ComBox1Change(Sender: TObject);
var
mI:integer;
J:integer;
begin
//根据查询的字段类型初始化查询操作符
    combox2.Items.Clear;
    mI:=comBox1.ItemIndex;
    case mFieldType[mI] of

        ftDateTime,ftsmallint,ftInteger,ftFloat:
                for j:=0 to 5 do
                begin
                    combox2.items.add(DTOp[J]);
                end;
    else
        for j:=0 to 7 do
            begin
                combox2.items.add(strOp[J]);
            end;
    end;
end;

procedure Tfm_query.BitBtn1Click(Sender: TObject);
var
ListItem:TListItem;
begin
//加入查询条件
        if combox1.text='' then
        begin
                showmessage('查询字段不能为空!');
                exit;
        end;
        if combox2.text='' then
        begin
                showmessage('操作符不能为空!');
                exit;
        end;
        if trim(combox3.text)='' then
        begin
                showmessage('查询条件不能为空!');
                exit;
        end;
        ListItem:=LView1.items.add;
        ListItem.Caption:=mFieldcap[combox1.Itemindex];
        listitem.data:=@(mFieldname[combox1.Itemindex]);
        //showmessage(string(listitem.data^));
        LIstItem.SubItems.add(combox2.text);
        if pos('LIKE',combox2.text)>0 then
        begin
                LIstItem.SubItems.add('''%' + combox3.text + '%''');
        end
        else
        begin      //根据类型设置查询条件。如果是字符串或日期类型,需加单引号
              case mFieldType[combox1.Itemindex] of
                  ftsmallint,ftInteger,ftFloat:
                  begin
                        LIstItem.SubItems.add(combox3.text);
                  end;
              else
                  begin
                        LIstItem.SubItems.add(''''+combox3.text+'''');
                  end;
              end;

        end;
        LIstItem.SubItems.add(combox4.text);


end;

procedure Tfm_query.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
    i:=lview1.Selected.Index;
    lview1.Items.Delete(i);
end;

procedure Tfm_query.BitBtn3Click(Sender: TObject);
begin
        if application.MessageBox('是否要全部删除查询条件?','注意',MB_YESNO)=IDYES then
                lview1.Items.Clear;

end;

procedure Tfm_query.BitBtn4Click(Sender: TObject);
var
mysql:string;
i:integer;
begin
    if lview1.Items.count=0 then
    begin
        showmessage('先加入你的查询条件');
        exit;
    end;


    for i:=0 to lview1.Items.Count-2 do
    begin
        mysql:=mysql+ string((lview1.Items.Item[i].data)^);
        // mysql:=mysql+lview1.Items.item[i].subitems[0].text;
        mysql:=mysql+' '+lview1.Items.item[i].SubItems.Strings[0];
        mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[1];
        if trim(lview1.Items.item[i].SubItems.strings[2])='' then
        begin
                  mysql:=mysql+' ' + 'and' +' ';
        end
        else
             mysql:=mysql+' ' + lview1.Items.item[i].SubItems.strings[2]+' ';

    end;
    i:=lview1.Items.count-1;
    mysql:=mysql+ string((lview1.Items.Item[i].data)^);
    mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[0];
    mysql:=mysql+' '+lview1.Items.item[i].SubItems.strings[1];
    sQuerySql:=mysql;
    //showmessage(mysql);
    ModalResult:=mrOK;
end;

procedure Tfm_query.BitBtn5Click(Sender: TObject);
begin
        sQuerySql:='';
        ModalResult:=mrCancel;
end;

procedure Tfm_query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    action:=cafree;
end;

procedure Tfm_query.ComBox3KeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then
    begin
        BitBtn1.Click;
    end;
        
end;

end.

⌨️ 快捷键说明

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