GEN_Q.PAS
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:6k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit Gen_Q;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, DB, DBTables, StdCtrls, Buttons, ExtCtrls, ComCtrls, DBClient;
  6. type
  7.   TF_Query = class(TForm)
  8.     StatusBar1: TStatusBar;
  9.     Panel2: TPanel;
  10.     btn_cs: TSpeedButton;
  11.     btn_bq: TSpeedButton;
  12.     btn_hz: TSpeedButton;
  13.     btn_qktj: TSpeedButton;
  14.     btn_jgxs: TSpeedButton;
  15.     btn_fq: TSpeedButton;
  16.     Panel1: TPanel;
  17.     Label1: TLabel;
  18.     Label2: TLabel;
  19.     Label3: TLabel;
  20.     Label4: TLabel;
  21.     btn_ListAll: TSpeedButton;
  22.     Cmb_zdm: TComboBox;
  23.     Cmb_czf: TComboBox;
  24.     Cmb_zdz: TComboBox;
  25.     Memo1: TMemo;
  26.     procedure btn_csClick(Sender: TObject);
  27.     procedure btn_bqClick(Sender: TObject);
  28.     procedure btn_hzClick(Sender: TObject);
  29.     procedure btn_qktjClick(Sender: TObject);
  30.     procedure btn_jgxsClick(Sender: TObject);
  31.     procedure btn_fqClick(Sender: TObject);
  32.     procedure btn_ListAllClick(Sender: TObject);
  33.     procedure btn_valid;
  34.     procedure Cmb_zdmChange(Sender: TObject);
  35.     procedure FormActivate(Sender: TObject);
  36.     procedure FormCreate(Sender: TObject);
  37.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  38.   private
  39.     { Private declarations }
  40.   public
  41.     AppServName: TCustomRemoteServer; //应用服务器连接的名字
  42.     ProviderName: string; //应用服务器数据提供的接口
  43.     TableName: string; //查询的数据表名
  44.     fields: TStrings; //查询的字段列表
  45.     fieldsAlias: TStrings; //查询的字段列表相对应的别名
  46.     Conf: boolean; //判断是否按下确认按钮,还是放弃
  47.     filtervalue: string; //过滤的条件值
  48.     { Public declarations }
  49.   end;
  50. var
  51.   F_Query: TF_Query;
  52. implementation
  53. {$R *.dfm}
  54. //用于互置按钮的有效性
  55. procedure TF_Query.btn_valid;
  56. begin
  57.   btn_cs.enabled := not btn_cs.enabled;
  58.   btn_bq.enabled := not btn_bq.enabled;
  59.   btn_hz.enabled := not btn_hz.enabled;
  60.   btn_qktj.enabled := not btn_qktj.enabled;
  61.   btn_jgxs.enabled := not btn_jgxs.enabled;
  62. end;
  63. //当窗体创建时,初始化相关资源
  64. procedure TF_Query.FormCreate(Sender: TObject);
  65. begin
  66.   fields := Tstringlist.Create;
  67.   fieldsAlias := TStringList.Create;
  68.   Conf := False;
  69.   //向操作符下拉框添加操作符
  70.   cmb_czf.items.Clear;
  71.   cmb_czf.Items.Add('=');
  72.   cmb_czf.Items.Add('>');
  73.   cmb_czf.Items.Add('>=');
  74.   cmb_czf.Items.Add('<');
  75.   cmb_czf.Items.Add('<=');
  76.   cmb_czf.Items.Add('<>');
  77.   cmb_czf.Items.Add('like');
  78. end;
  79. //窗体关闭,释放相关资源
  80. procedure TF_Query.FormClose(Sender: TObject; var Action: TCloseAction);
  81. begin
  82.   fields.free;
  83.   fieldsAlias.free;
  84. end;
  85. //当窗体激活时,向字段名下列框添加值
  86. procedure TF_Query.FormActivate(Sender: TObject);
  87. begin
  88.   cmb_zdm.Items.AddStrings(fieldsAlias);
  89. end;
  90. //初始按钮点击过程
  91. procedure TF_Query.btn_csClick(Sender: TObject);
  92. var
  93.   xx101: string;
  94.   xx101Name: string;
  95.   xx201: string;
  96.   xx301: string;
  97. begin
  98.   if trim(cmb_zdm.Text) = '' then
  99.   begin
  100.     showmessage('字段名不能为空');
  101.     exit;
  102.   end;
  103.   if trim(cmb_czf.Text) = '' then
  104.   begin
  105.     showmessage('操作符不能为空');
  106.     exit;
  107.   end;
  108.   xx101 := Cmb_zdm.items.strings[cmb_zdm.itemindex];
  109.   xx101Name := fields[cmb_zdm.Itemindex];
  110.   xx201 := cmb_czf.items.strings[cmb_czf.itemindex];
  111.   if xx201 = 'like' then
  112.     xx301 := '%' + Cmb_zdz.text + '%'
  113.   else
  114.     xx301 := cmb_zdz.text;
  115.   filtervalue := xx101Name + ' ' + xx201 + ' ''' + xx301 + ''' ';
  116.   memo1.lines.add(xx101 + ' ' + xx201 + ' ' + cmb_zdz.text);
  117.   btn_valid;
  118. end;
  119. //并且按钮点击过程
  120. procedure TF_Query.btn_bqClick(Sender: TObject);
  121. var
  122.   xx102: string;
  123.   xx102Name: string;
  124.   xx202: string;
  125.   xx302: string;
  126. begin
  127.   if trim(cmb_zdm.Text) = '' then
  128.   begin
  129.     showmessage('字段名不能为空');
  130.     exit;
  131.   end;
  132.   if trim(cmb_czf.Text) = '' then
  133.   begin
  134.     showmessage('操作符不能为空');
  135.     exit;
  136.   end;
  137.   xx102 := cmb_zdm.items.strings[cmb_zdm.itemindex];
  138.   xx102Name := fields[cmb_zdm.itemindex];
  139.   xx202 := cmb_czf.items.strings[cmb_czf.itemindex];
  140.   if xx202 = 'like' then
  141.     xx302 := '%' + cmb_zdz.Text + '%'
  142.   else
  143.     xx302 := cmb_zdz.Text;
  144.   filtervalue := filtervalue + ' and ' + xx102Name + ' ' + xx202 + ' ''' + xx302 + ''' ';
  145.   memo1.lines.add('并且 ' + xx102 + ' ' + xx202 + ' ' + cmb_zdz.text);
  146. end;
  147. //或者按钮点击过程
  148. procedure TF_Query.btn_hzClick(Sender: TObject);
  149. var
  150.   xx103: string;
  151.   xx103Name: string;
  152.   xx203: string;
  153.   xx303: string;
  154. begin
  155.   if trim(cmb_zdm.Text) = '' then
  156.   begin
  157.     showmessage('字段名不能为空');
  158.     exit;
  159.   end;
  160.   if trim(cmb_czf.Text) = '' then
  161.   begin
  162.     showmessage('操作符不能为空');
  163.     exit;
  164.   end;
  165.   xx103 := cmb_zdm.items.strings[cmb_zdm.itemindex];
  166.   xx103Name := fields[cmb_zdm.itemindex];
  167.   xx203 := cmb_czf.items.strings[cmb_czf.itemindex];
  168.   if xx203 = 'like' then
  169.     xx303 := '%' + cmb_zdz.Text + '%'
  170.   else
  171.     xx303 := cmb_zdz.Text;
  172.   filtervalue := filtervalue + ' or ' + xx103Name + ' ' + xx203 + ' ''' + xx303 + ''' ';
  173.   memo1.lines.add('或者 ' + xx103 + ' ' + xx203 + ' ' + cmb_zdz.text);
  174. end;
  175. //清空条件按钮点击过程
  176. procedure TF_Query.btn_qktjClick(Sender: TObject);
  177. begin
  178.   memo1.lines.clear;
  179.   cmb_zdm.setfocus;
  180.   btn_valid;
  181. end;
  182. //结果显示按钮点击过程
  183. procedure TF_Query.btn_jgxsClick(Sender: TObject);
  184. begin
  185.   Conf := True;
  186.   Close;
  187. end;
  188. //放弃按钮点击过程
  189. procedure TF_Query.btn_fqClick(Sender: TObject);
  190. begin
  191.   Close;
  192. end;
  193. //根据字段名列表框列出数据库中存在的值
  194. procedure TF_Query.btn_ListAllClick(Sender: TObject);
  195. var
  196.   s_value, s_value1: string;
  197.   generalquery: TClientDataset;
  198. begin
  199.   cmb_zdz.items.clear;
  200.   if cmb_zdm.ItemIndex < 0 then
  201.     exit;
  202.   s_value := fields[cmb_zdm.itemindex];
  203.   generalquery := TClientDataset.Create(nil);
  204.   generalquery.ProviderName := ProviderName;
  205.   generalQuery.RemoteServer := TCustomRemoteServer(AppServName);
  206.   generalquery.close;
  207.   generalquery.CommandText := 'select distinct ' + s_value + ' from ' + tablename;
  208.   try
  209.     generalquery.open;
  210.   except
  211.     ShowMessage('列举出错');
  212.     exit;
  213.   end;
  214.   generalquery.First;
  215.   while not generalquery.eof do
  216.   begin
  217.     s_value1 := generalquery.fieldbyname(s_value).asstring;
  218.     cmb_zdz.Items.Add(s_value1);
  219.     generalquery.Next;
  220.   end;
  221.   generalquery.close;
  222.   generalquery.Free;
  223. end;
  224. //当字段名改变时,清空字段值下拉框
  225. procedure TF_Query.Cmb_zdmChange(Sender: TObject);
  226. begin
  227.   cmb_zdz.Items.Clear;
  228. end;
  229. end.