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

📄 publicunit.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:

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 + -