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

📄 formbase.pas

📁 批量修改约束关系, 只对sql server
💻 PAS
📖 第 1 页 / 共 2 页
字号:

PROCEDURE TBaseFrom.FormCreate(Sender:TObject);
BEGIN
  PBar.Visible:=false;
END;

FUNCTION TBaseFrom.OpenWorker(AList:TStrings):Integer;
VAR sSQL:STRING;
  k:Integer;
BEGIN
  Result:=0;
  IF AList=NIL THEN exit;

  sSQL:='SELECT [工号], [姓名] FROM [House2Cash].[dbo].[职工表]'
    +' ORDER BY [工号]';

  IF OpenSQL(FDM.aqTemp, sSQL)<1 THEN exit;

  AList.Clear;
  TRY
    FOR k:=0 TO FDM.aqTemp.RecordCount-1 DO
    BEGIN
      AList.Add(FDM.aqTemp.FieldByName('工号').AsString
        +'='+FDM.aqTemp.FieldByName('姓名').AsString);
      FDM.aqTemp.Next;
    END;
  FINALLY
    FDM.aqTemp.Close;
  END;
  Result:=AList.Count;
  {
  sSQL:='SELECT [工号], [姓名]'
    +' FROM [House2Cash].[dbo].[职工表]'
    +' ORDER BY [工号]';
  TRY
    Screen.Cursor:=crHourGlass;
    OpenSQL(AQ, sSQL);
    Result:=AQ.Active;
  FINALLY
    Screen.Cursor:=crDefault;
  END;
  }
END;

PROCEDURE TBaseFrom.SetSelectList(FGrid:TDBGridEh);
VAR i:Integer;
BEGIN
  IF FGrid=NIL THEN exit;

  FOR i:=0 TO FGrid.Columns.Count-1 DO
  BEGIN
    {  if not FGrid.ReadOnly then
      begin
      IF (FGrid.Columns[i].Field.FieldName='工号')
        OR(FGrid.Columns[i].Field.FieldName='工资号') THEN
      BEGIN
        FGrid.Columns[i].ButtonStyle:=cbsDropDown;
        //OpenWorker(FGrid.Columns[i].PickList);

        FGrid.Columns[i].AlwaysShowEditButton:=True;

        FGrid.Columns[i].DropDownWidth:=-1;
        FGrid.Columns[i].DropDownRows:=15;
        FGrid.Columns[i].DropDownShowTitles:=true;
        FGrid.Columns[i].DropDownSizing:=true;
        FGrid.Columns[i].LookupDisplayFields:='工号;姓名';
       // FGrid.Columns[i].DropDownSpecRow.CellsText:='<空值>;<空值>';
        FGrid.Columns[i].DropDownSpecRow.Visible:=True;
      END;
      end;       }
  END;
END;

FUNCTION TBaseFrom.GetUseList(AList:TStrings):Integer;
VAR k:Integer;
  sSQL:STRING;
BEGIN
  Result:=0;
  IF AList=NIL THEN exit;

  sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[公积金用途] ';

  IF OpenSQL(FDM.aqTemp, sSQL)<1 THEN exit;

  AList.Clear;
  TRY
    FOR k:=0 TO FDM.aqTemp.RecordCount-1 DO
    BEGIN
      AList.Add(FDM.aqTemp.FieldByName('说明').AsString);
      FDM.aqTemp.Next;
    END;
  FINALLY
    FDM.aqTemp.Close;
  END;
  Result:=AList.Count;
END;

FUNCTION TBaseFrom.OpenHouseKind(AList:TStrings):Integer;
VAR sSQL:STRING;
  k:Integer;
BEGIN
  Result:=0;
  IF AList=NIL THEN exit;

  sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[住房结构]';

  IF OpenSQL(FDM.aqTemp, sSQL)<1 THEN exit;

  AList.Clear;
  TRY
    FOR k:=0 TO FDM.aqTemp.RecordCount-1 DO
    BEGIN
      AList.Add(FDM.aqTemp.FieldByName('说明').AsString);
      FDM.aqTemp.Next;
    END;
  FINALLY
    FDM.aqTemp.Close;
  END;
  Result:=AList.Count;
  {
    sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[住房结构]';
    TRY
      Screen.Cursor:=crHourGlass;
      OpenSQL(AQ, sSQL);
      Result:=AQ.Active;
    FINALLY
      Screen.Cursor:=crDefault;
    END;
    }
