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

📄 archives_query.pas

📁 delphi7.0+ACCESS,是以前做过的一个档案资料管理信息系统
💻 PAS
字号:
unit Archives_Query;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Mask, ImgList;

type
  TQueryFrm = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    CBE_Field: TComboBoxEx;
    ME_Data: TMaskEdit;
    RG_Cond: TRadioGroup;
    LV_SQL: TListView;
    BB_Add: TBitBtn;
    BB_Delete: TBitBtn;
    BB_Query: TBitBtn;
    BB_Close: TBitBtn;
    BB_Database: TBitBtn;
    CB_Cond: TComboBox;
    ImageList1: TImageList;
    SButton1: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure BB_AddClick(Sender: TObject);
    procedure BB_DeleteClick(Sender: TObject);
    procedure BB_QueryClick(Sender: TObject);
    procedure BB_CloseClick(Sender: TObject);
    procedure BB_DatabaseClick(Sender: TObject);
    procedure SButton1Click(Sender: TObject);
    procedure CBE_FieldChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  QueryFrm: TQueryFrm;

implementation
uses    DataModule,MonthCalendar;   //引用数据模块、日期选择窗体项目
{$R *.dfm}

procedure TQueryFrm.FormCreate(Sender: TObject);
begin  {*****数据记录查询窗体创建事件*****}
    LV_SQL.Items.Clear;  //清除ListView对象所有列表项
end;

procedure TQueryFrm.BB_AddClick(Sender: TObject);
var    {*****增加按钮单击事件*****}
    SQL:TListItem;
begin
    if (CBE_Field.Text='')or(CB_Cond.Text='')or(ME_Data.Text='')  then
      begin
      ShowMessage('查找字段、查找条件或查找值不能为空');
      ME_Data.SetFocus;  //焦点在查找值输入框
      exit;              //退出此过程
      end;
    SQL:=LV_SQL.Items.Add;     //增加一条查找字段、查找条件和查找值到ListView内
    if (LV_SQL.Items.Count>1) then
      begin
      if (RG_Cond.ItemIndex=1) then
        SQL.Caption := '或者'      //增加查找逻辑关系值
      else
        SQL.Caption := '并且';
      end;
    SQL.SubItems.Add(CBE_Field.Text); //追加查找字段
    SQL.SubItems.Add(CB_Cond.Text);   //追加查找条件
    SQL.SubItems.Add(ME_Data.Text);   //追加查找值
end;

procedure TQueryFrm.BB_DeleteClick(Sender: TObject);
var    {*****删除按钮单击事件*****}
    No:integer;
begin
    No := LV_SQL.ItemIndex;    //获得用户选择ListView的记录值
    LV_SQL.Items.Delete(No);   //删除用户选择ListView记录
end;

procedure TQueryFrm.BB_QueryClick(Sender: TObject);
var
    No,i:integer;
    str,buf1,buf2:AnsiString;
begin
   {*****查找按钮单击事件*****}
    if (LV_SQL.Items.Count=0) then
      begin
      ShowMessage('你还没有选择数据记录查找条件,请选择');
      ME_Data.SetFocus;  //焦点在查找值输入框
      exit;
      end;
    DM.AQ_Manage.Close;  //关闭数据集
    DM.AQ_Manage.SQL.Clear;   //清除SQL语句
    No:=LV_SQL.Items.Count; //获得当前ListView对象中的记录条数
    for i:=0 to No-1 do         //以下所有语句都用来进行转换用户选择查找条件为SQL语句
      begin
      if (i>=1)then                    //第二条记录开始需要添加查找逻辑
        begin
        buf1 := LV_SQL.Items.Item[i].Caption;  //通过判断添加对应的逻辑条件
        if (buf1 = '并且') then
          str:=str+' AND '
        else
          str:=str+' OR ';
        end;
      buf1:=LV_SQL.Items.Item[i].SubItems.Strings[0];  //通过查找字段判断添加对应SQL语句
      if (buf1='档案编号') then
        str:=str+'Content_ID'
        else if (buf1 = '档案名称') then
          str:=str+'Content_Name'
          else if (buf1 = '档案柜号') then
            str:=str+'Content_Tank'
            else if (buf1 = '档案人姓名') then
              str:=str+'Content_Person'
              else if (buf1 = '建档日期') then
                str:=str+'Content_STime';
      buf2:=LV_SQL.Items.Item[i].SubItems.Strings[1];  //通过查找条件判断添加对应SQL语句
      if (buf2='等于') then
        str:=str+'='
        else if (buf2 = '不等于') then
          str:=str+'<>'
          else if (buf2 = '大于等于') then
            str:=str+'>='
            else if (buf2 = '小于等于') then
              str:=str+'<=';
      buf2:=LV_SQL.Items.Item[i].SubItems.Strings[2];  //通过查找值判断添加对应SQL语句
      if(buf1='档案编号') then            //整数类型字段
        str:=str+buf2
        else if (buf1 = '档案名称') then    //字符串类型字段
          str:=str+''''+buf2+''''         //字符串字段两边需要加上'标志
          else if (buf1 = '档案柜号') then  //整数类型字段
            str:=str+buf2
            else if (buf1 = '档案人姓名') then //字符串类型字段
              str:=str+''''+buf2+''''        //字符串字段两边需要加上'标志
              else if (buf1 = '建档日期') then //日期类型字段
                str:=str+''''+buf2+'''';     //日期字段两边也需要加上'标志
      end;
    with DM.AQ_Manage do  //设置默认前缀为DM.Manage
      begin
      SQL.Add('SELECT * FROM Archives_Content WHERE ');  //添加查询语句
      SQL.Add(str); //添加查询条件语句
      Open; //执行SQL语句,打开数据集
      end;
    QueryFrm.Close;        //关闭数据记录查询窗口
end;

procedure TQueryFrm.BB_CloseClick(Sender: TObject);
begin  {*****关闭按钮单击事件*****}
    QueryFrm.Close;        //关闭数据记录查询窗口
end;

procedure TQueryFrm.BB_DatabaseClick(Sender: TObject);
begin  {*****全部数据按钮单击事件*****}
    with DM.AQ_Manage do
      begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM Archives_Content');
      Open;
      end;
    QueryFrm.Close;
end;

procedure TQueryFrm.SButton1Click(Sender: TObject);
begin  {*****建档日期选择按钮SButton1单击事件*****}
    DateFrm.Left := QueryFrm.Left+SButton1.Left; //控件日期选择窗口显示位置
    DateFrm.Top := QueryFrm.Top+SButton1.Top;
    DateFrm.ShowModal;   //弹出日期选择窗口
    if (DateFrm.ModalResult = mrOk) then  //用户确定选择的日期
      ME_Data.Text := DateToStr(DateFrm.MC_Date.Date); //选择的日期赋字段值字段
end;

procedure TQueryFrm.CBE_FieldChange(Sender: TObject);
begin  {*****查找字段ComboBoxEx对象OnChange事件*****}
    if CBE_Field.Text='建档日期' then   //查找字段是建档日期字段时出现选择日期按钮
      SButton1.Visible := true
    else
      SButton1.Visible := false;
end;

end.

⌨️ 快捷键说明

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