📄 publicunit.~pas
字号:
function WriteToRegist(username, password: string): Boolean;
var
Reg: TRegistry;
name, pass: string;
begin
Result := False;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
name := Trim(username);
pass := Trim(password);
try
if (Reg.OpenKey('\Software\yahui', False)) = False then
Reg.CreateKey('\Software\yahui');
Reg.OpenKey('\Software\yahui', True);
//if EncryFunc(Trim(name))='' then Exit;
//if EncryFunc(Trim(pass))='' then Exit;
Reg.WriteString('user', Trim(EncryFunc(Trim(name))));
Reg.WriteString('pass', Trim(EncryFunc(Trim(pass))));
Reg.CloseKey;
finally
Reg.CloseKey;
Reg.Free;
end;
Result := True;
end;
{--------------------------调整表格字段显示------------------}
procedure SetDBGridFieldsDisplay(var ADbGrid: TDbGrid);
var
dc: TColumn;
i: integer;
begin
if not ADbGrid.DataSource.DataSet.Active then
Exit;
ADbGrid.Columns.Clear;
for i := 0 to ADbGrid.FieldCount - 1 do
begin
dc := ADbGrid.Columns.Add;
dc.FieldName := ADbGrid.DataSource.DataSet.Fields[i].FieldName;
dc.Width := Length(ADbGrid.DataSource.DataSet.Fields[i].DisplayName) *
ADbGrid.TitleFont.Size + 10;
if dc.Width < 60 then
dc.Width := 60;
if ((i mod 2) = 0) then
dc.Color := clMoneyGreen
else
dc.Color := clInfoBk;
end;
end;
{-------------------------------------------------------------------------------}
function GetReportEName(CName: string): string;
var
ti: TInifile;
s: string;
begin
ti := TInifile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
s := ti.ReadString('ReportEName', CName, '');
if s = '' then
s := CName;
Result := s;
ti.Free;
end;
function GetSaveReportDir: string;
var
ti: TInifile;
begin
ti := TInifile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
Result := ti.ReadString('System', 'ReportSaveTo', 'c:\');
ti.Free;
end;
procedure GetSystemInformation;
var
ti: TInifile;
begin
ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
DbCName := ti.ReadString('System', 'DbCName', '亚惠快餐数据库');
DbName := ti.ReadString('System', 'DbName', 'YHKC');
DbUser := ti.ReadString('System', 'DbUser', 'sa');
DbPass := ti.ReadString('System', 'DbPass', '');
ti.Free;
{ if DBName <> 'YHKC' then
DbName := UnEncryFunc(DbName);
if DBUser <> 'sa' then
DbUser := UnEncryFunc(DbUser);
if DBPass <> '' then
DbPass := UnEncryFunc(DbPass);}
end;
//向日志表中加入日志
//FuncName:string;功能区域
//OperDate:TDate;发生日期
//OperTime:TTime;发生时间
//Operation:string;事件内容
//Operater:string;操作员
function WriteToHistroy(FuncName: string; OperDate: TDate; OperTime: TTime;
Operation, Operater: string): Boolean;
var
ADOQuery: TADOQuery;
begin
Result := False;
if ((FuncName = '') or (Operation = '') or (Operater = '')) then
Exit;
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;Password='
+ PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog='
+ PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
Sql.Add('Insert Into RZGL');
Sql.Add('(功能区域,日期,时间,事件内容,操作员)');
Sql.Add('Values');
Sql.Add('(''' + FuncName + ''',''' + DateToStr(OperDate) + ''',''' +
TimeToStr(OperTime) + ''',''' + Operation + ''',''' + Operater + ''')');
try
ExecSql;
Result := True;
except ShowMessage('未能成功加入日志!');
end;
Close;
Free;
end;
end;
{-------------------------------------------------------------------------------}
procedure OutPuttoExcel(ADOQuery: TADOQuery);
var
Row, Col: Integer;
Sheet: Variant;
MyExcelApplication: TExcelApplication;
begin
if not ExecuteSQLStatement(ADOQuery) then
Exit;
MyExcelApplication := TExcelApplication.Create(Application);
MyExcelApplication.Connect;
MyExcelApplication.Visible[0] := True;
MyExcelApplication.Workbooks.Add(emptyparam, 0);
Sheet := MyExcelApplication.Workbooks[1].Worksheets[1];
Sheet.Visible := True;
// Sheet.Cells[1,1]:=MyPageDesign.ReportName ;
// FieldNameE:=TStringList.Create;
// FieldNameC:=TStringList.Create;
// ReadFieldCName(MyPageDesign.CServerName,MyPageDesign.CDataBaseName,MyPageDesign.CTableName,FieldNameE,FieldNameC);
for Col := 0 to ADOQuery.Fields.Count - 1 do
Sheet.Cells[2, col + 1] := ADOQuery.Fields[col].FieldName;
Row := 3;
ADOQuery.First;
while not ADOQuery.Eof do
begin
for Col := 0 to ADOQuery.Fields.Count - 1 do
Sheet.Cells[Row, Col + 1] := ADOQuery.Fields[Col].AsString;
Inc(Row);
ADOQuery.Next;
end;
MyExcelApplication.Quit;
MyExcelApplication.DisConnect;
MyExcelApplication := nil;
end;
//从对应字段给字典充值
function RefreshDBDictionery(DicName: string): Boolean;
var
ti: TInifile;
DFieldString, DTableName, DFieldName: string;
ADOQuery: TADOQuery;
begin
Result := False;
ti := TInifile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
DFieldString := ti.ReadString('字典对照', Copy(DicName, Pos('_', DicName) + 1,
100000), '');
ti.Free;
if DFieldString = '' then
Exit;
Screen.Cursor := crHourGlass;
DTableName := Copy(DFieldString, 1, Pos('/', DFieldString) - 1);
DFieldName := Copy(DFieldString, Pos('/', DFieldString) + 1, 10000);
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;Password='
+ PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog='
+ PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
Sql.Add('Delete');
Sql.Add('From ' + DicName);
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('不能初始化字典表!');
Close;
Free;
Exit
end;
Sql.Clear;
Sql.Add('Insert Into ' + DicName);
Sql.Add('(DICTIONARY)');
Sql.Add('(Select Distinct ' + DFieldName);
Sql.Add('From ' + DTableName);
Sql.Add('Where ' + DFieldName + '<>'''')');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('未能给字典赋值!');
Close;
Free;
Exit
end;
Screen.Cursor := crDefault;
Close;
Free;
end;
Result := True;
end;
//在指定表中根据一个字段的值获取另一个字段的值:原始字段只限字符串类型
function FieldTranslate(TableName, SourceFieldName, SourceFieldValue,
DisFieldName: string): string;
var
ADOQuery: TADOQuery;
begin
//ShowMessage('Tb='+TableName+',Sf='+SourceFieldName+',Sfv='+SourceFieldValue+',Df='+DisFieldName);
Result := '';
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=True;Password='
+ PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog='
+ PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
Sql.Add('Select ' + DisFieldName);
Sql.Add('From ' + TableName);
Sql.Add('Where ' + SourceFieldName + '=''' + SourceFieldValue + '''');
try
open;
except
Close;
Free;
Exit;
end;
if RecordCount <> 0 then
Result := Fields[0].AsString;
Close;
Free;
end;
end;
//获取当前表的只读字段
procedure GetReadOnlyFieldNames(TableCName: string; var FieldNames: TStrings);
var
ti: TInifile;
fc, i: integer;
begin
FieldNames.Clear;
ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
fc := ti.ReadInteger(TableCName, 'FieldCount', 0);
if fc <> 0 then
for i := 1 to fc do
FieldNames.Add(ti.ReadString(TableCName, 'Field' + IntToStr(i), ''));
ti.Free;
end;
//拆分运行带有Go的SQL语句
function ExecuteSQLStatement(ADOQuery: TADOQuery): Boolean;
var
ts: TStrings;
i: integer;
RunOnce: Boolean;
begin
Result := False;
ts := TStringList.Create;
ts.Assign(ADOQuery.SQL);
RunOnce := True;
for i := 0 to ts.Count - 1 do
if (LowerCase(Trim(ts[i])) <> 'go') then
begin
if (LowerCase(Trim(ts[i])) = '') then
Continue;
if RunOnce then
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
RunOnce := False;
end;
ADOQuery.SQL.Add(ts[i])
end
else
begin
if ADOQuery.SQL.Count = 0 then
Continue;
try
ADOQuery.ExecSQL;
RunOnce := True;
except
ts.Free;
Exit;
end;
end;
ADOQuery.Open;
Result := True;
ts.Free;
end;
//外部输出中根据要求将销售数据存入文本文件中
function CreateXSXX(BeginDateTime, EndDateTime: TDateTime; FileName: string):
Boolean;
var
ADOQuery: TADOQuery;
tf: TextFile;
s: string;
begin
Screen.Cursor := crHourGlass;
Result := False;
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;Password='
+
PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog='
+
PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName + '';
Sql.Add('Select Convert(varchar(10),A.日期,120) dt,Convert(varchar(10),A.日期,108) rq,A.设备编码 skjh,A.收据号 jyh,A.商品号 sph,A.商品价格 dj,A.商品数量 sl,A.实销售额 je,A.折扣额 zkz,B.职员编码 skyh');
Sql.Add('From SCSJ_DSYJXSXX1 A Left Join GLXX_DZYXX B on A.收款员姓名=B.职员姓名');
Sql.Add('Where A.日期>=''' + DateTimeToStr(BeginDateTime) + '''');
Sql.Add('and A.日期<''' + DateTimeToStr(EndDateTime) + '''');
try
Open;
except
Screen.Cursor := crDefault;
ShowMessage('无法打开售餐信息表或收款员信息表!');
Free;
Exit;
end;
AssignFile(tf, FileName);
try
Rewrite(tf);
except
Screen.Cursor := crDefault;
ShowMessage('无法生成文件《' + FileName + '》!');
CloseFile(tf);
Close;
Free;
Exit;
end;
WriteLn(tf, 'dt rq skjh sph dj sl je zkz skyh');
while not Eof do
begin
s := FieldByName('dt').AsString + ' ' + FieldByName('rq').AsString + ' ' +
FieldByName('skjh').AsString + ' ' + FieldByName('jyh').AsString + ' ' +
FieldByName('sph').AsString + ' ' + FieldByName('dj').AsString + ' ' +
FieldByName('sl').AsString + ' ' + FieldByName('je').AsString + ' ' +
FieldByName('zkz').AsString + ' ' + FieldByName('skyh').AsString;
WriteLn(tf, s);
Next;
end;
CloseFile(tf);
Close;
Free;
end;
Screen.Cursor := crDefault;
Result := True;
end;
//外部输出中根据要求将收款数据存入文本文件中
function CreateSKXX(BeginDateTime, EndDateTime: TDateTime; FileName: string):
Boolean;
var
ADOQuery: TADOQuery;
tf: TextFile;
s: string;
begin
Screen.Cursor := crHourGlass;
Result := False;
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;Password='
+
PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog='
+
PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName + '';
Sql.Add('Select Convert(varchar(10),A.日期,120) dt,Convert(varchar(10),A.日期,108) rq,A.设备编码 skjh,A.交易名称 hbzl,Sum(A.交易金额) je,A.IC卡号 yhkh,C.职员编码 skyh,A.收款员姓名 skyxm');
Sql.Add('From SCSJ_DJYFS A Left Join GLXX_DZYXX C on A.收款员姓名=C.职员姓名');
Sql.Add('Where A.日期>=''' + DateTimeToStr(BeginDateTime) + '''');
Sql.Add('and A.日期<''' + DateTimeToStr(EndDateTime) + '''');
Sql.Add('Group by A.日期,A.设备编码,A.交易名称,A.IC卡号,A.收款员姓名,C.职员编码');
try
Open;
except
Screen.Cursor := crDefault;
ShowMessage('无法打开售餐信息表或收款员信息表!');
Free;
Exit;
end;
AssignFile(tf, FileName);
try
Rewrite(tf);
except
Screen.Cursor := crDefault;
ShowMessage('无法生成文件《' + FileName + '》!');
CloseFile(tf);
Close;
Free;
Exit;
end;
writeln(tf, 'dt rq skjh je hbzl yhkh skyh skyxm');
while not Eof do
begin
s := FieldByName('dt').AsString + ' ' + FieldByName('rq').AsString + ' ' +
FieldByName('skjh').AsString + ' ' + FieldByName('je').AsString + ' ' +
FieldByName('hbzl').AsString + ' ' + FieldByName('yhkh').AsString + ' '
+
FieldByName('skyh').AsString + ' ' + FieldByName('skyxm').AsString;
WriteLn(tf, s);
Next;
end;
CloseFile(tf);
Close;
Free;
end;
Result := True;
Screen.Cursor := crDefault;
end;
initialization
CloseApp := False;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -