ufrm_sql.pas
来自「完整的进销存系统。 设计文件及完整的源代码。 Delphi6.0」· PAS 代码 · 共 523 行 · 第 1/2 页
PAS
523 行
// ****************************************
// * Program name: ufrm_sql *
// * AUTHOR : Guo xuliang *
// * Date : 2005/05/12 *
// * Purpose :公共查询条件处理程序 *
// ****************************************
unit ufrm_sql;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls, ComCtrls, Db, DBTables;
type
Tfrm_sql = class(TForm)
ed_show: TEdit;
Bevel1: TBevel;
Query1: TQuery;
listzd2: TListBox;
listcz2: TListBox;
RadioGroup1: TRadioGroup;
listtj2: TListBox;
date1: TDateTimePicker;
ed_value: TEdit;
Label1: TLabel;
cmd_del1: TBitBtn;
cmd_del2: TBitBtn;
cmd_qd: TBitBtn;
cmd_qx: TBitBtn;
Panel1: TPanel;
Label5: TLabel;
Edit5: TEdit;
cmd_sub: TSpeedButton;
Label4: TLabel;
ed_count: TEdit;
Label3: TLabel;
ed_start: TEdit;
Label2: TLabel;
listzd1: TListBox;
listzd3: TListBox;
listcz1: TListBox;
listtj1: TListBox;
procedure ed_startKeyPress(Sender: TObject; var Key: Char);
procedure ed_countKeyPress(Sender: TObject; var Key: Char);
procedure cmd_qxClick(Sender: TObject);
procedure listzd1Click(Sender: TObject);
procedure cmd_subClick(Sender: TObject);
procedure listcz1Click(Sender: TObject);
procedure date1Change(Sender: TObject);
procedure ed_valueKeyPress(Sender: TObject; var Key: Char);
procedure RadioGroup1Click(Sender: TObject);
procedure cmd_del1Click(Sender: TObject);
procedure cmd_del2Click(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure cmd_qdClick(Sender: TObject);
procedure ed_valueDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
sqlstr1:string;//The condition description
sqlstr2:string;//The condition.
procedure init(tablename1:string);
function checkvalue:boolean;
procedure addtj;
{ Public declarations }
end;
var
frm_sql: Tfrm_sql;
tbname:string;
sqltemp:string;
implementation
uses udm;
{$R *.DFM}
procedure Tfrm_sql.addtj;
var str1:string;
begin
if sqltemp='' then begin messagebox(frm_sql.handle,'請選擇查詢項目﹗','Information',mb_ok+mb_iconinformation); exit; end;
if ed_value.Text='' then
begin
ed_show.text:=ed_show.Text+'NULL';
if listcz2.Items[listcz1.ItemIndex]='=' then
begin
sqltemp:=copy(sqltemp,1,pos('=',sqltemp)-1);
sqltemp:=sqltemp+' is null ';
end;
if listcz2.Items[listcz1.ItemIndex]='<>' then
begin
sqltemp:=copy(sqltemp,1,pos('<>',sqltemp)-1);
sqltemp:=sqltemp+' is not null ';
end;
end
else
begin
ed_show.text:=ed_show.Text+ed_value.text;
if listzd3.Items[listzd1.ItemIndex]='C' then
//if listcz1.items[listcz1.ItemIndex]=' Matches ' then
// str1:='''*'+trim(ed_value.text)+'*'''
//else
str1:=''''+ed_value.text+''''
else if (listzd3.Items[listzd1.ItemIndex]='N') OR (listzd3.Items[listzd1.ItemIndex]='F') then
str1:=ed_value.text
else if listzd3.Items[listzd1.ItemIndex]='D' then
//str1:='#'+ed_value.text+'#';
//I WILL CHANGE FOR ORACLE DATABASE
str1:=''''+ed_value.text+'''';
//str1:=''''+copy(ed_value.text,1,4)+copy(ed_value.text,6,2)+copy(ed_value.text,9,2)+'''';//remove not for oracle
//str1:='TO_DATE('''+ed_value.text+''',''YYYY/MM/DD'')';
sqltemp:=sqltemp+str1;
end;
listtj1.Items.Add(inttostr(listtj1.items.count)+':'+ed_show.text);
listtj2.items.Add(sqltemp);
ed_show.Text:='';
sqltemp:='';
ed_value.text:='';
end;
function Tfrm_sql.checkvalue:boolean;
var chkdate:tdatetime;
chknum:real;
begin
result:=false;
if (listzd3.items[listzd1.ItemIndex]='N') OR
(listzd3.items[listzd1.ItemIndex]='F') then
begin
try
chknum:=StrToFloat(ed_value.text);
except
messagebox(frm_sql.handle,'Please input number','Information',mb_ok+mb_iconinformation);
exit;
end;
end;
if listzd3.Items[listzd1.ItemIndex]='D' then
begin
try
//chkdate:=strtodate(ed_value.text);//remove it if not use oracle
except
messagebox(frm_sql.handle,'Please input date','Information',mb_ok+mb_iconinformation);
exit;
end;
end;
result:=true;
end;
procedure Tfrm_sql.init(tablename1:string);
begin
query1.DatabaseName:=dm.connection.DatabaseName;
tbname:=tablename1;
listzd1.Items.Clear;
listzd2.Items.clear;
listzd3.Items.clear;
listcz1.Items.clear;
listcz2.items.Clear;
listtj1.Clear;
listtj2.Clear;
sqlstr1:='';
sqlstr2:='';
sqltemp:='';
with dm do
begin
pub2.close;
pub2.sql.Clear;
pub2.sql.add('SELECT * FROM CZ_FILE WHERE CZ01='''+tablename1+''''+
' AND CZ08=''Y'' ORDER BY CZ07');
pub2.open;
while not pub2.Eof do
begin
//if pub2.FieldByName('CZ08').asstring='N' then begin pub2.next; continue; end;
//if pub2.FieldByName('fdtype').asstring='軀憮' then begin pub2.next; continue; end;
listzd1.items.add(pub2.fieldbyname('CZ03').asstring);
listzd2.items.add(pub2.fieldbyname('CZ02').asstring);
listzd3.items.add(pub2.fieldbyname('CZ04').asstring);
pub2.next;
end;
listcz1.items.add(' = ');
listcz2.items.add('=');
listcz1.items.add(' > ');
listcz2.items.add('>');
listcz1.items.add(' < ');
listcz2.items.add('<');
listcz1.items.add(' >= ');
listcz2.items.add('>=');
listcz1.items.add(' = ');
listcz2.items.add('<=');
listcz1.items.add(' <> ');
listcz2.items.add('<>');
listcz1.items.add(' Matches ');
listcz2.items.add(' like ');
end;
end;
procedure Tfrm_sql.ed_startKeyPress(Sender: TObject; var Key: Char);
begin
if ord(key)=13 then ed_count.SetFocus;
if (ord(key)=8) or (ord(key)=13) then exit;
if not (key in ['0'..'9']) then key:=#0;
end;
procedure Tfrm_sql.ed_countKeyPress(Sender: TObject; var Key: Char);
begin
if (ord(key)=8) or (ord(key)=13) then exit;
if not (key in ['0'..'9']) then key:=#0;
end;
procedure Tfrm_sql.cmd_qxClick(Sender: TObject);
begin
close;
end;
procedure Tfrm_sql.listzd1Click(Sender: TObject);
begin
ed_value.text:='';
if listzd3.Items[listzd1.ItemIndex]='C' then
begin
ed_start.Text:='';
ed_count.Text:='';
ed_start.Enabled:=true;
ed_count.Enabled:=true;
cmd_sub.Enabled:=true;
end
else
begin
ed_start.Text:='';
ed_count.Text:='';
ed_start.enabled:=false;
ed_count.enabled:=false;
cmd_sub.enabled:=false;
end;
if listzd3.items[listzd1.itemindex]='D' then
date1.Visible:=true
else
date1.Visible:=false;
cmd_subclick(nil);
end;
procedure Tfrm_sql.cmd_subClick(Sender: TObject);
begin
if listzd1.Items.count<=0 then exit;
if listzd1.ItemIndex<0 then exit;
if listcz1.itemindex<0 then
begin
ed_show.Text:='';
sqltemp:='';
ed_show.text:=listzd1.items[listzd1.itemindex];
sqltemp:=listzd2.Items[listzd1.itemindex];
if (ed_start.Text<>'') and (ed_count.Text<>'') then
begin
ed_show.text:=' ('+ed_show.text+') From '+ed_start.Text+' intercept '+ed_count.Text+' byte';
//sqltemp:='substring(sqltemp,'+ed_start.Text+','+ed_count.text+')';
sqltemp:='substr(sqltemp,'+ed_start.Text+','+ed_count.text+')';
end;
end
else
begin
ed_show.Text:='';
sqltemp:='';
ed_show.text:=listzd1.items[listzd1.itemindex]+listcz1.Items[listcz1.itemindex];
sqltemp:=listzd2.Items[listzd1.itemindex]+listcz2.Items[listcz1.itemindex];
if (ed_start.Text<>'') and (ed_count.Text<>'') then
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?