END;

FUNCTION TBaseFrom.OpenHousePay(AList:TStrings):Integer;
VAR sSQL:STRING;
  k:Integer;
BEGIN
  Result:=0;
  IF AList=NIL THEN exit;

  sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[房租类别]';

  IF OpenSQL(FDM.aqTemp, sSQL)<1 THEN exit;

  AList.Clear;
  TRY
    FOR k:=0 TO FDM.aqTemp.RecordCount-1 DO
    BEGIN
      AList.Add(FDM.aqTemp.FieldByName('说明').AsString);
      FDM.aqTemp.Next;
    END;
  FINALLY
    FDM.aqTemp.Close;
  END;
  Result:=AList.Count;
  {
    sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[房租类别]';
    TRY
      Screen.Cursor:=crHourGlass;
      OpenSQL(AQ, sSQL);
      Result:=AQ.Active;
    FINALLY
      Screen.Cursor:=crDefault;
    END;}
END;

FUNCTION TBaseFrom.OpenWorthKind(AList:TStrings):Integer;
VAR sSQL:STRING;
  k:Integer;
BEGIN
  Result:=0;
  IF AList=NIL THEN exit;

  sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[土地使用证用途]';
  //sSQL:='SELECT [序号], [说明] FROM [House2Cash].[dbo].[公积金用途] ';

  IF OpenSQL(FDM.aqTemp, sSQL)<1 THEN exit;

  AList.Clear;
  TRY
    FOR k:=0 TO FDM.aqTemp.RecordCount-1 DO
    BEGIN
      AList.Add(FDM.aqTemp.FieldByName('说明').AsString);
      FDM.aqTemp.Next;
    END;
  FINALLY
    FDM.aqTemp.Close;
  END;
  Result:=AList.Count;
  {
  TRY
    Screen.Cursor:=crHourGlass;
    OpenSQL(AQ, sSQL);
    Result:=AQ.Active;
  FINALLY
    Screen.Cursor:=crDefault;
  END;   }
END;

PROCEDURE TBaseFrom.GridTitleBtnClick(Sender:TObject; ACol:Integer; Column:TColumnEh);
VAR
  sortstring:STRING;                    //排序列
BEGIN
  //进行排序
  WITH Column DO
  BEGIN
    IF FieldName='' THEN
      exit;
    CASE Title.SortMarker OF
      smNoneEh:
        BEGIN
          Title.SortMarker:=smDownEh;
          sortstring:=Column.FieldName+' ASC';
        END;
      smDownEh:sortstring:=Column.FieldName+' ASC';
      smUpEh:sortstring:=Column.FieldName+' DESC';
    END;
    //进行排序
    TRY
      IF Column.Grid.DataSource.DataSet IS TCustomADODataSet THEN
        TCustomADODataSet(Column.Grid.DataSource.DataSet).Sort:=sortstring;
    EXCEPT
    END;
  END;
END;

FUNCTION TBaseFrom.OpenWorker(AQ:TADOQuery):Boolean;
VAR sSQL:STRING;
BEGIN
  sSQL:='SELECT [工号], [姓名]'
    +' FROM [House2Cash].[dbo].[职工表]'
    +' ORDER BY [工号]';
  TRY
    Screen.Cursor:=crHourGlass;
    OpenSQL(AQ, sSQL);
    Result:=AQ.Active;
  FINALLY
    Screen.Cursor:=crDefault;
  END;
END;

PROCEDURE TBaseFrom.DataBeforeEdit(DataSet:TDataSet);
BEGIN
  IF DataSet.FindField('审核人')<>NIL THEN
  BEGIN
    IF DataSet.FieldByName('审核人').AsString<>'' THEN
    BEGIN
      Mywarning('数据已审核, 不允许再修改......');
      DataSet.Cancel;
      exit;
    END;
  END;
  IF DataSet.FindField('录入人')<>NIL THEN
  BEGIN
    IF DataSet.FieldByName('录入人').AsString<>WorkUser.Name THEN
    BEGIN
      Mywarning('数据非你录入, 不允许再修改......');
      DataSet.Cancel;
      exit;
    END;
  END;
END;

PROCEDURE TBaseFrom.DataBeforeInsert(DataSet:TDataSet);
BEGIN
  //
END;

FUNCTION TBaseFrom.CopyRecord:Integer;
VAR S:STRING;
  i, k, j:Integer;
  FField:ARRAY OF TTmpField;
  bk:TBookmark;
