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

📄 pz_sjpz.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls,
  Menus, ToolWin, IniFiles;

type
  TFrmPZ_Sjpz = class(TForm)
    StatusBar1: TStatusBar;
    Bevel1: TBevel;
    CoolBar1: TCoolBar;
    DBGrid2: TDBGrid;
    CoolBar2: TCoolBar;
    ToolBar2: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton5: TToolButton;
    ToolBar1: TToolBar;
    ToolButton7: TToolButton;
    ToolBar3: TToolBar;
    DBNavigator1: TDBNavigator;
    ToolButton8: TToolButton;
    ToolBar4: TToolBar;
    ToolButton4: TToolButton;
    Panel1: TPanel;
    Label5: TLabel;
    ComboBox3: TComboBox;
    Label6: TLabel;
    ComboBox4: TComboBox;
    Label7: TLabel;
    Label8: TLabel;
    Bevel2: TBevel;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure DBGrid2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure DBGrid2CellClick(Column: TColumn);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label8Click(Sender: TObject);
  private
    { Private declarations }
    procedure PzxxBrowse(Bzxx: integer);
    procedure TDBRecordNumber(Sender: TObject);
    procedure AdjustGrid;
    procedure EmptyPzXx(Bzxx: integer);
    function FileLx(lxbz, Jqh: integer): Boolean;
    function InsertToDic1(lxbz: integer; DicName: string): Boolean;
    function WriteToFile(FileName, sqlstring: string; lxh, Jqh: integer):
      Boolean;
    function FromDbToFile(FileName, sqlstring: string): Boolean;
    function FromFileToDb(lxbz, Jqnum: integer): Boolean;
    procedure Szxx(lxbz: integer; var lxh: integer; var FileName, Delsql,
      Selsql, Insql: string);
    function OpenFile(TextFileName: string; JqNum, lxh: integer): Boolean;
    function EmptyPz(delsql: string): Boolean;
    function InsertToDb(ItemValue: TStrings; Selsql, Insql: string): Boolean;
    function ReadFromDll(czlx: pchar; filename1: pchar;
      WBaud: integer; Wport: smallint; Wmc: smallint; Wtype: smallint;
      Wformx: smallint; Wformy: smallint): smallint;
    procedure GetDicXx(lxbz: integer; var DicName: string);
    function GetDic(DicName: string): Boolean;
    function GetDic1(DicName: string): Boolean;
    function InsertToDic(lxbz: integer; DicName: string): Boolean;
    function DeleteFromDic(DicName: string): Boolean;
    procedure SzCheckRule;
    procedure HideField(Bzxx: integer);
    procedure SzGroup(Bzxx: integer);
    procedure SzRead(Bzxx: integer);
    function GetSplbhDic: Boolean;
    function GetDmDic(AFieldName: string; lxh: integer): Boolean;
    procedure IniJqList;
  public
    { Public declarations }
    BzXx: Integer;
    BZName: string;
    Button1Clicked: Boolean;
  end;
procedure SetWork(title: string; lx: integer);
implementation

uses CJ_DataModule, CJ_Main, PublicUnit, Main, DI_DataModul1, DI_DBDictionery,
  DI_DBCalendar, PZ_SpdhDic, PZ_DmDic, PZ_RqXz ;

{$R *.dfm}

procedure SetWork(title: string; lx: integer);
var
  FrmPZ_Sjpz: TFrmPZ_Sjpz;
begin
  Application.CreateForm(TFrmPZ_Sjpz, FrmPZ_Sjpz);
  with FrmPZ_Sjpz do
  begin
    Caption := '收银机配置信息---' + title + '维护';
    StatusBar1.Panels[0].Text := '    当前为' + title + '表';
    BzXx := lx;
    PublicUnit.BzLx := lx;
    BzName := title;
    ShowModal;
    Free;
  end;
end;
{----------------------------------------------------}

procedure TFrmPZ_Sjpz.FormShow(Sender: TObject);
begin
  with FrmCJ_DataModule.ADOConnection1 do
  begin
    Close;
    ConnectionString := 'Provider=SqlOLEDB.1;Persist Security Info=True;User ID='
      + PublicUnit.DBUser + ';Password=' + PublicUnit.DBPass +
      ';Initial Catalog='
      + PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
    try
      Open;
    except
      ShowMessage('连接业务数据库失败,该系统无法正常工作!');
      Exit;
    end;
  end;
  IniJqList;
  PzxxBrowse(Bzxx);
  HideField(Bzxx);
  SzRead(Bzxx);
end;

procedure TFrmPZ_Sjpz.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FrmCJ_DataModule.ADOQuery2.Close;
  FrmCJ_DataModule.ADOQuery3.Close;
  FrmCJ_DataModule.ADOConnection1.Close;
end;

{------------------浏览配置信息-------------------------------}

procedure TFrmPZ_Sjpz.PzxxBrowse(Bzxx: integer);
var
  sqlstring4: string;
begin
  sqlstring4 := 'Select * From ';
  case BzXx of
    1: sqlstring4 := sqlstring4 + 'PZXX_DFWY1 Order By 服务员编码';
    2: sqlstring4 := sqlstring4 + 'PZXX_DSKY1 Order By 收款员号';
    3: sqlstring4 := sqlstring4 + 'PZXX_DZKXX1 Order By 折扣号';
    4: sqlstring4 := sqlstring4 + 'PZXX_DJYFS Order By 交易号';
    5: sqlstring4 := sqlstring4 + 'PZXX_DSPLB1 Order By 商品类别号';
    6: sqlstring4 := sqlstring4 + 'PZXX_DSPXX1 Order By 商品号';
    7: sqlstring4 := sqlstring4 + 'PZXX_DGZXX1 Order By 柜组号';
  end;
  with FrmCJ_DataModule.ADOQuery3 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(sqlstring4);
    try
      Open;
    except
      ShowMessage('读取数据库错误');
      Exit;
    end;
  end;
  FrmCJ_DataModule.DataSource2.DataSet := FrmCJ_DataModule.ADOQuery3;
  DBGrid2.DataSource := FrmCJ_DataModule.DataSource2;
  DBNavigator1.DataSource := FrmCJ_DataModule.DataSource2;
  if (Bzxx = 3) or (Bzxx = 4) or (Bzxx = 5) or (Bzxx = 6) then
    AdjustGrid;
  StatusBar1.Panels[1].Text := '    共有' +
    IntToStr(FrmCJ_DataModule.adoquery3.RecordCount) + ' 条记录';
  StatusBar1.Panels[2].Text := '';
end;

procedure TFrmPZ_Sjpz.HideField(Bzxx: integer);
begin
  case Bzxx of
    1, 2: DBGrid2.Columns[2].Visible := False;
    3:
      begin
        DBGrid2.Columns[2].Visible := False;
        SzGroup(3);
      end;
    4:
      begin
        DBGrid2.Columns[2].Visible := False;
        DBGrid2.Columns[3].Visible := False;
        DBGrid2.Columns[5].Visible := False;
      end;
    5:
      begin
        DBGrid2.Columns[1].Visible := False;
        DBGrid2.Columns[3].Visible := False;
        DBGrid2.Columns[4].Visible := False;
        DBGrid2.Columns[6].Visible := False;
        DBGrid2.Columns[7].Visible := False;
        SzGroup(5);
      end;
    6:
      begin
        DBGrid2.Columns[5].Visible := False;
        DBGrid2.Columns[6].Visible := False;
        DBGrid2.Columns[7].Visible := False;
        DBGrid2.Columns[8].Visible := False;
      end;
  end;
end;

{-----------------清空配置信息-----------------------------}

procedure TFrmPZ_Sjpz.EmptyPzXx(Bzxx: integer);
var
  sqlstring4: string;
begin
  sqlstring4 := 'Delete From ';
  case BzXx of
    1: sqlstring4 := sqlstring4 + 'PZXX_DFWY1 ';
    2: sqlstring4 := sqlstring4 + 'PZXX_DSKY1 ';
    3: sqlstring4 := sqlstring4 + 'PZXX_DZKXX1';
    4: sqlstring4 := sqlstring4 + 'PZXX_DJYFS ';
    5: sqlstring4 := sqlstring4 + 'PZXX_DSPLB1';
    6: sqlstring4 := sqlstring4 + 'PZXX_DSPXX1';
    7: sqlstring4 := sqlstring4 + 'PZXX_DGZXX1';
  end;
  with FrmCJ_DataModule.ADOQuery3 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(sqlstring4);
    try
      ExecSql;
    except
      ShowMessage('无法清空配置信息');
      Exit;
    end;
  end;
  FrmCJ_DataModule.DataSource2.DataSet := FrmCJ_DataModule.ADOQuery3;
  DBGrid2.DataSource := FrmCJ_DataModule.DataSource2;
  DBNavigator1.DataSource := FrmCJ_DataModule.DataSource2;
  AdjustGrid;
  StatusBar1.Panels[1].Text := '    共有0 条记录';
  StatusBar1.Panels[2].Text := '';
end;

procedure TFrmPZ_Sjpz.TDBRecordNumber(Sender: TObject);
begin
  StatusBar1.Panels[2].Text := '   现在位于第 ' +
    IntToStr(FrmCJ_DataModule.adoquery3.RecNo) + ' 条';
end;

{-------------------调整Grid--------------------------------}

procedure TFrmPZ_Sjpz.AdjustGrid;
var
  k: integer;
begin
  for k := 0 to FrmCJ_DataModule.ADOQuery3.FieldCount - 1 do
  begin
    DBGrid2.Columns[k].Title.Alignment := taCenter;
    DBGrid2.Columns[k].Width := DBGrid2.Columns[k].Field.DisplayWidth + 50;
  end;
end;

{----------------设置写回文件路径的相关信息------------------------}

function TFrmPZ_Sjpz.FileLx(lxbz, Jqh: integer): Boolean;
var
  s, sqlstring, FileName: string;
  lxh: integer;
