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 + -
显示快捷键?