BEGIN
  IF InputQuery('请输入要复制的条数', '复制多少: ', S) THEN
  BEGIN
    k:=StrToIntDef(S, 0);

    SetLength(FField, AData.FieldCount-1);
    bk:=AData.GetBookmark;

    FOR i:=0 TO AData.FieldCount-1 DO
    BEGIN
      IF (AData.Fields[i].FieldName='序号') THEN
        continue;
      FField[i].Name:=AData.Fields[i].FieldName;
      FField[i].value:=AData.Fields[i].value;
    END;

    TRY
      FOR i:=0 TO k-1 DO
      BEGIN
        TRY
          AData.Append;
          FOR j:=0 TO High(FField) DO
          BEGIN
            IF (AData.Fields[j].FieldName='序号') THEN
              continue;
            AData.FindField(FField[j].Name).value:=FField[j].value;
          END;
          AData.Post;
        EXCEPT

        END;
      END;
    FINALLY
      AData.GotoBookmark(bk);
    END;
  END;
END;

PROCEDURE TBaseFrom.pmiCopyClick(Sender:TObject);
BEGIN
  CopyRecord;
END;

PROCEDURE TBaseFrom.GridSortMarkingChanged(Sender:TObject);
VAR i:Integer;
  S, sortstring:STRING;

BEGIN
  sortstring:='';
  FOR i:=0 TO AGrid.SortMarkedColumns.Count-1 DO
  BEGIN
    S:='';
    IF AGrid.SortMarkedColumns[i].FieldName='' THEN
      exit;
    CASE AGrid.SortMarkedColumns[i].Title.SortMarker OF
      smDownEh:S:=AGrid.SortMarkedColumns[i].FieldName+' DESC';
      smUpEh:S:=AGrid.SortMarkedColumns[i].FieldName+' ASC';
    END;
    IF sortstring='' THEN
    BEGIN
      IF S<>'' THEN
        sortstring:=S;
    END ELSE
    BEGIN
      IF S<>'' THEN
        sortstring:=sortstring+', '+S;
    END;
  END;

  TRY
    IF AGrid.DataSource.DataSet IS TCustomADODataSet THEN
      IF sortstring<>'' THEN
        TCustomADODataSet(AGrid.DataSource.DataSet).Sort:=sortstring;
  EXCEPT

  END;
END;

procedure TBaseFrom.InitShow;
begin
  IF AGrid=NIL THEN
  BEGIN
    Mywarning('代码写的不对哦,参数调用错...');
    exit;
  END;

  AData:=AGrid.DataSource.DataSet;

  IF FFormName<>'' THEN sFileName:=AppPath.Report+FFormName+'_'+AGrid.Name+'.ini';
  AGrid.RestoreGridLayoutIni(sFileName, 'default', [grpColWidthsEh, grpColVisibleEh,
    grpColIndexEh, grpRowHeightEh]);
  //AGrid.OnTitleBtnClick:=GridTitleBtnClick;
  AGrid.OnSortMarkingChanged:=GridSortMarkingChanged;

  IF AData<>NIL THEN
  BEGIN
    IF NOT Assigned(AData.AfterCancel) THEN
      AData.AfterCancel:=DataAfterScroll;
    IF NOT Assigned(AData.AfterDelete) THEN
      AData.AfterDelete:=DataAfterScroll;
    IF NOT Assigned(AData.AfterEdit) THEN
      AData.AfterEdit:=DataAfterScroll;
    IF NOT Assigned(AData.AfterInsert) THEN
      AData.AfterInsert:=DataAfterScroll;
    IF NOT Assigned(AData.AfterPost) THEN
      AData.AfterPost:=DataAfterScroll;
    IF NOT Assigned(AData.AfterOpen) THEN
      AData.AfterOpen:=DataAfterScroll;
  END;
end;

procedure TBaseFrom.InitClose;
begin
  IF (AData<>NIL)AND(AGrid<>NIL) THEN
  BEGIN
    IF sFileName<>'' THEN
      AGrid.SaveGridLayoutIni(sFileName, 'default', false);

    AData.AfterCancel:=NIL;
    AData.AfterDelete:=NIL;
    AData.AfterEdit:=NIL;
    AData.AfterInsert:=NIL;
    AData.AfterPost:=NIL;
    AData.AfterOpen:=NIL;
    AData:=NIL;
  END;
end;

END.

⌨️ 快捷键说明

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