begin
  Screen.Cursor := crHourGlass;
  Result := False;
  s := ExtractFilePath(Application.ExeName);
  FileName := Copy(s, 1, Pos('bin', LowerCase(s)) - 1) + 'Data\';
  if lxbz = 3 then
    sqlstring := 'Select 折扣号,方式位置,选项1,选项2,折扣率,最大折扣,起始日期,终止日期 From '
  else
    sqlstring := 'Select * From ';
  case lxbz of
    {将服务员信息写回文件的相关信息}
    1:
      begin
        FileName := FileName + 'fwy3.txt';
        lxh := 19;
        sqlstring := sqlstring + 'PZXX_DFWY1 Order By 服务员编码';
      end;
    {将收款员信息写回文件的相关信息}
    2:
      begin
        FileName := FileName + 'sky3.txt';
        lxh := 21;
        sqlstring := sqlstring + 'PZXX_DSKY1 Order By 收款员号';
      end;
    {将折扣信息写回文件的相关信息}
    3:
      begin
        FileName := FileName + 'zk3.txt';
        lxh := 13;
        sqlstring := sqlstring + 'PZXX_DZKXX1 Order By 折扣号';
      end;
    {将交易方式信息写回文件的相关信息}
    4:
      begin
        FileName := FileName + 'jyfs3.txt';
        lxh := 17;
        sqlstring := sqlstring + 'PZXX_DJYFS Order By 交易号';
      end;
    {将商品类别信息写回文件的相关信息}
    5:
      begin
        FileName := FileName + 'splb3.txt';
        lxh := 23;
        sqlstring := sqlstring + 'PZXX_DSPLB1 Order By 商品类别号';
      end;
    {将商品信息写回文件的相关信息}
    6:
      begin
        FileName := FileName + 'spxx3.txt';
        lxh := 24;
        sqlstring := sqlstring + 'PZXX_DSPXX1 Order By 商品号';
      end;
    {将柜组信息写回文件的相关信息}
    7:
      begin
        lxh := 22;
        FileName := FileName + 'gzxx3.txt';
        sqlstring := sqlstring + 'PZXX_DGZXX1 Order By 柜组号';
      end;
  end;
  if not WriteToFile(FileName, sqlstring, lxh, Jqh) then
    Exit;
  Result := True;
  Screen.Cursor := crDefault;
end;

{---------------将配置信息从数据库写回文件(参数为文件名和类型)-------------}

function TFrmPZ_Sjpz.WriteToFile(FileName, sqlstring: string; lxh, Jqh:
  integer): Boolean;
var
  ReturnValue: Integer;
begin
  Result := False;
  if not FromDbToFile(FileName, sqlstring) then
    Exit;
  ReturnValue := ReadFromDll('U', Pchar(Trim(FileName)), 0, 0, Jqh, lxh, 10,
    10);
  if ReturnValue <> -1 then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('更改收银机配置信息错误,系统无法继续工作!');
    DeleteFile(FileName);
    Exit;
  end;
  DeleteFile(FileName);
  Result := True;
end;

function TFrmPZ_Sjpz.FromDbToFile(FileName, sqlstring: string): Boolean;
var
  TextFileName: TextFile;
  i: integer;
  ItemValue: array of string;
  StringContent: string;
begin
  Result := False;
  AssignFile(TextFileName, trim(FileName));
  try
    ReWrite(TextFileName);
  except
    Screen.Cursor := crDefault;
    ShowMessage('写入文件失败,系统无法继续工作');
    Exit;
  end;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(sqlstring);
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('读取数据库记录失败!');
      Exit;
    end;
    First;
    while not Eof do
    begin
      StringContent := '';
      for i := 0 to FieldCount - 1 do
      begin
        SetLength(ItemValue, i + 1);
        ItemValue[i] := Fields[i].AsString;
        if trim(itemvalue[i]) = 'null' then
          itemvalue[i] := '';
        StringContent := StringContent + trim(itemvalue[i]) + ','
      end;
      Writeln(TextFileName, StringContent);
      Next;
    end;
    Close;
  end;
  CloseFile(TextFileName);
  Result := True;
end;

{------------将配置信息从文件存入数据库(参数为类型标志)-----------}

function TFrmPZ_Sjpz.FromFileToDb(lxbz, Jqnum: integer): Boolean;
var
  ATextFile: Textfile;
  FileName, s, Delsql, Selsql, Insql: string;
  ItemValue: TStrings;
  lxh: integer;
begin
  Screen.Cursor := crHourGlass;
  Result := False;
  Szxx(lxbz, lxh, FileName, Delsql, Selsql, Insql);
  if not OpenFile(FileName, JqNum, lxh) then
    Exit;
  if not EmptyPz(Delsql) then
    Exit;
  ItemValue := TStringList.Create;
  AssignFile(ATextFile, FileName);
  try
    ReSet(ATextFile);
  except
    Screen.Cursor := crDefault;
    CloseFile(ATextFile);
    ShowMessage('文件' + FileName + '受到破坏,系统无法继续工作');
    exit;

⌨️ 快捷键说明

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