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

📄 lcitem_unit.~pas

📁 餐营的数据核算,模拟入库,出库,库存.对餐营的流程详细叙述
💻 ~PAS
字号:
unit LCITEM_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEh, ImgList, DBLookupEh, StdCtrls, DBCtrls, DBCtrlsEh,
  Mask, Buttons, Tabenter, Grids, ComCtrls, ToolWin, ExtCtrls,db,
  TFlatButtonUnit, TFlatPanelUnit, ADODB;

type
    TarrChar=array of char;

  TLCITEM_Form = class(TForm)
    Splitter1: TSplitter;
    ToolBar1: TToolBar;
    tbbtnPrint: TToolButton;
    ToolButton3: TToolButton;
    tbbtnNewBill: TToolButton;
    tbbtnDeleteBill: TToolButton;
    tbbtnCommit: TToolButton;
    tbbtnRollback: TToolButton;
    ToolButton11: TToolButton;
    tbbtnPrior: TToolButton;
    ToolButton4: TToolButton;
    tbbtnNext: TToolButton;
    tbbtnLast: TToolButton;
    ToolButton5: TToolButton;
    tbbtnFirst: TToolButton;
    ToolButton23: TToolButton;
    tbbtnSearch: TToolButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGridEh1: TDBGridEh;
    PageControl2: TPageControl;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label3: TLabel;
    kEnterAsTab1: TkEnterAsTab;
    DBEditEh1: TDBEditEh;
    DBEditEh2: TDBEditEh;
    DBNumberEditEh1: TDBNumberEditEh;
    DBMemo1: TDBMemo;
    DBLookupComboboxEh1: TDBLookupComboboxEh;
    DBLookupComboboxEh2: TDBLookupComboboxEh;
    ilSmall: TImageList;
    Label5: TLabel;
    DBEditEh3: TDBEditEh;
    Label8: TLabel;
    DBNumberEditEh2: TDBNumberEditEh;
    FlatPanel1: TFlatPanel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    FlatButton1: TFlatButton;
    FlatButton2: TFlatButton;
    Label12: TLabel;
    Label13: TLabel;
    DBEditEh4: TDBEditEh;
    DBEditEh5: TDBEditEh;
    ToolButton1: TToolButton;
    Label14: TLabel;
    DBEditEh6: TDBEditEh;
    XCQry: TADOQuery;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure tbbtnNewBillClick(Sender: TObject);
    procedure tbbtnDeleteBillClick(Sender: TObject);
    procedure tbbtnCommitClick(Sender: TObject);
    procedure tbbtnRollbackClick(Sender: TObject);
    procedure tbbtnPriorClick(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure tbbtnNextClick(Sender: TObject);
    procedure tbbtnLastClick(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure tbbtnFirstClick(Sender: TObject);
    procedure tbbtnSearchClick(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);
    procedure tbbtnPrintClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    function BS(M:integer):integer;
    function MyIntToHex(aNum, aLength: Integer): TarrChar;
    { Public declarations }
  end;

var
  LCITEM_Form: TLCITEM_Form;

implementation

uses DMUnit, RPTUnit, U_CheckRights, MainUnit;

{$R *.dfm}

function TLCITEM_Form.BS(M: integer): integer;
begin
  if M=0 then
  begin
    DBEditEh1.Enabled:=True;
    DBEditEh2.Enabled:=True;
    DBEditEh3.Enabled:=True;
    DBEditEh4.Enabled:=True;
    DBEditEh5.Enabled:=True;
    DBNumberEditEh1.Enabled:=True;
    DBNumberEditEh2.Enabled:=True;
    DBLookupComboboxEh1.Enabled:=True;
    DBLookupComboboxEh2.Enabled:=True;
    DBMemo1.Enabled:=True;
    DBEditEh6.Enabled:=True;
  end;
  if M=1 then
  begin
    DBEditEh1.Enabled:=false;
    DBEditEh2.Enabled:=false;
    DBEditEh3.Enabled:=false;
    DBEditEh4.Enabled:=false;
    DBEditEh5.Enabled:=false;
    DBNumberEditEh1.Enabled:=false;
    DBNumberEditEh2.Enabled:=false;
    DBLookupComboboxEh1.Enabled:=false;
    DBLookupComboboxEh2.Enabled:=false;
    DBMemo1.Enabled:=false;
    DBEditEh6.Enabled:=false;
  end;
end;

procedure TLCITEM_Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Action:=cafree;
end;

procedure TLCITEM_Form.FormDestroy(Sender: TObject);
begin
LCITEM_Form:=nil;
end;

procedure TLCITEM_Form.FormCreate(Sender: TObject);
begin
  with DM.UNIT_ADOQ do
  begin
    Close;
    OPen;
  end;
  with DM.SORT_ADOQ do
  begin
    Close;
    Open;
  end;
  with DM.LCITEM_ADOQ do
  begin
    Close;
    OPen;
  end;
end;

procedure TLCITEM_Form.tbbtnNewBillClick(Sender: TObject);
begin
  DM.LCITEM_ADOQ.First;
end;

procedure TLCITEM_Form.tbbtnDeleteBillClick(Sender: TObject);
begin
  DM.LCITEM_ADOQ.Prior;
end;

procedure TLCITEM_Form.tbbtnCommitClick(Sender: TObject);
begin
  DM.LCITEM_ADOQ.Next;
end;

procedure TLCITEM_Form.tbbtnRollbackClick(Sender: TObject);
begin
  DM.LCITEM_ADOQ.Last;
end;

procedure TLCITEM_Form.tbbtnPriorClick(Sender: TObject);
begin
  if DM.LCITEM_ADOQ.State in [DSBROWSE] then
     DM.LCITEM_ADOQ.Append;
     BS(0);
     DBEditEh1.SetFocus;
end;

procedure TLCITEM_Form.ToolButton4Click(Sender: TObject);
begin
  if DM.LCITEM_ADOQ.RecordCount<=0 then Exit;
  if DM.LCITEM_ADOQ.State in [DSBROWSE] then
     DM.LCITEM_ADOQ.Edit;
     BS(0);
     DBEditEh1.SetFocus;
end;

procedure TLCITEM_Form.tbbtnNextClick(Sender: TObject);
begin
  if DM.LCITEM_ADOQ.RecordCount<=0 then Exit;
  if Application.MessageBox('是否确认删除该产品信息?', '提示',
     MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDYES then
     DM.LCITEM_ADOQ.Delete;
end;

procedure TLCITEM_Form.tbbtnLastClick(Sender: TObject);
begin
  if (Trim(DBEditEh1.Text)='') or (Trim(DBEditEh2.Text)='') then Exit;
  if DM.LCITEM_ADOQ.State in [DSINSERT,DSEDIT] then
     DM.LCITEM_ADOQ.Post;
     BS(1);
end;

procedure TLCITEM_Form.ToolButton5Click(Sender: TObject);
begin
  DM.LCITEM_ADOQ.Cancel;
  BS(1);
end;

procedure TLCITEM_Form.tbbtnFirstClick(Sender: TObject);
begin
  with DM.LCITEM_ADOQ do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM LCITEM_ITEM');
    Open;
  end;
end;

procedure TLCITEM_Form.tbbtnSearchClick(Sender: TObject);
begin
  Close;
end;

procedure TLCITEM_Form.FlatButton1Click(Sender: TObject);
var
  S:String;           //查询
begin
  S:='SELECT * FROM LCITEM_ITEM WHERE 2>1';
  if Trim(Edit1.Text)<>'' then
    S:=S+' AND ITEM_NO='''+Edit1.Text+'''';
  if Trim(Edit2.Text)<>'' then
    S:=S+' AND ITEM_NAME='''+Edit2.Text+'''';
  if Trim(Edit3.Text)<>'' then
    S:=S+' AND ITEM_MARKS='''+Edit3.Text+'''';
  with DM.LCITEM_ADOQ do
  begin
    Close;
    SQL.Clear;
    SQL.Add(S);
    Open;
  end;
end;

procedure TLCITEM_Form.FlatButton2Click(Sender: TObject);
begin
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
end;

procedure TLCITEM_Form.tbbtnPrintClick(Sender: TObject);
begin
  RPTDM.LCITEM_Rpt.LoadFromFile(ExtractFilePath(ParamStr(0)) +   'RPT/列车产品基础信息.frf');
  RPTDM.LCITEM_Rpt.ShowReport;
end;

procedure TLCITEM_Form.FormShow(Sender: TObject);
begin
  tbbtnPrint.Enabled:=CheckRights('列车产品基础信息','打印');
  tbbtnNewBill.Enabled:=CheckRights('列车产品基础信息','最头');
  tbbtnDeleteBill.Enabled:=CheckRights('列车产品基础信息','上一条');
  tbbtnCommit.Enabled:=CheckRights('列车产品基础信息','下一条');
  tbbtnRollback.Enabled:=CheckRights('列车产品基础信息','最后');
  tbbtnPrior.Enabled:=CheckRights('列车产品基础信息','新建');
  ToolButton4.Enabled:=CheckRights('列车产品基础信息','修改');
  tbbtnNext.Enabled:=CheckRights('列车产品基础信息','删除');
  tbbtnLast.Enabled:=CheckRights('列车产品基础信息','保存');
  ToolButton5.Enabled:=CheckRights('列车产品基础信息','撤消');
  tbbtnFirst.Enabled:=CheckRights('列车产品基础信息','刷新');
end;

procedure TLCITEM_Form.ToolButton1Click(Sender: TObject);
var
 i:integer;
 S:string;
 //定义变量
 SJDM,ITEM_XH,ITEM_NO,ITEM_NAME,ITEM_UNIT,ITEM_SORT,ITEM_PLIAO,ITEM_FLIAO:string;
 Item:array [0..99999] of char;
 ITEM_PRICE,ITEM_NUM:TarrChar;
 Index,j:Integer;
 M:integer;
 H:string;
begin
  for i:=0 to 99999 do
    item[i]:=char(0);
    Index:=0;
  if Trim(Edit3.Text)='' then
  begin
    ShowMessage('请先查询再下传数据!');
    Exit;
  end;

  Result:=POS_Comm_Start(1);
  if Result=0 then
    ShowMessage('通讯成功')
  else
  begin
    ShowMessage(' 通讯失败'+inttostr(Result));
    Exit;
  end;

  With XCQRy do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT COUNT(*) FROM LCITEM_ITEM WHERE ITEM_MARKS='''+Edit3.Text+'''');
    open;
  end;
  M:=XCQry.Fields[0].AsInteger;
  ITEM_NUM:=MyIntToHex(M,2);
  S:='';

  H:='SELECT LC.ITEM_XH,LC.ITEM_NO,LC.ITEM_NAME,IU.NUIT_NAME,LC.ITEM_PRICE,S.SORTNAME,LC.ITEM_PLIAO,'+
    ' LC.ITEM_FLIAO FROM LCITEM_ITEM LC LEFT JOIN ITEM_SORT S ON LC.ITEM_SORT=S.SORTID'+
    ' LEFT JOIN ITEM_UNIT IU ON IU.NUIT_ID=LC.ITEM_UNIT ';
  H:=H+' where ITEM_MARKS='''+Edit3.text+'''';
  with XCQRY do
  begin
    Close;
    SQL.Clear;
    SQL.Add(H);
    OPen;
  end;
  Try
    SJDM:='A002';
    S:=S+SJDM;
    Item[0]:=#0;
    index:=1;
    for j:=index to length(S) do
    Item[j]:=char(S[j]);
    index:=j;
    s:='';
    for j:=index to index+length(ITEM_NUM)-1 do
    Item[j]:=char(ITEM_NUM[j-Index]);
    index:=j;

    XCQry.First;
    while not XCQry.Eof do
    begin
      ITEM_XH:=XCQry.Fields[0].AsString;
      ITEM_XH:=MainForm.FillSpace(ITEM_XH,9);//序号

      ITEM_NO:=XCQry.Fields[1].AsString;
      ITEM_NO:=MainForm.FillSpace(ITEM_NO,6);//产品编号

      ITEM_NAME:=XCQry.Fields[2].AsString;
      ITEM_NAME:=MainForm.FillSpace(ITEM_NAME,20);//产品名称

      ITEM_UNIT:=XCQry.Fields[3].AsString;
      ITEM_UNIT:=MainForm.FillSpace(ITEM_UNIT,6);//单位

      ITEM_PRICE:=nil;
      ITEM_PRICE:=MyIntToHex(round(XCQry.Fields[4].asCurrency*100),2);//单价

      ITEM_SORT:=XCQry.Fields[5].AsString;
      ITEM_SORT:=MainForm.FillSpace(ITEM_SORT,6);//类别

      ITEM_PLIAO:=XCQry.Fields[6].AsString;
      ITEM_PLIAO:=MainForm.FillSpace(ITEM_PLIAO,20); //主料

      ITEM_FLIAO:=XCQry.Fields[7].AsString;
      ITEM_FLIAO:=MainForm.FillSpace(ITEM_FLIAO,30); //副料

      S:=ITEM_XH+ITEM_NO+ITEM_NAME+ITEM_UNIT;
      for j:=index to index+length(S)-1 do
      Item[j]:=char(S[j-Index+1]);
      index:=j;
      s:='';

      for j:=index to index+length(ITEM_PRICE)-1  do
      Item[j]:=char(ITEM_PRICE[j-Index]);
      index:=j;

      s:=ITEM_SORT+ITEM_PLIAO+ITEM_FLIAO;
      for j:=index to index+length(S)-1   do
      Item[j]:=char(S[j-Index+1]);
      index:=j;
      s:='';
     XCQry.next;
   end;

   ITEM_PRICE:=nil;
   ITEM_NUM:=nil;
   Result:=1;
   Result:=POS_DownLoad_Data(2,@Item[1],index-1);
   if Result=0 then
   begin
     ShowMessage('产品信息数据下传成功!');
     POS_Comm_End();
   end
   else
   begin
     ShowMessage('产品信息数据下传失败!');
     Exit;
   end;
  Except

  end;
end;

function TLCITEM_Form.MyIntToHex(aNum, aLength: Integer): TarrChar;
var
  s:string;
  i:Integer;
begin
  setLength(Result,aLength);
  s:= inttoHex(aNum,aLength*2);
  for i:=0 to aLength-1 do
  begin
    Result[i]:=chr(strToInt('$'+copy(s,i*2+1,2)));
  end;
end;

end.

⌨️ 快捷键说明

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