📄 ucsdemo.~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 + -