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

📄 unitstandard1.pas

📁 是分布式粮库程序,是采用Delphi实现的
💻 PAS
📖 第 1 页 / 共 3 页
字号:
                     exit;
                   end;
                   SQL2:=format(' %s  %s %s %d ', [sLog1 , sFld2, sOpr2, StrToInt(sVal2)]);
                 end;
      ftFloat:   begin
                   try
                     StrToFloat(sVal2);
                   except
                     showmessage('第二个字段(列)值为无效的浮点数值类型,请重新输入!');
                     exit;
                   end;
                   SQL2:=format(' %s  %s %s %f ', [sLog1 , sFld2, sOpr2, StrToFloat(sVal2)]);
                 end;
      ftDateTime:begin
                   try
                     StrToDate(sVal2);
                   except
                     showmessage('第二个字段(列)值为无效的日期类型,有效的日期类型为:YY-MM-DD!请重新输入!');
                     exit;
                   end;
                   SQL2:=format(' %s  %s %s ''%s'' ', [sLog1, sFld2, sOpr2, sVal2]);
                 end;
    else
      begin
        showmessage('要查询的字段:'+sFld2+'的类型还未定义!');
        exit;
      end;
    end;
    SQLWhr := SQLWhr + SQL2;
  end;
  if ( sLog2 <> '' ) and ( sFld3 <> '' ) and ( sOpr3 <> '' ) then
  begin
    case  DBGrid1.DataSource.DataSet.FieldByName(sFld3).DataType of
      ftString: begin
                  if sOpr3='like' then sVal3:='%'+sVal3+'%';
                  SQL3:=format(' %s  %s %s ''%s'' ', [ sLog2, sFld3, sOpr3, sVal3]);
                end;
      ftInteger: begin
                   try
                     StrToInt(sVal3);
                   except
                     showmessage('第三个字段(列)值为无效的整型,请重新输入!');
                     exit;
                   end;
                   SQL3:=format(' %s  %s %s %d ', [ sLog2, sFld3, sOpr3, StrToInt(sVal3)]);
                 end;
      ftFloat:   begin
                   try
                     StrToFloat(sVal2);
                   except
                     showmessage('第三个字段(列)值为无效的浮点数值类型,请重新输入!');
                     exit;
                   end;
                   SQL3:=format(' %s  %s %s %f ', [ sLog2, sFld3, sOpr3, StrToFloat(sVal3)]);
                 end;
      
      ftDateTime:begin
                   try
                     StrToDate(sVal2);
                   except
                     showmessage('第三个字段(列)值为无效的日期类型,有效的日期类型为:YY-MM-DD!请重新输入!');
                     exit;
                   end;
                   SQL3:=format(' %s  %s %s ''%s'' ', [sLog2, sFld3, sOpr3, sVal3]);
                 end;
    else
      begin
        showmessage('要查询的字段:'+sFld3+'的类型还未定义!');
        exit;
      end;
    end;
    SQLWhr := SQLWhr + SQL3;
  end;
  if (SQLWhr<>'') and (trim(EdtInitWhr.Text)<>'') then
    SQLWhr := SQLWhr + ' and ' + trim(EdtInitWhr.Text);
  if (SQLWhr='') and (trim(EdtInitWhr.Text)<>'')  then
    SQLWhr := ' where ' + trim(EdtInitWhr.Text);

  //以下取得SQLOrd
  if CmBxSrtFld1.Itemindex=-1 then
    sOrdFld1 := ''
  else
    sOrdFld1 := Dbgrid1.Columns[CmBxSrtFld1.Itemindex].FieldName;
  if CmBxSrtFld2.Itemindex=-1 then
    sOrdFld2 := ''
  else
    sOrdFld2 := Dbgrid1.Columns[CmBxSrtFld2.Itemindex].FieldName;
  if CmBxSrtFld3.Itemindex=-1 then
    sOrdFld3 := ''
  else
    sOrdFld3 := Dbgrid1.Columns[CmBxSrtFld3.Itemindex].FieldName;

  if sOrdFld1 <> '' then
    begin
      if RadioGroup1.ItemIndex=1 then
        SQLOrd:= ' order by '+ sOrdFld1 + ' desc'
      else
        SQLOrd:= ' order by '+ sOrdFld1 ;
    end;
  if (sOrdFld2<>'') and (sOrdFld1 <>'') then
    begin
      if RadioGroup2.ItemIndex=1 then
        SQLOrd:= SQLOrd + ', ' + sOrdFld2 + ' desc'
      else
        SQLOrd:=  SQLOrd + ', ' + sOrdFld2 ;
    end;
   if (sOrdFld2<>'') and (sOrdFld1<>'') and (sOrdFld3<>'') then
    begin
      if RadioGroup2.ItemIndex=1 then
        SQLOrd:= SQLOrd + ', ' + sOrdFld3 + ' desc'
      else
        SQLOrd:=  SQLOrd + ', ' + sOrdFld3 ;
    end;
  StrSQL := SQLSlt + SQLWhr + SQLOrd;

  if DBGrid1.DataSource = DataSource1 then
  begin
    QrySQL.Close;
    QrySQL.SQL.Clear ;
    QrySQL.SQL.Add (SQLSlt + SQLWhr + SQLOrd );
    QrySQL.Open;
  end;

