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

📄 pdunt.pas

📁 牧羊人服饰系统 (ADO+SQL) 第三方控件:advstringgrid
💻 PAS
字号:
unit pdunt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DBGrids, Grids, BaseGrid, AdvGrid, DB;

type
  Tpdfrm = class(TForm)
    GroupBox1: TGroupBox;
    AdvStringGrid1: TAdvStringGrid;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    AdvStringGrid2: TAdvStringGrid;
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Label1: TLabel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    AdvStringGrid3: TAdvStringGrid;
    BitBtn5: TBitBtn;
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  pdfrm: Tpdfrm;

implementation
 uses data,datam,maind;
{$R *.dfm}
var
 kcno:integer;
procedure Tpdfrm.BitBtn2Click(Sender: TObject);
var
 i:integer;
begin
  with  dataman.kcQuery do
   begin
   close;
   sql.Clear;
   sql.Add('select 货物条形码,库存数量 from kc');
   prepared;
   open;
   end;
   advstringgrid3.RowCount:=dataman.kcQuery.RecordCount+1;
   for i:=1 to advstringgrid3.RowCount do
      advstringgrid3.Cells[0,i]:=inttostr(i);
   i:=1;
   dataman.kcQuery.First;
   while not dataman.kcQuery.Eof do
    begin
     advstringgrid3.Cells[1,i]:=trim(dataman.kcQuery.Fields[0].Value);
     advstringgrid3.Cells[2,i]:=trim(dataman.kcQuery.Fields[1].asstring);
     dataman.kcQuery.Next;
     inc(i);
    end;
end;

procedure Tpdfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;

procedure Tpdfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
  if trim(edit1.Text)='' then exit;
  if length(trim(edit1.Text))<>15 then
   begin
    showmessage(edit1.text+'不是15位');
    edit1.SetFocus;
   end;
end;

procedure Tpdfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 i:integer;
begin
  if trim(edit1.Text)='' then exit;
  if not (key in ['0'..'9',#8,#39,#13]) then key:=#0;
  if key=#13 then
    begin
       for i:=1  to advstringgrid1.RowCount do
        begin
         if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
           begin
            advstringgrid1.Cells[2,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i]))+1);
            edit1.Text:='';
            edit1.SetFocus;
            break;
            exit;
           end;
         end;
       for i:=advstringgrid1.RowCount  downto 1 do
        begin
          if trim(edit1.Text)<>trim(advstringgrid1.cells[1,i]) then
           begin
            advstringgrid1.Cells[0,kcno]:=inttostr(kcno);
            advstringgrid1.Cells[1,kcno]:=trim(edit1.Text);
            advstringgrid1.Cells[2,kcno]:='1';
            kcno:=kcno+1;
            advstringgrid1.RowCount:=kcno;
            edit1.Text:='';
            edit1.SetFocus;
            break;
            exit;
          end;
          break;
       end;
     end;
end;

procedure Tpdfrm.FormActivate(Sender: TObject);
begin
  advstringgrid1.Cells[1,0]:='货物条形码';
  advstringgrid1.Cells[2,0]:='数量';
  advstringgrid2.Cells[1,0]:='货物条形码';
  advstringgrid2.Cells[2,0]:='数量';
  advstringgrid3.Cells[1,0]:='货物条形码';
  advstringgrid3.Cells[2,0]:='数量';
  edit1.Text:='';
  kcno:=1;
end;

procedure Tpdfrm.BitBtn4Click(Sender: TObject);
begin
close;
end;

procedure Tpdfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
pdfrm:=nil;
pdfrm.Free;
end;

procedure Tpdfrm.BitBtn1Click(Sender: TObject);
var
 i,j,m:integer;
 tagget:boolean;
