ufrm_sql.pas
来自「完整的进销存系统。 设计文件及完整的源代码。 Delphi6.0」· PAS 代码 · 共 523 行 · 第 1/2 页
PAS
523 行
begin
ed_show.text:=listzd1.items[listzd1.itemindex];
sqltemp:=listzd2.Items[listzd1.itemindex];
ed_show.text:=' ('+ed_show.text+') From '+ed_start.Text+' intercept '+ed_count.Text+' byte'+listcz1.items[listcz1.itemindex];
//sqltemp:='substring('+sqltemp+','+ed_start.Text+','+ed_count.text+')'+listcz2.items[listcz1.itemindex];
sqltemp:='substr('+sqltemp+','+ed_start.Text+','+ed_count.text+')'+listcz2.items[listcz1.itemindex];
end;
//showmessage(sqltemp);
end;
end;
procedure Tfrm_sql.listcz1Click(Sender: TObject);
begin
cmd_subClick(nil);
end;
procedure Tfrm_sql.date1Change(Sender: TObject);
//var l_year,l_month,l_day:string;
//l_montha:array[1..12] of string;
begin
{l_montha[1]:='Jan';
l_montha[2]:='Feb';
l_montha[3]:='Mar';
l_montha[4]:='Apr';
l_montha[5]:='May';
l_montha[6]:='Jun';
l_montha[7]:='Jul';
l_montha[8]:='Aug';
l_montha[9]:='Sep';
l_montha[10]:='Oct';
l_montha[11]:='Nov';
l_montha[12]:='Dec';
ed_value.text:='';
ed_value.text:=formatdatetime('dd/mm/yyyy',date1.date);
l_year:=copy(ed_value.text,7,4);
l_month:=copy(ed_value.text,4,2);
l_day:=copy(ed_value.text,1,2);
l_month:=l_montha[strtoint(l_month)];
ed_value.Text:=l_day+'/'+l_month+'/'+l_year;}
ed_value.Text:=datetostr(date1.date);
end;
procedure Tfrm_sql.ed_valueKeyPress(Sender: TObject; var Key: Char);
begin
//masked ' input
if key ='''' then key:=#0;
if ord(key)=13 then
begin
if listcz1.ItemIndex<0 then begin messagebox(frm_sql.handle,'Please select sign','Information',mb_ok+mb_iconinformation); exit; end;
if (ed_value.Text='') then
if (listcz2.Items[listcz1.ItemIndex]='=') or (listcz2.Items[listcz1.ItemIndex]='<>') then
begin addtj; exit; end
else
begin
messagebox(frm_sql.handle,'Please input value','Information',mb_ok+mb_iconinformation);
exit;
end;
if not checkvalue then
begin
ed_value.text:='';
exit;
end
else
addtj;
end;
end;
procedure Tfrm_sql.RadioGroup1Click(Sender: TObject);
begin
if radiogroup1.ItemIndex=2 then
begin
edit5.Color:=clwindow;
edit5.Enabled:=true;
end
else
begin
edit5.Color:=clbtnface;
edit5.Enabled:=false;
end;
end;
procedure Tfrm_sql.cmd_del1Click(Sender: TObject);
var i:integer;
begin
if listtj1.ItemIndex<0 then exit;
i:=listtj1.ItemIndex;
listtj1.Items.Delete(listtj1.ItemIndex);
listtj2.Items.Delete(i);
for i:=0 to listtj1.Items.count-1 do
begin
listtj1.Items[i]:=inttostr(i)+':'+copy(listtj1.items[i],pos(':',listtj1.items[i])+1,length(listtj1.items[i]));
end;
end;
procedure Tfrm_sql.cmd_del2Click(Sender: TObject);
begin
listtj1.Items.Clear;
listtj2.Items.clear;
end;
procedure Tfrm_sql.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if ord(key)=8 then exit;
if not (key in ['0'..'9','*','+','(',')']) then key:=#0;
end;
procedure Tfrm_sql.cmd_qdClick(Sender: TObject);
var i,num:integer;
str1,str2,str:string;
begin
sqlstr1:='';
sqlstr2:='';
//construct the sql statement
case radiogroup1.ItemIndex of
//and
1:begin
for i:=0 to listtj1.Items.count-1 do
begin
sqlstr1:=sqlstr1+' 或者 '+copy(listtj1.Items[i],pos(':',listtj1.items[i])+1,length(listtj1.items[i]));
sqlstr2:=sqlstr2+' OR '+listtj2.items[i];
end;
sqlstr1:=copy(sqlstr1,pos('或者',sqlstr1)+length('或者'),length(sqlstr1));
sqlstr2:=copy(sqlstr2,pos('OR',sqlstr2)+2,length(sqlstr2));
//showmessage(sqlstr1);
//showmessage(sqlstr2);
end;
//or
0:begin
for i:=0 to listtj1.items.count-1 do
begin
sqlstr1:=sqlstr1+' 並且 '+copy(listtj1.Items[i],pos(':',listtj1.items[i])+1,length(listtj1.items[i]));
sqlstr2:=sqlstr2+' AND '+listtj2.items[i];
end;
sqlstr1:=copy(sqlstr1,pos('並且',sqlstr1)+length('并且'),length(sqlstr1));
sqlstr2:=copy(sqlstr2,pos('AND',sqlstr2)+3,length(sqlstr2));
//showmessage(sqlstr1);
//showmessage(sqlstr2);
end;
//user define
2:begin
str:=edit5.Text;
while length(str)>0 do
begin
str1:=copy(str,1,1);
if str1='+' then
begin
sqlstr1:=sqlstr1+' 或者 ';
sqlstr2:=sqlstr2+' OR ';
str:=copy(str,2,length(str));
end
else if str1='*' then
begin
sqlstr1:=sqlstr1+' 並且 ';
sqlstr2:=sqlstr2+' AND ';
str:=copy(str,2,length(str));
end
else if str1='(' then
begin
sqlstr1:=sqlstr1+'(';
sqlstr2:=sqlstr2+'(';
str:=copy(str,2,length(str));
end
else if str1=')' then
begin
sqlstr1:=sqlstr1+')';
sqlstr2:=sqlstr2+')';
str:=copy(str,2,length(str));
end
else if str[1] in ['0'..'9'] then
begin
i:=1;
str1:='';
str2:='';
while (str[i] in ['0'..'9']) do
begin
str1:=copy(str,1,i);
i:=i+1;
end;
str:=copy(str,2,length(str));
num:=strtoint(str1);
if num>=listtj1.Items.count then
begin
messagebox(frm_sql.handle,'User define condition error','Information',mb_ok+mb_iconinformation);
exit;
end
else
begin
sqlstr1:=sqlstr1+copy(listtj1.Items[num],pos(':',listtj1.items[num])+1,length(listtj1.items[num]));
sqlstr2:=sqlstr2+listtj2.items[num];
end;
end
else
begin
messagebox(frm_sql.handle,'User define error','error',mb_ok+mb_iconinformation);
exit;
end;
end;
//showmessage(sqlstr1);
//showmessage(sqlstr2);
end;
end;
//test sql statement
{with dm do
begin
dm.pub2.Close;
dm.pub2.sql.clear;
dm.pub2.sql.add('select * from '+tbname+' where '+sqlstr2);
showmessage('select * from'+tbname+' where '+sqlstr2);
try
dm.pub2.open;
except
messagebox(frm_sql.handle,'condition error','error',mb_ok+mb_iconinformation);
exit;
end;
end;}
//showmessage(sqlstr2); //III
if sqlstr2='' then sqlstr2:=' 1=1 ';
{
query1.close;
query1.sql.clear;
query1.sql.add('select * from '+tbname+' where '+sqlstr2);
try
query1.open;
except
messagebox(frm_sql.handle,'Condition error','error',mb_ok+mb_iconinformation);
exit;
end;
}
//because of the import program need another table so remove this check
//when you needn't the detail query you can remove the above mark
frm_sql.ModalResult:=mrok;
end;
procedure Tfrm_sql.ed_valueDblClick(Sender: TObject);
begin
if listcz1.ItemIndex<0 then begin messagebox(frm_sql.handle,'Please select sign','',mb_ok+mb_iconinformation); exit; end;
if (ed_value.Text='') then
if (listcz2.Items[listcz1.ItemIndex]='=') or (listcz2.Items[listcz1.ItemIndex]='<>') then
begin addtj; exit; end
else
begin
messagebox(frm_sql.handle,'Please input value','Error',mb_ok+mb_iconinformation);
exit;
end;
if not checkvalue then
begin
ed_value.text:='';
exit;
end
else
addtj;
end;
procedure Tfrm_sql.FormCreate(Sender: TObject);
begin
date1.DateTime:=date;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?