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

📄 pz_sjpz.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
  end;
  while not Eof(ATextFile) do
  begin
    Readln(ATextFile, s);
    ItemValue.Clear;
    while Pos(',', s) > 0 do
    begin
      ItemValue.Add(Trim(Copy(s, 1, Pos(',', s) - 1)));
      if ItemValue[ItemValue.Count - 1] = '' then
        ItemValue[ItemValue.Count - 1] := 'null';
      s := Trim(Copy(s, Pos(',', s) + 1, 100000));
    end;
    if lxbz = 3 then
    begin
      ItemValue.Add('2000-09-08');
      ItemValue.Add('2001-08-28');
    end;
    if not InsertToDb(ItemValue, Selsql, Insql) then
      Exit;
  end;
  CloseFile(ATextFile);
  DeleteFile(FileName);
  ItemValue.Free;
  Result := True;
  Screen.Cursor := crDefault;
end;

{------------------------设置来源文件的路径及相关语句-----------------------------------}

procedure TFrmPZ_Sjpz.Szxx(lxbz: integer; var lxh: integer; var FileName,
  Delsql, Selsql, Insql: string);
begin
  FileName := ExtractFilePath(Application.ExeName);
  FileName := Copy(FileName, 1, Pos('bin', LowerCase(FileName)) - 1) + 'Data\';
  Delsql := 'Delete From ';
  Selsql := 'Select * From ';
  Insql := 'Insert Into ';
  case lxbz of
    1:
      begin {服务员}
        FileName := FileName + 'fwy.txt';
        lxh := 19;
        Delsql := Delsql + 'PZXX_DFWY1';
        Selsql := Selsql + 'PZXX_DFWY1 Order By 服务员编码';
        Insql := Insql + 'PZXX_DFWY1';
      end;
    2:
      begin {收款员}
        FileName := FileName + 'sky.txt';
        lxh := 21;
        Delsql := Delsql + 'PZXX_DSKY1';
        Selsql := Selsql + 'PZXX_DSKY1 Order By 收款员号';
        Insql := Insql + 'PZXX_DSKY1';
      end;
    3:
      begin {折扣信息}
        FileName := FileName + 'zk.txt';
        lxh := 13;
        Delsql := Delsql + 'PZXX_DZKXX1';
        Selsql := Selsql + 'PZXX_DZKXX1 Order By 折扣号';
        Insql := Insql + 'PZXX_DZKXX1';
      end;
    4:
      begin {交易方式}
        FileName := FileName + 'jyfs.txt';
        lxh := 17;
        Delsql := Delsql + 'PZXX_DJYFS';
        Selsql := Selsql + 'PZXX_DJYFS Order By 交易号';
        Insql := Insql + 'PZXX_DJYFS';
      end;
    5:
      begin {商品类别}
        FileName := FileName + 'splb.txt';
        lxh := 23;
        Delsql := Delsql + 'PZXX_DSPLB1';
        Selsql := Selsql + 'PZXX_DSPLB1 Order By 商品类别号';
        Insql := Insql + 'PZXX_DSPLB1';
      end;
    6:
      begin {商品信息}
        FileName := FileName + 'spxx.txt';
        lxh := 24;
        Delsql := Delsql + 'PZXX_DSPXX1';
        Selsql := Selsql + 'PZXX_DSPXX1 Order By 商品号';
        Insql := Insql + 'PZXX_DSPXX1';
      end;
    7:
      begin {柜组信息}
        FileName := FileName + 'gz.txt';
        lxh := 22;
        Delsql := Delsql + 'PZXX_DGZXX1';
        Selsql := Selsql + 'PZXX_DGZXX1 Order By 柜组号';
        Insql := Insql + 'PZXX_DGZXX1';
      end;
  end;
end;

function TFrmPZ_Sjpz.OpenFile(TextFileName: string; JqNum, lxh: integer):
  Boolean;
var
  ReturnValue: integer;
begin
  Result := False;
  ReturnValue := ReadFromDll('D', Pchar(TextFileName), 0, 0, JqNum, lxh, 10,
    10);
  if ReturnValue <> -1 then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('读取收银机配置信息错误,系统无法继续工作!');
    Exit;
  end;
  if not FileExists(TextFileName) then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('文件' + TextFileName + '不存在,系统无法继续工作');
    Exit;
  end;
  Result := True;
end;

{--------------------------清除数据库中配置信息-------------------------------}

function TFrmPZ_Sjpz.EmptyPz(delsql: string): Boolean;
begin
  Result := False;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.add(delsql);
    try
      ExecSQL;
    except
      Screen.Cursor := crDefault;
      ShowMessage('删除数据库错误');
      Exit;
    end;
  end;
  Result := True;