begin
    m:=1;
    if trim(advstringgrid1.Cells[1,1])='' then exit;
    try
   for  i:=1 to advstringgrid1.RowCount   do
       for  j:=advstringgrid3.RowCount-1 downto 1  do
        begin
          if (trim(advstringgrid1.Cells[1,i])=trim(advstringgrid3.Cells[1,j])) AND  (trim(advstringgrid1.Cells[2,i])<>trim(advstringgrid3.Cells[2,j])) then
             begin
             //实盘数与库存数不一致的情况
              advstringgrid2.Cells[0,m]:=inttostr(m);
              advstringgrid2.Cells[1,m]:=trim(advstringgrid1.Cells[1,i]);
              advstringgrid2.Cells[2,m]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i]))-strtointdef(trim(advstringgrid3.Cells[2,j]),0));
              inc(m);
              advstringgrid2.RowCount:=m;
              break;
            end;
        end;
        //库存有但盘点时没有的情况
        tag:=0;
      for  j:=1 to advstringgrid3.RowCount-1 do
       begin
         for  i:=1 to advstringgrid1.RowCount do
           begin
           if trim(advstringgrid3.Cells[1,j])=trim(advstringgrid1.Cells[1,i]) then
            begin
             tag:=1;
             break;
            end;
           end;
           if tag=0 then
             begin
              advstringgrid2.Cells[0,m]:=inttostr(m);
              advstringgrid2.Cells[1,m]:=trim(advstringgrid3.Cells[1,j]);
              advstringgrid2.Cells[2,m]:=inttostr(-strtoint(trim(advstringgrid3.Cells[2,j])));
              inc(m);
              advstringgrid2.RowCount:=m;
             end;
             tag:=0;
          end;
      //盘点有但库存没有
       tagget:=false;
      for  i:=1 to advstringgrid1.RowCount-1 do
       begin
         for  j:=1 to advstringgrid3.RowCount do
           begin
           if trim(advstringgrid1.Cells[1,i])=trim(advstringgrid3.Cells[1,j]) then
            begin
             tagget:=true;
             break;
            end;
           end;
           if tagget=false then
             begin
              advstringgrid2.Cells[0,m]:=inttostr(m);
              advstringgrid2.Cells[1,m]:=trim(advstringgrid1.Cells[1,i]);
              advstringgrid2.Cells[2,m]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i])));
              inc(m);
              advstringgrid2.RowCount:=m;
             end;
             tagget:=false;
          end;

    except
    showmessage('盘点失败');
    end;
end;

procedure Tpdfrm.BitBtn5Click(Sender: TObject);
var
  n:integer;
begin
 if trim(advstringgrid2.Cells[1,1])='' then exit; 
 try
  dataman.ADOCon.BeginTrans;
  with dataman.kcQuery do
  begin
   close;
  for n:=1 to advstringgrid2.RowCount do
   begin
   if advstringgrid2.Cells[1,n]='' then break;
   sql.Clear;
   sql.Add('update kc set 库存数量=库存数量+:sl');
   sql.Add('where 货物条形码=:tx');
   parameters.ParamByName('tx').Value:=trim(advstringgrid2.Cells[1,n]);
   parameters.ParamByName('sl').Value:=strtoint(trim(advstringgrid2.Cells[2,n]));
   execsql;
   end;
  end;
   dataman.ADOCon.CommitTrans;
   showmessage('盘点存盘成功!');
  except
   begin
   dataman.ADOCon.RollbackTrans;
   showmessage('盘点存盘失败!');
   end;
  end;

end;

procedure Tpdfrm.BitBtn3Click(Sender: TObject);
var
kd:textfile;
kcFile,kcqk,shpname:string;
l:integer;
begin
    try
       kcFile:=ExtractFilePath(Application.ExeName)+'kc.txt';
       AssignFile(kd,kcFile);
       Rewrite(kd);
       write(kd,chr(27)+chr(64));
       shpname:=stringofchar(' ',(32-Length(ini_load_shopname('打印参数','和祥店')))div 2)+ini_load_shopname('打印参数','和祥店');
       write(kd,shpname+chr(10));
       kcqk:=stringOfChar(' ',(32-Length('牧羊人服饰'+formatdatetime('yyyy"年"mm"月"',date)+'盘亏/盘盈清单')) div 2)+'牧羊人服饰'+formatdatetime('yyyy"年"mm"月"',date)+'盘亏/盘盈清单';
       write(kd,kcqk+chr(10));
       writeln(kd,'--------------------------------');
               //  12345678901234567890123456789012
         write(kd,'商品条形码           库存数量   '+chr(10));
         write(kd,'--------------------------------');
           for l:=1 to advstringgrid2.RowCount do
           begin
            if trim(advstringgrid2.Cells[1,l])='' then break;
            write(kd,trim(advstringgrid2.Cells[1,l]):15);
            write(kd,trim(advstringgrid2.Cells[2,l]):10);
            write(kd,chr(10));
          end;
            Writeln(kd,'              ');
            write(kd,'-------------------------------');
            Writeln(kd,'              ');
            Writeln(kd,'              ');
            Writeln(kd,'              ');
            Writeln(kd,'              ');
            Writeln(kd,'              ');
            Writeln(kd,'              ');
            CloseFile(kd);
            PrintFile(kcFile);
    except
     abort;
    end;

end;

end.

⌨️ 快捷键说明

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