end;


procedure TFrmStandard1.BitBtnAllClick(Sender: TObject);
var
  SQLOrd,sOrdFld1,sOrdFld2,sOrdFld3:string;
  SQLWhr: string;
begin
  inherited;
  //以下取得SQLOrd
  if CmBxSrtFld1.Itemindex=-1 then
    sOrdFld1 := ''
  else
    sOrdFld1 := Dbgrid1.Columns[CmBxSrtFld1.Itemindex].FieldName;
  if CmBxSrtFld2.Itemindex=-1 then
    sOrdFld2 := ''
  else
    sOrdFld2 := Dbgrid1.Columns[CmBxSrtFld2.Itemindex].FieldName;
  if CmBxSrtFld3.Itemindex=-1 then
    sOrdFld3 := ''
  else
    sOrdFld3 := Dbgrid1.Columns[CmBxSrtFld3.Itemindex].FieldName;

  if sOrdFld1<>'' then
    begin
      if RadioGroup1.ItemIndex=1 then
        SQLOrd:= ' order by '+ sOrdFld1 + ' desc'
      else
        SQLOrd:= ' order by '+ sOrdFld1 ;
    end;
  if (sOrdFld2<>'') and (sOrdFld1<>'') then
    begin
      if RadioGroup2.ItemIndex=1 then
        SQLOrd:= SQLOrd + ', ' + sOrdFld2 + ' desc'
      else
        SQLOrd:=  SQLOrd + ', ' + sOrdFld2 ;
    end;
   if (sOrdFld2<>'') and (sOrdFld1<>'') and (sOrdFld3<>'') then
    begin
      if RadioGroup2.ItemIndex=1 then
        SQLOrd := SQLOrd + ', ' + sOrdFld3 + ' desc'
      else
        SQLOrd := SQLOrd + ', ' + sOrdFld3 ;
    end;

  StrSQL := 'select * from '+ Trim(EdtTable.Text);

  SQLWhr:='';
  if EdtInitWhr.Text<>'' then
    SQLWhr := ' where '+ EdtInitWhr.Text;

  if DBGrid1.DataSource = DataSource1 then
  begin
    QrySQL.Close;
    QrySQL.SQL.Clear ;
    QrySQL.SQL.Add('select * from '+ Trim(EdtTable.Text) + SQLWhr + SQLOrd);
    QrySQL.Open;
  end;
end;


procedure TFrmStandard1.BitBtnCancel1Click(Sender: TObject);
begin
  inherited;
  CboxField1.Itemindex:=-1;
  CboxField2.Itemindex:=-1;
  CboxField3.Itemindex:=-1;
  CboxOperator1.ItemIndex:=-1;
  CboxOperator2.ItemIndex:=-1;
  CboxOperator3.ItemIndex:=-1;
  CboxLogic1.ItemIndex:=-1;
  CboxLogic2.ItemIndex:=-1;
  CmBxSrtFld1.ItemIndex:=-1;
  CmBxSrtFld2.ItemIndex:=-1;
  CmBxSrtFld3.ItemIndex:=-1;

  EdtFieldValue1.Text:='';
  EdtFieldValue2.Text:='';
  EdtFieldValue3.Text:='';

  CboxField1.Enabled:=true;
  CboxField2.Enabled:=false;
  CboxField3.Enabled:=false;
  CboxOperator1.Enabled:=false;
  CboxOperator2.Enabled:=false;
  CboxOperator3.Enabled:=false;
  EdtFieldValue1.Enabled:=false;
  EdtFieldValue2.Enabled:=false;
  EdtFieldValue3.Enabled:=false;
  CboxLogic1.Enabled:=false;
  CboxLogic2.Enabled:=false;
  CmBxSrtFld1.Enabled:=true;
  CmBxSrtFld2.Enabled:=false;
  CmBxSrtFld3.Enabled:=false;
end;

procedure TFrmStandard1.BitBtnSlctFldDefautClick(Sender: TObject);
var
  i,j:integer;
  StrField:string;
  flg:boolean;
begin
  inherited;
  LstBxAvailable.Items.Clear;
  LstBxChosen.Items.Clear;
  LstBxChosen.Items.AddStrings(FldDefault);
  for i:=0 to QrySQL.FieldCount-1 do
    begin //剩余的字段显示在 LstBxAvailable中
    StrField:=QrySQL.Fields[i].DisplayLabel;
    flg:=true;
    for j:=0 to LstBxChosen.Items.Count-1 do
      if StrField=LstBxChosen.Items.Strings[j] then
        begin
        flg:=false;
        break;
        end;
    if flg then LstBxAvailable.Items.Add(QrySQL.Fields[i].DisplayLabel);
    end;
  BitBtnSlctFldOK.Click;
end;

procedure TFrmStandard1.BitBtnSlctFldOKClick(Sender: TObject);
var
  i,j,k:integer;
begin
  inherited;
  k:= DBGrid1.Columns.Count-1;
  //删除所有的显示字段
  for i:=0 to k do
    DBGrid1.Columns.delete(k-i);
  //根据已选字段框中的字段(LstBxChosen)创建显示字段,即在数据窗口中显示
  for i:=0 to LstBxChosen.items.Count-1 do
    begin
    for j:=0 to QrySQL.FieldCount-1 do
      if QrySQL.Fields[j].DisplayName=LstBxChosen.Items.Strings[i] then
        begin
        DBGrid1.Columns.Add;
        DBGrid1.Columns[i].FieldName:= QrySQL.Fields[j].FieldName;
        break;
        end;
    end;
end;

procedure TFrmStandard1.BitBtnAllLeftClick(Sender: TObject);
var
  i : integer;
  itmC : TStringlist;
begin
  inherited;

  itmC := TStringlist.Create  ;
  try
    for i := 0 to (LstBxAvailable.Items.Count - 1) do
      itmC.Add(LstBxAvailable.Items.Strings[i]);
    LstBxAvailable.Items.Clear ;
    LstBxChosen.Items.AddStrings (itmC);
  finally
    itmC.Free ;
  end;

end;

procedure TFrmStandard1.BitBtnLeftClick(Sender: TObject);
var
  i : integer;
  itmA, itmC : TStringlist;
begin
  inherited;
  itmA := TStringlist.Create  ;
  itmC := TStringlist.Create  ;
  try
    for i := 0 to (LstBxAvailable.Items.Count - 1) do
      if LstBxAvailable.Selected[i]=false then
        itmA.Add(LstBxAvailable.Items.Strings[i])
      else
        itmC.Add(LstBxAvailable.Items.Strings[i]);
    LstBxAvailable.Items.Clear ;
    LstBxChosen.Items.AddStrings (itmC);
    LstBxAvailable.Items.AddStrings (itmA);
  finally
    itmA.Free ;
    itmC.Free ;
  end;

end;

procedure TFrmStandard1.BitBtnAllRightClick(Sender: TObject);
var
  i : integer;
  itmA : TStringlist;
begin
  inherited;
  itmA := TStringlist.Create  ;
  try
    for i := 0 to (LstBxChosen.Items.Count - 1) do
      itmA.Add(LstBxChosen.Items.Strings[i]);
    LstBxChosen.Items.Clear ;
    LstBxAvailable.Items.AddStrings (itmA);
  finally
    itmA.Free ;
  end;

end;

procedure TFrmStandard1.BitBtnRightClick(Sender: TObject);
var
  i : integer;
  itmA, itmC : TStringlist;
begin
  inherited;

  itmA := TStringlist.Create  ;
  itmC := TStringlist.Create  ;
  try
    for i := 0 to (LstBxChosen.Items.Count - 1) do
      if LstBxChosen.Selected[i] then
        itmA.Add(LstBxChosen.Items.Strings[i])
      else
        itmC.Add(LstBxChosen.Items.Strings[i]);
    LstBxChosen.Items.Clear ;
    LstBxChosen.Items.AddStrings (itmC);
    LstBxAvailable.Items.AddStrings (itmA);
  finally
    itmA.Free ;
    itmC.Free ;
  end;

end;

procedure TFrmStandard1.BitBtnTopClick(Sender: TObject);
var
  i : integer;
begin
  inherited;
  i := LstBxChosen.ItemIndex ;
  if i > 0 then LstBxChosen.Items.Move (i, 0);
end;

procedure TFrmStandard1.BitBtnUpClick(Sender: TObject);
var
  i : integer;
begin
  inherited;
  i := LstBxChosen.ItemIndex ;
  if i > 0 then LstBxChosen.Items.Move (i, i - 1);
end;

procedure TFrmStandard1.BitBtnDownClick(Sender: TObject);
var
  i, j : integer;
begin
  inherited;
  i := LstBxChosen.ItemIndex ;
  j := LstBxChosen.Items.Count - 1;
  if i < j then LstBxChosen.Items.Move (i, i + 1);
end;

procedure TFrmStandard1.BitBtnBottomClick(Sender: TObject);
var
  i, j : integer;
begin
  inherited;
  i := LstBxChosen.ItemIndex ;
  j := LstBxChosen.Items.Count - 1;
  if i < j then LstBxChosen.Items.Move (i, j);
end;

procedure TFrmStandard1.BitBtnExitClick(Sender: TObject);
begin
  inherited;
  close;
end;

procedure TFrmStandard1.FormDestroy(Sender: TObject);
begin
  inherited;
  FldDefault.Free;
end;

procedure TFrmStandard1.QrySQLAfterScroll(DataSet: TDataSet);
begin
  inherited;
  DBEditKey.Enabled:=false;
  //LblKey.Enabled:=false;
end;

end.

⌨️ 快捷键说明

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