📄 rdmunit.pas
字号:
function TDefaultRDM.AddSQL(ClearFlag: WordBool; const SQLString: WideString;
ExecFlag: WordBool): WordBool;
var
ViewString, ErrorString: string;
Flag: Boolean;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
Result := False;
Flag := False;
ErrorString := '尚未登录';
if FLogin and not FSelf then
begin
with DefaultRDMADOQuery do
try
Active := False;
if ClearFlag then
SQL.Clear;
SQL.Add(SQLString);
if ExecFlag then
begin
DefaultRDMADOQuery.ExecSQL;
Flag := True;
ViewString := ViewString + '成功执行以下SQL语句:'#13#10'{'#13#10 + SQL.Text + '}';
end;
Result := True;
ErrorString := '';
except
on E: exception do
begin
ErrorString := E.Message;
Flag := True;
ViewString := ViewString + '执行以下SQL语句时失败:'#13#10'{'#13#10 + SQL.Text + '}'#13#10'出错信息为: ' + ErrorString;
end;
end;
if Flag then
begin
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
if FLogin and FSelf then
ErrorString := '不允许执行!';
FErrorStrings.Add(ErrorString);
end;
procedure TDefaultRDM.DefaultRDMADOConnectionBeforeConnect(
Sender: TObject);
begin
if FLogin and not FSelf then
begin
Lock;
with TADOConnection(Sender) do
ConnectionString := TheMainForm.GetADOConnectionString(FUserRealName);
Unlock;
end;
end;
procedure TDefaultRDM.DefaultRDMADOConnectionAfterConnect(Sender: TObject);
begin
if not Flogin or FSelf then
TADOConnection(Sender).Connected := False;
end;
procedure TDefaultRDM.DefaultRDMADOConnectionBeforeDisconnect(
Sender: TObject);
begin
if FLogin and not FSelf then
while TADOConnection(Sender).InTransaction do
try
TADOConnection(Sender).CommitTrans;
except
try
TADOConnection(Sender).RollbackTrans;
except
end;
end;
end;
function TDefaultRDM.ChangePassword(const OldPassword,
NewPassword: WideString; EncryptFlag: WordBool): WordBool;
var
ViewString, ErrorString, UserName, UserRealName, UserAliasName: string;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
ErrorString := '尚未登录';
if FLogin then
ErrorString := '原密码不正确';
Lock;
Result := WordBool(FLogin and TheMainForm.CheckUser(FUserName, string(OldPassword), UserName, UserRealName, UserAliasName, Boolean(EncryptFlag)));
if Result then
ErrorString := '无法更改密码';
Result := Result and WordBool(TheMainForm.ChangeCurrentPassword(FUserName, FUserRealName, string(NewPassword), Boolean(EncryptFlag)));
if FLogin then
begin
if Result then
ViewString := ViewString + '成功更改密码'
else
ViewString := ViewString + '更改密码失败';
if not FSelf then
TheMainForm.DoAddViewString(ViewString);
end;
Unlock;
if Result then
ErrorString := '';
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.GetErrorString(Index: Integer): WideString;
var
i: Integer;
begin
Result := '';
if FErrorStrings.Count > 0 then
begin
i := Index;
if (i <= 0) or (i > FErrorStrings.Count) then
i := FErrorStrings.Count;
Result := WideString(FErrorStrings[i - 1]);
end;
end;
procedure TDefaultRDM.DefaultRDMProviderGetData(Sender: TObject;
DataSet: TCustomClientDataSet);
var
ViewString: string;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
if FLogin and not FSelf then
begin
ViewString := ViewString + '查询数据:'#13#10'{'#13#10 + DefaultRDMADOQuery.SQL.Text + '}';
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end
else
with DataSet do
begin
ClearFields;
Post;
end;
end;
procedure TDefaultRDM.DefaultRDMProviderUpdateData(Sender: TObject;
DataSet: TCustomClientDataSet);
var
ViewString: string;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
if FLogin and not FSelf then
begin
ViewString := ViewString + '更新数据:'#13#10'{'#13#10 + DefaultRDMADOQuery.SQL.Text + '}';
Lock;
while FFieldIndexs.Count > 0 do
try
DataSet.Fields[StrToInt(FFieldIndexs[0])].ProviderFlags := [];
TDataSetProvider(Sender).DataSet.Fields[StrToInt(FFieldIndexs[0])].ProviderFlags := [];
finally
FFieldIndexs.Delete(0);
end;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
procedure TDefaultRDM.DefaultRDMProviderGetTableName(Sender: TObject;
DataSet: TDataSet; var TableName: String);
begin
if FTableName <> '' then
TableName := FTableName;
end;
procedure TDefaultRDM.DefaultRDMProviderUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
var Response: TResolverResponse);
var
ViewString: string;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
if FLogin and not FSelf then
begin
ViewString := ViewString + '更新数据时出错:'#13#10'{'#13#10 + DefaultRDMADOQuery.SQL.Text + '}'#13#10'出错信息为: ' + E.Message;
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
procedure TDefaultRDM.DefaultRDMProviderBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
begin
Applied := not FLogin;
end;
procedure TDefaultRDM.SetUpdateTableName(const TableName, FieldIndexs: WideString);
var
ErrorString: string;
begin
ErrorString := '尚未登录';
if FLogin and not FSelf then
begin
FTableName := string(TableName);
FFieldIndexs.Text := string(FieldIndexs);
ErrorString := '';
end;
if FLogin and FSelf then
ErrorString := '不允许执行!';
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.GetUserInfo(AllUsersFlag: WordBool): WideString;
var
ViewString, ErrorString: string;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
ErrorString := '尚未登录';
Result := '';
if FLogin then
begin
Result := TheMainForm.GetUserInfo(AllUsersFlag, FUserName, FUserRealName);
ErrorString := '';
if not FSelf then
begin
ViewString := ViewString + '读取用户信息';
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.ProcessPassword(const BasicStr, Value: WideString;
ToNatural: WordBool): WideString;
var
ErrorString: string;
begin
Result := TheMainForm.ProcessPassword(string(BasicStr), string(Value), ToNatural);
ErrorString := '';
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.GetProcedureNames: WideString;
var
ViewString, ErrorString: string;
List: TStringList;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
Result := '';
ErrorString := '尚未登录';
if FLogin and not FSelf then
begin
ErrorString := '未连接数据库';
if DefaultRDMADOConnection.Connected then
begin
ErrorString := '读取存储过程列表时出错';
List := TStringList.Create;
try
DefaultRDMADOConnection.GetProcedureNames(List);
Result := List.Text;
ViewString := ViewString + '成功读取存储过程列表';
ErrorString := '';
except
on E: Exception do
begin
ErrorString := E.Message;
ViewString := ViewString + '读取存储过程列表时出错:'#13#10 + ErrorString;
end;
end;
List.Free;
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
if FLogin and FSelf then
ErrorString := '不允许执行!';
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.GetTableNames(SystemTables: WordBool): WideString;
var
ViewString, ErrorString: string;
List: TStringList;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
Result := '';
ErrorString := '尚未登录';
if FLogin and not FSelf then
begin
ErrorString := '未连接数据库';
if DefaultRDMADOConnection.Connected then
begin
if SystemTables then
ErrorString := '读取表名列表(含系统表)时出错'
else
ErrorString := '读取表名列表(不含系统表)时出错';
List := TStringList.Create;
try
DefaultRDMADOConnection.GetTableNames(List, SystemTables);
Result := List.Text;
if SystemTables then
ViewString := ViewString + '成功读取表名列表(含系统表)'
else
ViewString := ViewString + '成功读取表名列表(不含系统表)';
ErrorString := '';
except
on E: Exception do
begin
ErrorString := E.Message;
if SystemTables then
ViewString := ViewString + '读取表名列表(含系统表)时出错:'#13#10 + ErrorString
else
ViewString := ViewString + '读取表名列表(不含系统表)时出错:'#13#10 + ErrorString;
end;
end;
List.Free;
Lock;
TheMainForm.DoAddViewString(ViewString);
Unlock;
end;
end;
if FLogin and FSelf then
ErrorString := '不允许执行!';
FErrorStrings.Add(ErrorString);
end;
function TDefaultRDM.GetFieldNames(
const TableName: WideString): WideString;
var
ViewString, ErrorString: string;
List: TStringList;
begin
ViewString := '[' + GetCurrentDateTime + '] 用户 ' + FName + ' ';
Result := '';
ErrorString := '尚未登录';
if FLogin and not FSelf then
begin
ErrorString := '未连接数据库';
if DefaultRDMADOConnection.Connected then
begin
ErrorString := '读取表' + TableName + '字段列表时出错';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -