📄 pz_sjpz.pas
字号:
ExecSql;
except
ShowMessage('向数据字典中插入数据错误!');
Exit;
end;
end;
next;
end;
end;
Result := True;
end;
{------------------删除数据字典中的相同记录------------------------}
function TFrmPZ_Sjpz.DeleteFromDic(DicName: string): Boolean;
begin
Result := False;
with FrmCJ_DataModule.ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add('Delete From ' + DicName);
try
ExecSql;
except
ShowMessage('无法清空数据字典中数据');
Exit;
end;
end;
Result := True;
end;
procedure TFrmPZ_Sjpz.Button4Click(Sender: TObject);
begin
PzxxBrowse(Bzxx);
HideField(Bzxx);
end;
procedure TFrmPZ_Sjpz.DBGrid2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((Key = VK_UP) or (Key = VK_DOWN)) then
TDBRecordNumber(sender);
if Key = VK_RETURN then
begin
if DBGrid2.SelectedIndex = DBGrid2.Columns.Count - 1 then
begin
DBGrid2.SelectedIndex := 0;
if DBGrid2.DataSource.DataSet <> nil then
with DBGrid2.DataSource.DataSet do
begin
Next;
if EOF and CanModify then
Append;
end;
end
else
DBGrid2.SelectedIndex := DBGrid2.SelectedIndex + 1;
end;
end;
procedure TFrmPZ_Sjpz.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
TDBRecordNumber(Sender);
//if (Button=nbInsert) or (Button=nbInsert) then SzCheckRule;
SzCheckRule;
end;
procedure TFrmPZ_Sjpz.SzCheckRule;
begin
with FrmCJ_DataModule.ADOQuery3 do
case BzXx of
1: FieldByName('服务员编码').EditMask := '2000';
2: FieldByName('收款员号').EditMask := '3000';
3: FieldByName('折扣号').EditMask := '500';
4: FieldByName('交易号').EditMask := '900';
5: FieldByName('商品类别号').EditMask := '5000';
6: FieldByName('商品号').EditMask := '10000';
end;
DBGrid2.Fields[0].FocusControl;
end;
procedure TFrmPZ_Sjpz.DBGrid2CellClick(Column: TColumn);
begin
TDBRecordNumber(Self);
end;
procedure TFrmPZ_Sjpz.Button5Click(Sender: TObject);
begin
if MessageDlg('此操作将会清除数据库中的'+BZName+'配置信息,是否继续?',
mtconfirmation, mbokcancel, 0) = mrcancel then
Exit;
EmptyPzXx(BzXx);
Button4Click(Self);
end;
procedure TFrmPZ_Sjpz.Button6Click(Sender: TObject);
var
DicName: string;
begin
if BzXx = 3 then
Exit;
if BzXx = 1 then
begin
if not GetDic('Dic_服务员姓名') then
Exit;
if not InsertToDic(1, 'Dic_服务员姓名') then
Exit;
if not GetDic('DIC_部门负责人') then
Exit;
if not InsertToDic(1, 'DIC_部门负责人') then
Exit;
if not GetDic('DIC_送餐员') then
Exit;
if not InsertToDic(1, 'DIC_送餐员') then
Exit;
end
else if BzXx = 5 then
begin
if not GetDic('Dic_商品类别名称') then
Exit;
if not InsertToDic(5, 'Dic_商品类别名称') then
Exit;
if not GetDic1('Dic_商品类别号1') then
Exit;
if not InsertToDic1(5, 'Dic_商品类别号1') then
Exit;
end
else
begin
GetDicXx(BzXx, DicName);
if not GetDic(DicName) then
Exit;
if not InsertToDic(BzXx, DicName) then
Exit;
end;
ShowMessage('与' + BzName + '名称有关的数据字典创建成功!')
end;
procedure TFrmPZ_Sjpz.DBGrid2DblClick(Sender: TObject);
var
ADataSet: TDataSet;
Rq: TDate;
DictionaryTableName, AFieldName1: string;
TemporaryTableNames: TStrings;
DI_DfmDBDictionery: TDI_DfmDBDictionery;
begin
ADataSet := TDBGrid(Sender).DataSource.DataSet;
if not (ADataSet.State in [dsEdit, dsInsert]) then
Exit;
if DBGrid2.SelectedField.FieldName = '密码姓名' then
Exit;
if (Bzxx = 3) and (DBGrid2.SelectedField.FieldName = '选项2') then
Exit;
if (Bzxx = 5) and (DBGrid2.SelectedField.FieldName = '随机号') then
Exit;
//if (Bzxx=5) and (DBGrid2.SelectedField.FieldName='选项2') then Exit;
if (Bzxx = 6) and (DBGrid2.SelectedField.FieldName = '商品类别号') then
begin
if not GetSplbhDic then
Exit;
Exit;
end;
//if DBGrid2.SelectedField.DataType in [ftString, ftWideString]=False then Exit;
//创建字符数据字典
if DBGrid2.SelectedField.DataType in [ftString, ftWideString] then
begin
DI_DfmDataModule1.AnotherDBADOConnection.Close;
DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
+
';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
False);
DictionaryTableName := 'Dic_' + DBGrid2.SelectedField.FieldName;
if TemporaryTableNames.IndexOf(DictionaryTableName) = -1 then
begin
if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
mrCancel then
Exit;
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ' + DictionaryTableName);
Sql.Add('(ID varChar (10),DICTIONARY varChar(' +
IntToStr(DBGrid2.SelectedField.Size) + ') not null Primary Key)');
try
ExecSql;
except
ShowMessage('error');
Exit;
end;
end;
end;
DBGrid2.SelectedField.ReadOnly := False;
DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DictionaryTableName,
DBGrid2, nil, 'DBGrid');
DI_DfmDBDictionery.ShowModal;
DBGrid2.SelectedField.ReadOnly := True;
DI_DfmDBDictionery.Free;
TemporaryTableNames.Free;
end;
//创建数字型数据字典
if (DBGrid2.SelectedField.DataType in [ftSmallint, ftInteger]) or
(DBGrid2.SelectedField.FieldName = '商品号') then
begin
DI_DfmDataModule1.AnotherDBADOConnection.Close;
DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
+
';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
False);
DictionaryTableName := 'Dic_' + DBGrid2.SelectedField.FieldName;
if TemporaryTableNames.IndexOf(DictionaryTableName) = -1 then
begin
if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
mrCancel then
Exit;
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ' + DictionaryTableName);
Sql.Add('(ID varChar (10),DICTIONARY integer not null Primary Key)');
try
ExecSql;
except
ShowMessage('error');
Exit;
end;
end;
end;
if (Bzxx = 6) and (DBGrid2.SelectedField.FieldName = '商品号') then
begin
GetDmDic(DBGrid2.SelectedField.FieldName, Bzxx);
Exit;
end;
AFieldName1 := Trim(DBGrid2.SelectedField.FieldName);
if (AFieldName1 = '商品类别号') or (AFieldName1 = '服务员编码') or
(AFieldName1 = '收款员号') or (AFieldName1 = '折扣号') or (AFieldName1 =
'交易号') then
begin
GetDmDic(AFieldName1, Bzxx);
Exit;
end;
DBGrid2.SelectedField.ReadOnly := False;
DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DictionaryTableName,
DBGrid2, nil, 'DBGrid');
DI_DfmDBDictionery.ShowModal;
DBGrid2.SelectedField.ReadOnly := True;
DI_DfmDBDictionery.Free;
TemporaryTableNames.Free;
end;
//创建浮点型字典=================================
if DBGrid2.SelectedField.DataType in [ftFloat] then
begin
DI_DfmDataModule1.AnotherDBADOConnection.Close;
DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
+
';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
False);
DictionaryTableName := 'Dic_' + DBGrid2.SelectedField.FieldName;
if TemporaryTableNames.IndexOf(DictionaryTableName) = -1 then
begin
if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
mrCancel then
Exit;
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ' + DictionaryTableName);
Sql.Add('(ID varChar (10),DICTIONARY float not null Primary Key)');
try
ExecSql;
except
ShowMessage('error');
Exit;
end;
end;
end;
DBGrid2.SelectedField.ReadOnly := False;
DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DictionaryTableName,
DBGrid2, nil, 'DBGrid');
DI_DfmDBDictionery.ShowModal;
DBGrid2.SelectedField.ReadOnly := True;
DI_DfmDBDictionery.Free;
TemporaryTableNames.Free;
end;
//创建日期字典==================
if DBGrid2.SelectedField.DataType in [ftDate, ftTime, ftDateTime] then
begin
{DI_DfmDBCalendar := TDI_DfmDBCalendar.Create(Self, DBGrid2,
nil, 'DBGrid');
DBGrid2.SelectedField.ReadOnly := False;
DI_DfmDBCalendar.ShowModal;
DBGrid2.SelectedField.ReadOnly := True;
DI_DfmDBCalendar.Free;}
DBGrid2.SelectedField.ReadOnly := False;
PZ_RqXz.SetWork(Rq);
DBGrid2.SelectedField.AsDateTime := Rq;
DBGrid2.SelectedField.ReadOnly := True;
end;
end;
procedure TFrmPZ_Sjpz.SzGroup(Bzxx: integer);
var
ss: TStrings;
begin
ss := TStringList.Create;
ss.Add('打折');
ss.Add('不打折');
DBGrid2.Columns[Bzxx].ButtonStyle := cbsAuto;
DBGrid2.Columns[Bzxx].PickList := ss;
ss.Free;
end;
function TFrmPZ_Sjpz.GetSplbhDic: Boolean;
begin
Result := False;
if not PZ_SpdhDic.SetWork(DBGrid2) then
Exit;
Result := True;
end;
function TFrmPZ_Sjpz.GetDmDic(AFieldName: string; lxh: integer): Boolean;
var
dm: string;
begin
Result := False;
if not PZ_DmDic.SetWork(AFieldName, dm, lxh, '', '') then
Exit;
DBGrid2.Columns[0].ReadOnly := False;
DBGrid2.Columns[1].ReadOnly := False;
if lxh = 6 then
DBGrid2.Fields[0].AsFloat := StrToFloat(dm)
else
DBGrid2.Fields[0].AsInteger := StrToInt(dm);
if lxh = 6 then
begin
//DBGrid2.Fields[1].AsString := IntToStr(StrToInt(dm) - 10000);
//DBGrid2.Columns[1].ReadOnly := True;
end;
DBGrid2.Columns[0].ReadOnly := True;
Result := True;
end;
procedure TFrmPZ_Sjpz.SzRead(Bzxx: integer);
begin
DBGrid2.Columns[0].ReadOnly := True;
DBGrid2.Columns[1].ReadOnly := True;
case Bzxx of
2: DBGrid2.Columns[1].ReadOnly := False;
3:
begin
DBGrid2.Columns[6].ReadOnly := True;
DBGrid2.Columns[7].ReadOnly := True;
end;
5: DBGrid2.Columns[1].ReadOnly := False;
6:
begin
DBGrid2.Columns[2].ReadOnly := True;
DBGrid2.Columns[3].ReadOnly := True;
end;
end;
end;
procedure TFrmPZ_Sjpz.ToolButton4Click(Sender: TObject);
begin
Close;
end;
procedure TFrmPZ_Sjpz.Label1Click(Sender: TObject);
var
Jqh, Jqh1, i: integer;
begin
if Trim(ComboBox3.Text) > Trim(ComboBox4.Text) then
begin
ShowMessage('起始机器号不能超过终止机器号!');
Exit;
end;
Jqh := StrToInt(Trim(ComboBox3.Text));
Jqh1 := StrToInt(Trim(ComboBox4.Text));
Panel1.Visible := False;
if not Button1Clicked then
begin
if not FromFileToDb(BzXx, Jqh) then
ShowMessage('从收银机读入信息失败!');
PzxxBrowse(Bzxx);
HideField(Bzxx);
end
else
for i := Jqh to Jqh1 do
if not FileLx(BzXx, i) then
ShowMessage('更新' + IntToStr(i) + '号收银机配置信息失败')
else
ShowMessage('更新' + IntToStr(i) + '号收银机配置信息成功!');
end;
procedure TFrmPZ_Sjpz.IniJqList;
var
ti: TInifile;
JqCount, i: integer;
begin
ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
JqCount := ti.ReadInteger('默认选项', 'MaxJqCount', 9);
ComboBox3.Clear;
ComboBox4.Clear;
for i := 1 to JqCount do
begin
ComboBox3.Items.Add(IntToStr(i));
ComboBox4.Items.Add(IntToStr(i));
end;
if ComboBox3.Items.Count > 0 then
ComboBox3.ItemIndex := 0;
if ComboBox4.Items.Count > 0 then
ComboBox4.ItemIndex := 0;
end;
procedure TFrmPZ_Sjpz.Label8Click(Sender: TObject);
begin
Panel1.Visible := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -