📄 unbgdsq.pas
字号:
unit UNBGDSQ;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, Spin, Buttons, ComCtrls, ToolWin, JLOOKUPD, StdCtrls, JEdit,
ExtCtrls, Grids, DBGrids, Mask, DBCtrls, ExtDlgs, DBTables, Db, SELOOKUPD;
type
TFMBGDSQ = class(TForm)
DBGrid1: TDBGrid;
AREA_TOOL: TPanel;
BTNQUT: TBitBtn;
BTNINS: TBitBtn;
BTNUPD: TBitBtn;
BTNDEL: TBitBtn;
BTNYES: TBitBtn;
BTNCAL: TBitBtn;
Panel2: TPanel;
LBBGENO: TLabel;
LBBGNAM: TLabel;
LBBGKIN: TLabel;
LBBGPST: TLabel;
LBBGPVP: TLabel;
LBBGPMM: TLabel;
LBBGQTS: TLabel;
LBBGCOS: TLabel;
LBBSENO: TLabel;
BGENO: TJDBEdit;
BGNAM: TJDBEdit;
BGPST: TJDBEdit;
BGPVP: TJDBEdit;
BGPMM: TJDBEdit;
BGQTS: TJDBEdit;
BGCOS: TJDBEdit;
BSENO: JDBLOOKUPBOX;
LBBGPR1: TLabel;
LBBGPR2: TLabel;
LBBGPR3: TLabel;
BGPR1: TJDBEdit;
BGPR2: TJDBEdit;
BGPR3: TJDBEdit;
Label3: TLabel;
Label7: TLabel;
QBGDS: TQuery;
QBGDSBGENO: TStringField;
DSBGDS: TDataSource;
UBGDS: TUpdateSQL;
GroupBox1: TGroupBox;
LB1: TJEdit;
LB2: TJEdit;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
LB3: TJEdit;
BitBtn1: TBitBtn;
MENU_BGDS: TMainMenu;
YES1: TMenuItem;
YES21: TMenuItem;
ESC1: TMenuItem;
QUIT1: TMenuItem;
BitBtn2: TBitBtn;
LBRBCNT: TLabel;
BGQTN: TJDBEdit;
QBGDSBGNAM: TStringField;
QBGDSBGKIN: TStringField;
QBGDSBGPST: TFloatField;
QBGDSBGPVP: TFloatField;
QBGDSBGPMM: TFloatField;
QBGDSBGCST: TFloatField;
QBGDSBGOTH: TFloatField;
QBGDSBGQTS: TFloatField;
QBGDSBGQTN: TFloatField;
QBGDSBGCOS: TFloatField;
QBGDSBSENO: TStringField;
QBGDSBGCNA: TStringField;
QBGDSBGSUM: TStringField;
QBGDSBGSIN: TStringField;
QBGDSBGRUL: TStringField;
QBGDSBGGAU: TStringField;
QBGDSBGUNS: TStringField;
QBGDSBGUNP: TStringField;
QBGDSBGCLR: TStringField;
QBGDSBGCLH: TStringField;
QBGDSBGCLW: TFloatField;
QBGDSBGUNW: TStringField;
QBGDSBGUSE: TStringField;
QBGDSBGCSS: TFloatField;
QBGDSBGQTE: TFloatField;
QBGDSBGDTC: TDateTimeField;
QBGDSBGDAT: TDateTimeField;
QBGDSBGMRK: TMemoField;
QBGDSBGBSA: TStringField;
QBGDSBGBSB: TStringField;
QBGDSBGBSC: TStringField;
QBGDSBGBIA: TFloatField;
QBGDSBGBIB: TFloatField;
QBGDSBGBIC: TFloatField;
BGKIN: SEDBLOOKUPBOX;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure BTNINSClick(Sender: TObject);
procedure BTNUPDClick(Sender: TObject);
procedure BTNDELClick(Sender: TObject);
procedure BTNYESClick(Sender: TObject);
procedure BTNCALClick(Sender: TObject);
procedure BTNQUTClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure YES21Click(Sender: TObject);
procedure ESC1Click(Sender: TObject);
procedure QUIT1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
procedure BTNMODE;
procedure INSERTMODE;
procedure UPDATEMODE;
procedure NORMALMODE;
public
{ Public declarations }
FORMMODE : STRING;
end;
var
FMBGDSQ: TFMBGDSQ;
implementation
uses SYSINI, UN_UTL, FM_UTL, DB_UTL, MAIND, MAINU;
{$R *.DFM}
procedure TFMBGDSQ.BTNMODE;
begin
//一般模式
BTNINS.Enabled := FALSE;
BTNUPD.Enabled := FALSE;
BTNDEL.Enabled := FALSE;
BTNYES.Enabled := FALSE;
BTNCAL.Enabled := FALSE;
BTNQUT.Enabled := FALSE;
//新增修改模式
IF (FORMMODE = 'INS' ) or (FORMMODE = 'UPD' ) THEN
BEGIN
BTNINS.Enabled := FALSE;
BTNUPD.Enabled := FALSE;
BTNDEL.Enabled := FALSE;
BTNYES.Enabled := TRUE;
BTNCAL.Enabled := TRUE;
BTNQUT.Enabled := FALSE;
END;
//一般模式
IF (FORMMODE = 'CAN' ) THEN
BEGIN
BTNINS.Enabled := TRUE;
BTNUPD.Enabled := TRUE;
BTNDEL.Enabled := TRUE;
BTNYES.Enabled := FALSE;
BTNCAL.Enabled := FALSE;
BTNQUT.Enabled := TRUE;
END;
IF BGENO.Text = '' THEN BTNUPD.Enabled := FALSE;
IF BGENO.Text = '' THEN BTNDEL.Enabled := FALSE;
end;
procedure TFMBGDSQ.INSERTMODE;
begin
FORMMODE := 'INS';
BTNMODE;
_ORI_BGENO := QBGDS.FieldByName('BGENO').AsString;
BGENO.Enabled := TRUE;
BGNAM.Enabled := TRUE;
BGKIN.Enabled := TRUE;
BGPST.Enabled := TRUE;
BGPVP.Enabled := TRUE;
BGPMM.Enabled := TRUE;
BGPR1.Enabled := TRUE;
BGPR2.Enabled := TRUE;
BGPR3.Enabled := TRUE;
BGQTS.Enabled := TRUE;
BGCOS.Enabled := TRUE;
BSENO.Enabled := TRUE;
DBGRID1.Enabled := FALSE;
BGENO.SetFocus;
end;
procedure TFMBGDSQ.UPDATEMODE;
begin
FORMMODE := 'UPD';
BTNMODE;
_ORI_BGENO := QBGDS.FieldByName('BGENO').AsString;
IF _CHG_BGENO = TRUE THEN BGENO.Enabled := TRUE;
BGNAM.Enabled := TRUE;
BGKIN.Enabled := TRUE;
BGPST.Enabled := TRUE;
BGPVP.Enabled := TRUE;
BGPMM.Enabled := TRUE;
BGPR1.Enabled := TRUE;
BGPR2.Enabled := TRUE;
BGPR3.Enabled := TRUE;
BGQTS.Enabled := TRUE;
BGCOS.Enabled := TRUE;
BSENO.Enabled := TRUE;
DBGRID1.Enabled := FALSE;
BGNAM.SetFocus;
end;
procedure TFMBGDSQ.NORMALMODE;
begin
FORMMODE := 'CAN';
BTNMODE;
BGENO.Enabled := FALSE;
BGNAM.Enabled := FALSE;
BGKIN.Enabled := FALSE;
BGPST.Enabled := FALSE;
BGPVP.Enabled := FALSE;
BGPMM.Enabled := FALSE;
BGQTS.Enabled := FALSE;
BGCOS.Enabled := FALSE;
BSENO.Enabled := FALSE;
DBGrid1.Enabled := TRUE;
end;
procedure TFMBGDSQ.FormCreate(Sender: TObject);
begin
//可否改编号
_CHG_BGENO := FALSE;
//按钮图形加载
BTNINS.Glyph := INS_TB;
BTNUPD.Glyph := UPD_TB;
BTNDEL.Glyph := DEL_TB;
BTNYES.Glyph := YES_TB;
BTNCAL.Glyph := CAL_TB;
BTNQUT.Glyph := QUT_TB;
QBGDS.SQL.CLEAR;
QBGDS.SQL.ADD('SELECT * FROM BGDS ');
QBGDS.SQL.ADD('ORDER BY BGENO');
UBGDS.InsertSQL.CLEAR;
UBGDS.InsertSQL.Add('INSERT INTO BGDS ');
UBGDS.InsertSQL.Add(' ( BGENO, BGNAM, BGKIN, BGPST, BGPVP, BGPMM, BGQTS, BGCOS, BSENO ) ');
UBGDS.InsertSQL.Add('VALUES ');
UBGDS.InsertSQL.Add(' (:BGENO,:BGNAM,:BGKIN,:BGPST,:BGPVP,:BGPMM,:BGQTS,:BGCOS,:BSENO ) ');
UBGDS.ModifySQL.CLEAR;
UBGDS.ModifySQL.Add('UPDATE BGDS ');
UBGDS.ModifySQL.Add('SET ');
UBGDS.ModifySQL.Add('BGENO = :BGENO ,');
UBGDS.ModifySQL.Add('BGNAM = :BGNAM ,');
UBGDS.ModifySQL.Add('BGKIN = :BGKIN ,');
UBGDS.ModifySQL.Add('BGPST = :BGPST ,');
UBGDS.ModifySQL.Add('BGPVP = :BGPVP ,');
UBGDS.ModifySQL.Add('BGPMM = :BGPMM ,');
UBGDS.ModifySQL.Add('BGQTS = :BGQTS ,');
UBGDS.ModifySQL.Add('BGCOS = :BGCOS ,');
UBGDS.ModifySQL.Add('BSENO = :BSENO ');
UBGDS.ModifySQL.Add('WHERE BGENO = :OLD_BGENO');
UBGDS.DeleteSQL.CLEAR;
UBGDS.DeleteSQL.Add('DELETE FROM BGDS ');
UBGDS.DeleteSQL.Add('WHERE BGENO = :OLD_BGENO');
QBGDS.CLOSE;
QBGDS.OPEN;
NORMALMODE;
end;
procedure TFMBGDSQ.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//Form 要结束前的询问(系统事件)
CanClose := True;
IF (FORMMODE = 'INS' ) or (FORMMODE = 'UPD' ) then
BEGIN
MessageDlg('请先结束输入模式后再退出!',mtConfirmation,[mbOk],0);
CanClose := False;
END;
end;
procedure TFMBGDSQ.BTNINSClick(Sender: TObject);
begin
//试用版记录数限定
IF CHECK_DEMO_VERSION_RECCNT('BGDS') = FALSE THEN EXIT;
//检查权限============================================
IF PERMISSION_CHECK(_USER_ID, 'UNBGDSI') = FALSE THEN EXIT;
INSERTMODE;
QBGDS.APPEND;
QBGDSBGENO.VALUE := '' ;
QBGDSBGNAM.VALUE := '' ;
QBGDSBGKIN.VALUE := '' ;
QBGDSBGPST.VALUE := 0 ;
QBGDSBGPVP.VALUE := 0 ;
QBGDSBGPMM.VALUE := 0 ;
QBGDSBGQTS.VALUE := 0 ;
QBGDSBGQTN.VALUE := 0 ;
QBGDSBGCOS.VALUE := 0 ;
QBGDSBSENO.VALUE := '' ;
end;
procedure TFMBGDSQ.BTNUPDClick(Sender: TObject);
begin
//检查权限============================================
IF PERMISSION_CHECK(_USER_ID, 'UNBGDSU') = FALSE THEN EXIT;
UPDATEMODE;
QBGDS.Edit;
end;
procedure TFMBGDSQ.BTNDELClick(Sender: TObject);
begin
//检查权限============================================
IF PERMISSION_CHECK(_USER_ID, 'UNBGDSD') = FALSE THEN EXIT;
NORMALMODE;
IF MessageDlg('是否确定要删除此条记录吗?',mtWarning, [mbYes, mbNo], 0) = mrYes THEN
IF MessageDlg('如果您按下取定按钮此条记录将会被删除',mtWarning, [mbYes, mbNo], 0) = mrYes THEN
BEGIN
QBGDS.Delete;
FM_DB_QUERY_UPDATE(FMMAIND.DATABASE,QBGDS);
NORMALMODE;
END;
end;
procedure TFMBGDSQ.BTNYESClick(Sender: TObject);
VAR T_STR, T_1 : STRING;
begin
//=====================================================
IF (FORMMODE = 'INS' ) THEN
IF (UNSETREAD('SYSSET','SET_EAN13') = '1') THEN
BEGIN
//自动产生条形码=============================================
IF TRIM(BGENO.TEXT) = '' THEN
BEGIN
FMMAIND.QUERY.SQL.CLEAR;
FMMAIND.QUERY.SQL.ADD('SELECT MAX(BGENO) FROM BGDS');
FMMAIND.QUERY.SQL.ADD('WHERE BGENO LIKE ''999'+COPY_R(BSENO.TEXT,1,4)+'%''');
FMMAIND.QUERY.CLOSE;
FMMAIND.QUERY.OPEN;
T_STR := FMMAIND.QUERY.Fields.Fields[0].AsString; //暂存
T_1 := INTTOSTR(STRTOINTDEF(
COPY_R(FMMAIND.QUERY.Fields.Fields[0].AsString,2,5),0)+1);
T_STR := '999'+COPY_R(BSENO.TEXT,1,4)+REPLICATE('0',5 - LENGTH(T_1) )+ T_1;
T_STR := EAN13_ENCODE(T_STR);
Case MessageDlg('您没有输入编号, 是否改成这样的条形码?'+#10#13+T_STR,mtConfirmation,[mbYes,mbNo],0) of
mrYES : QBGDSBGENO.VALUE := T_STR;
mrNO : EXIT;
end;
END;
IF (LENGTH(BGENO.TEXT) = 12) THEN
BEGIN
IF EAN13_ENCODE(BGENO.TEXT) = '' THEN
BEGIN
SHOWMESSAGE('您产品条形码输入错误!');
BGENO.SetFocus;
BGENO.SelectAll;
EXIT;
END ELSE QBGDSBGENO.VALUE := EAN13_ENCODE(BGENO.TEXT);
END;
IF (LENGTH(BGENO.TEXT) = 13) THEN
BEGIN
IF EAN13_ENCODE(COPY(BGENO.TEXT,1,12)) <> BGENO.TEXT THEN
BEGIN
Case MessageDlg('您产品条形码输入错误!, 是否自动更新?',mtConfirmation,[mbYes,mbNo],0) of
mrYES :QBGDSBGENO.VALUE := EAN13_ENCODE(COPY(BGENO.TEXT,1,12));
end;
BGENO.SetFocus;
BGENO.SelectAll;
EXIT;
END;
END;
//IF ((LENGTH(BGENO.TEXT) < 12) OR
IF (LENGTH(BGENO.TEXT) > 13) OR
(EAN13_ENCODE(BGENO.TEXT) = '') THEN
BEGIN
SHOWMESSAGE('您产品条形码长度输入错误!');
BGENO.SetFocus; BGENO.SelectAll;
EXIT;
END;
END;
//=====================================================
//检查空白字段
IF FM_CHECK_FIELD_BLANK(BGENO .Text,LBBGENO .Caption ,LBBGENO .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGENO.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BGNAM .Text,LBBGNAM .Caption ,LBBGNAM .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGNAM.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BGKIN .Text,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGKIN.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BSENO .Text,LBBSENO .Caption ,LBBSENO .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BSENO.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BSENO .T_LABEL.TEXT ,LBBSENO .Caption ,LBBSENO .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BSENO.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BGKIN .Text,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGKIN.SetFocus ; EXIT; END;
IF FM_CHECK_FIELD_BLANK(BGKIN .T_LABEL.TEXT ,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGKIN.SetFocus ; EXIT; END;
//检查重复
IF (FORMMODE = 'INS' ) THEN
IF TABLECHECK_RE1('BGDS','BGENO',BGENO.Text) > 0 THEN
BEGIN
SHOWMESSAGE('此编号已经重复使用!'); EXIT;
END;
Case MessageDlg('是否确定存储此条记录?',mtConfirmation,[mbYes,mbNo,mbCancel],0) of
mrYES :begin
FM_DB_QUERY_POST(FMMAIND.DATABASE,QBGDS);
NORMALMODE;
end;
mrNO :begin
QBGDS.Cancel;
NORMALMODE;
end;
end;
end;
procedure TFMBGDSQ.BTNCALClick(Sender: TObject);
begin
IF MessageDlg('确定不新增本条记录?',mtConfirmation,[mbYes,mbNo],0)=mrYes THEN
BEGIN
QBGDS.Cancel;
NORMALMODE;
END;
end;
procedure TFMBGDSQ.BTNQUTClick(Sender: TObject);
begin
NORMALMODE;
CLOSE;
end;
procedure TFMBGDSQ.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FormRelease(FMBGDSQ);
end;
procedure TFMBGDSQ.YES21Click(Sender: TObject);
begin
BTNYES.Click;
end;
procedure TFMBGDSQ.ESC1Click(Sender: TObject);
begin
BTNCAL.Click;
end;
procedure TFMBGDSQ.QUIT1Click(Sender: TObject);
begin
CLOSE;
end;
procedure TFMBGDSQ.BitBtn1Click(Sender: TObject);
VAR F_NAME : array[1..10] of STRING;
begin
WITH QBGDS DO
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('SELECT * ');
SQL.ADD('FROM BGDS');
SQL.ADD('WHERE BGENO IS NOT NULL');
F_NAME[1] := 'BGENO';
F_NAME[2] := 'BGNAM';
F_NAME[3] := 'BGID1';
//字符串查询
SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[1],LB1.Text,''));
SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[2],LB3.Text,''));
SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[3],LB2.Text,''));
OPEN;
END;
end;
procedure TFMBGDSQ.BitBtn2Click(Sender: TObject);
begin
LB1.Clear;
LB2.Clear;
LB3.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -