📄 pz_sjpz.pas
字号:
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 + -