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

📄 ucsdemo.~pas

📁 飞思科技的书不错
💻 ~PAS
字号:
unit UcsDemo;

interface

uses
  SysUtils, Classes,  Forms, DB,Controls, DBTables,Dialogs;

type
  TDmCsDemo = class(TDataModule)
    DbCsDemo: TDatabase;
    QueryCsDemo: TQuery;
    UpdateSQLCsDemo: TUpdateSQL;
    DsCsDemo: TDataSource;
    SPDeleteEmployee: TStoredProc;
    QueryCsDemoEMP_NO: TSmallintField;
    QueryCsDemoFIRST_NAME: TStringField;
    QueryCsDemoLAST_NAME: TStringField;
    QueryCsDemoHIRE_DATE: TDateTimeField;
    QueryCsDemoJOB_CODE: TStringField;
    QueryCsDemoJOB_GRADE: TSmallintField;
    QueryCsDemoJOB_COUNTRY: TStringField;
    QueryCsDemoSALARY: TFloatField;
    QueryCsDemoPROJ_NAME: TStringField;
    QueryCsDemoPROJ_DESC: TMemoField;
    QueryCsDemoTEAM_LEADER: TSmallintField;
    QueryCsDemoPRODUCT: TStringField;
    procedure QueryCsDemoUpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
  end;

var
  DmCsDemo: TDmCsDemo;

implementation

uses UPwdDlg, SplashForm;

{$R *.dfm}

procedure TDmCsDemo.QueryCsDemoUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
    //删除记录时使用存储过程
    if UpdateKind=ukDelete then
    begin
        //给存储过程的输入参数赋值
        SPDeleteEmployee.Params.ParamValues['EMP_NUM']:= QueryCsDemoEMP_NO.OldValue;
        //尝试删除记录
        try
        begin
            SPDeleteEmployee.ExecProc;
            UpdateAction:=uaApplied;//表明删除成功
        end;
        except
            UpdateAction:=uaFail;//失败
        end;
    end
    else//其他的操作,如修改和增加
    try
    begin
        UpdateSQLCsDemo.Apply(UpdateKind);
        UpdateAction:=uaApplied;//成功
    end;
    except
        UpdateAction:=uaFail;//失败
    end;
end;

//保存数据
function TDmCsDemo.DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
begin
  Result := True;
  with TDBDataSet(DataSet) do
  begin
    if (State in dsEditModes) or UpdatesPending then
    begin
      if Apply then
      begin
        Database.ApplyUpdates([DataSet as TDBDataSet]);
        //取消任何其他的一些变化
        CancelUpdates;
      end
      else
      begin
        if (MessageDlg('数据还没有保存,确定退出?', mtConfirmation,
          [mbYes, mbCancel], 0) = mrYes) then
          CancelUpdates
        else
          Result := False;
      end;
    end;
  end;
end;


procedure TDmCsDemo.DataModuleCreate(Sender: TObject);
Var
  bLogin:Boolean;
begin
    bLogin:=False;
    while not bLogin and (FrmLogin.ShowModal=mrOK) do //是否登录成功,没有成功则一直询问口令
    begin
      Try
        FrmSplash.Update;
        DbCsDemo.Params.Clear;
        DbCsDemo.Params.Values['USER NAME']:=Trim(FrmLogin.EditUserName.Text);
        DbCsDemo.Params.Values['PASSWORD']:=Trim(FrmLogin.EditPwd.Text);
        DbCsDemo.Open;
        QueryCsDemo.Open;
        bLogin:=True;
        FrmLogin.Destroy;
      Except
        on E: EDBEngineError do
          begin
            ShowMessage(E.Message);
            bLogin:=False;
          end
        else
          Raise;
      end;
    end;
    if not bLogin then
        Application.Terminate
end;
end.

⌨️ 快捷键说明

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