end;
{---------------------向数据库中插入配置信息--------------------------------}

function TFrmPZ_Sjpz.InsertToDb(ItemValue: TStrings; Selsql, Insql: string):
  Boolean;
var
  s: string;
  j: integer;
begin
  Result := False;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(Selsql);
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('读取数据库失败');
      Exit;
    end;
    s := itemvalue[0];
    for j := 1 to FieldCount - 1 do
      if (Fields[j].DataType = ftstring) or (Fields[j].DataType = ftDateTime)
        then
        s := s + ',''' + itemvalue[j] + ''''
      else
        s := s + ',' + itemvalue[j];
    Close;
    Sql.Clear;
    Sql.add(Insql + ' values(' + s + ')');
    try
      ExecSQL;
    except
      //ShowMessage(s);
      Screen.Cursor := crDefault;
      ShowMessage('向数据库中插入记录失败');
      Exit;
    end;
  end;
  Result := True;
end;

{------------------调用dll文件,采集配置及流水信息-----------------------}

function TFrmPZ_Sjpz.ReadFromDll(czlx: pchar; filename1: pchar;
  WBaud: integer; Wport: smallint; Wmc: smallint; Wtype: smallint;
  Wformx: smallint; Wformy: smallint): smallint;
type
  TDllFunc = function(
    Wcommand: pchar;
    Wfname: pchar;
    WBaud: integer;
    Wport: smallint;
    Wmc: smallint;
    Wtype: smallint;
    Wformx: smallint;
    Wformy: smallint)
    : smallint; stdcall;
var
  alib: THandle;
  proc: TDllFunc;
  re: smallint;
  PathName: string;
begin
  PathName := ExtractFilePath(Application.ExeName) + 'xtinterface.dll';
  try
    alib := LoadLibrary(PChar(PathName));
    if alib = 0 then
    begin
      ShowMessage('无法打开访问收款机的函数');
      Screen.Cursor := crDefault;
      Exit;
    end;
    proc := TDllFunc(GetProcAddress(alib, PChar('XtRun')));
    if @proc = nil then
    begin
      ShowMessage('无法从收银机读取数据');
      Screen.Cursor := crDefault;
      Exit;
    end
    else
    begin
      re := proc(czlx, filename1, WBaud, Wport, Wmc, Wtype, Wformx, Wformy);
      ReadFromDll := re;
    end;
  finally
    proc := nil;
    FreeLibrary(alib);
  end;
  Screen.Cursor := crDefault;
end;

{-------------------从文件中读取配置信息----------------------------}

procedure TFrmPZ_Sjpz.Button1Click(Sender: TObject);
begin
  Button1Clicked := False;
  Panel1.Visible := True;
  if ComboBox3.Items.Count > 0 then
    ComboBox3.ItemIndex := 0;
  if ComboBox4.Items.Count > 0 then
    ComboBox4.ItemIndex := 0;
  {if not FromFileToDb(BzXx, 2) then
   ShowMessage('从收银机读入信息失败!');
   PzxxBrowse(Bzxx);
   HideField(Bzxx);
   }
end;

{------------------将数据库中信息写回配置文件----------------------}

procedure TFrmPZ_Sjpz.Button2Click(Sender: TObject);
begin
  PublicUnit.WriteToHistroy('设备配置', Now, Time, '用户《' + FrmMain.UserName +
    '》于服务器' + FrmMain.ServerName + '登陆本系统', FrmMain.UserName);
  Button1Clicked := True;
  Panel1.Visible := True;
  if ComboBox3.Items.Count > 0 then
    ComboBox3.ItemIndex := 0;
  if ComboBox4.Items.Count > 0 then
    ComboBox4.ItemIndex := 0;
  //if not FileLx(BzXx, 2) then
   // ShowMessage('更新收银机配置信息失败');
end;
{-----------------------获得数据字典名称----------------------------}

procedure TFrmPZ_Sjpz.GetDicXx(lxbz: integer; var DicName: string);
begin
  case lxbz of
    2: {收款员}
      DicName := 'Dic_密码姓名';
    4: {交易方式}
      DicName := 'Dic_交易名称';
    5: {商品类别}
      DicName := 'Dic_商品类别名称';
    6: {商品信息}
      DicName := 'Dic_商品名称';
    7: {柜组信息}
      DicName := 'Dic_柜组名称';
  end;
end;
{---------------------------生成数据字典----------------------------}

function TFrmPZ_Sjpz.GetDic(DicName: string): Boolean;
var
  TemporaryTableNames: TStrings;
begin
  Result := False;
  TemporaryTableNames := TStringList.Create;
  FrmCJ_DataModule.ADOConnection1.GetTableNames(TemporaryTableNames, False);
  if TemporaryTableNames.IndexOf(Trim(DicName)) = -1 then
  begin
    if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
      mrCancel then
      Exit;
    with FrmCJ_DataModule.ADOQuery4 do
    begin
      Close;
      Sql.Clear;
      Sql.Add('Create Table ' + DicName);
      Sql.Add('(ID varChar (10),DICTIONARY varChar (50))');
      try
        ExecSql;
      except
        ShowMessage('error');
        Exit;
      end;
    end;
  end;
  Result := True;
end;
{---------------------------生成商品类别号数据字典----------------------------}

function TFrmPZ_Sjpz.GetDic1(DicName: string): Boolean;
var
  TemporaryTableNames: TStrings;
begin
  Result := False;
  TemporaryTableNames := TStringList.Create;
  FrmCJ_DataModule.ADOConnection1.GetTableNames(TemporaryTableNames, False);
  if TemporaryTableNames.IndexOf(Trim(DicName)) = -1 then
  begin
    //if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) = mrCancel then Exit;
    with FrmCJ_DataModule.ADOQuery4 do
    begin
      Close;
      Sql.Clear;
      Sql.Add('Create Table ' + DicName);
      Sql.Add('(ID varChar (50),DICTIONARY integer)');
      try
        ExecSql;
      except
        ShowMessage('error');
        Exit;
      end;
    end;
  end;
  Result := True;
end;

{----------------------向数据字典中插入数据-------------------------------}

function TFrmPZ_Sjpz.InsertToDic(lxbz: integer; DicName: string): Boolean;
var
  selsql, mc: string;
  i: integer;
begin
  Result := False;
  if not DeleteFromDic(Trim(DicName)) then
    Exit;
  case lxbz of
    1: selsql :=
      'Select Distinct 服务员姓名,服务员编码 From PZXX_DFWY1 Order By 服务员编码';
    2: selsql :=
      'Select Distinct substring(密码姓名,5,20),收款员号 From PZXX_DSKY1 Order By 收款员号';
    4: selsql :=
      'Select Distinct 交易名称,交易号 From PZXX_DJYFS Order By 交易号';
    5: selsql :=
      'Select Distinct 商品类别名称,商品类别号 From PZXX_DSPLB1 Order By 商品类别号';
    6: selsql :=
      'Select Distinct 商品名称,商品号 From PZXX_DSPXX1 Order By 商品号';
    7: selsql :=
      'Select Distinct 柜组名称,柜组号 From PZXX_DGZXX1 Order By 柜组号';
  end;
  with FrmCJ_DataModule.ADOQuery4 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(selsql);
    try
      Open;
    except
      ShowMessage('无法打开配置信息表');
      Exit;
    end;
    if RecordCount = 0 then
      Exit;
    First;
    i := 0;
    while not Eof do
    begin
      mc := Trim(Fields[0].AsString);
      i := i + 1;
      with FrmCJ_DataModule.ADOQuery1 do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Insert Into ' + Trim(DicName) + ' values (''' + IntToStr(i) +
          ''',''' + Trim(mc) + ''')');
        try
          ExecSql;
        except
          ShowMessage('向数据字典中插入数据错误!');
          Exit;
        end;
      end;
      next;
    end;
  end;
  Result := True;
end;
{----------------------向商品类别号中插入数据-------------------------------}

function TFrmPZ_Sjpz.InsertToDic1(lxbz: integer; DicName: string): Boolean;
var
  selsql, mc: string;
  lbh: integer;
begin
  Result := False;
  if not DeleteFromDic(Trim(DicName)) then
    Exit;
  selsql :=
    'Select Distinct 商品类别名称,商品类别号 From PZXX_DSPLB1 Order By 商品类别号';
  with FrmCJ_DataModule.ADOQuery4 do
  begin
    Close;
    Sql.Clear;
    Sql.Add(selsql);
    try
      Open;
    except
      ShowMessage('无法打开配置信息表');
      Exit;
    end;
    if RecordCount = 0 then
      Exit;
    First;
    while not Eof do
    begin
      mc := Trim(Fields[0].AsString);
      lbh := StrToInt(FloatToStr((Fields[1].AsFloat - 5001)));
      with FrmCJ_DataModule.ADOQuery1 do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Insert Into ' + Trim(DicName) + ' values (''' + Trim(mc) + ''','
          + IntToStr(lbh) + ')');
        try

⌨️ 快捷键说明

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