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

📄 bookin.pas

📁 本图书管理系统一sql server为数据库开发平台
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit BookIn;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList, DB,
  Grids, DBGrids;

type
  TBookInForm = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit2: TEdit;
    Edit1: TEdit;
    Label2: TLabel;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
   function Codecreate(var query:TADOQUERY;const codeclass,table:string):string;
    function IDcreate:string;
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure clearedit(value:boolean);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure FormDestroy(Sender: TObject);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5Change(Sender: TObject);
 private
     procedure CreateParams(var Params: TCreateParams); override;
   procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
   procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
   procedure Active(var msg:Tmessage);message WM_ACTIVATE;
   procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
       { Private declarations }
  public
    titleBmp:Tbitmap;
    { Public declarations }
  end;
var
 insertorchange,fond:boolean;

implementation

uses MainForm,DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';

procedure TBookInForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
  //
end;
procedure TBookInForm.Active(var msg:Tmessage);
begin
  self.WMPAINT1(msg);
end;

procedure TBookInForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  params.Style:=params.Style-WS_SYSMENU;
end;

procedure TBookInForm.WMPAINT1(var msg:TMESSAGE);
begin
  sendmessage(self.Handle,WM_NCPAINT,0,0);
  inherited;
end;

procedure TBookInForm.WMNCPAINT1(var msg:TWMNCPAINT);
var
  dc1:HDC;
  y,frame:integer;
  oldbrush:HBrush;
  oldpen,pen:HPEN;
  canvas:Tcanvas;
begin
  canvas:=Tcanvas.Create;
  dc1:=getwindowdc(Handle);
  y:=GetSystemMetrics(SM_CYSIZE);
  frame:=GetSystemMetrics(SM_CYSIZEFRAME);
  oldbrush:=selectobject(dc1,getstockobject(null_brush));
  pen:=createpen(PS_SOLID,1,rgb(155,155,155));
  oldpen:=selectobject(dc1,pen);
  RoundRect(dc1,0,0,Width,Height,12,12);
  pen:=createpen(PS_SOLID,frame*2-5,rgb(255,255,255));
  selectobject(dc1,pen);
  RoundRect(dc1,2,2,Width-2,Height-2,8,10);
  StretchBlt(dc1,frame,frame,Width-2*frame,y+frame div 2,titlebmp.Canvas.Handle,0,0,titlebmp.Width,titlebmp.Height,srccopy);
  canvas.Handle:=dc1;
  canvas.Brush.Style:=bsclear;
  canvas.TextOut(frame*3,(y-frame)div 2,self.Caption);
  selectobject(dc1,oldbrush);
  selectobject(dc1,oldpen);
  deleteObject(pen);
  canvas.Handle:=0;
  canvas.Free;
  releasedc(Handle,dc1);
end;

procedure TBookInForm.FormCreate(Sender: TObject);
begin
  titlebmp:=Tbitmap.Create;
  titlebmp.LoadFromResourceName(main.resource,'TItle');
end;

function TBookInForm.Codecreate(var query:TADOQUERY;const codeclass,table:string):string;
var
  code:string;
begin
  Randomize;
  result:='0000000000';
  repeat
    code:=codeclass+FormatDateTime('yyyymmdd',date)+'N'+inttostr(random(9999));
    with query do
    begin
      close;
      sql.Clear;
      sql.Add('select * from '+table+' where BillID=:rd');
      parameters.ParamByName('rd').Value:=code;
      open;
    end;
  until query.RecordCount<1;
  result:=code;
end;

function TBookInForm.IDcreate:string;
var
  i:integer;
begin
  with data.PublicQuery do
  begin
    result:='0001';
    close;
    sql.Clear;
    sql.Add('select ID from Booksave order by ID');
    open;
    for i:=1  to 9999 do
    begin  //for
      while not eof do
        begin   //while
          if strtoint(fieldbyname('ID').AsString)=i then
          begin
            Break;
          end
            else
              if i<10 then
                result := '000'+inttostr(i)
              else
                if i<100 then
                  result:='00'+inttostr(i)
                else
                  if i<1000 then
                    result:='0'+inttostr(i)
                  else
                    if i<10000 then
                      result:=inttostr(i);
          next;
      end; // while
    end;   // for
  end;
end;


procedure TBookInForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  try
    if not (key in ['0'..'9',char(VK_Back),#13]) then
      key:=#0;
    if (key=#13) and (trim(edit2.Text)<>'')then
    begin // begin
      with data.LendQuery do
      begin
        close;
        sql.Clear;
        sql.Add('select * from booksave where barcode = '+''''+trim(edit2.Text)+'''');
        //parameters.ParamByName('code').Value:=edit2.Text;
        open;
        if recordcount > 0 then
        begin  // if >0
          edit1.text:=fieldbyname('ID').AsString;
          edit3.Text:=fieldbyname('bookname').AsString;
          edit4.Text:=Floattostr(Fieldbyname('price').asfloat);
          edit6.Text:=edit4.Text;
        end
        else
        begin
          edit1.text:='';
          edit3.Text:='';
        end;
      end;
      with data.SellQuery do
      begin

        if label9.Caption ='' then
        begin    ///////////////////////////label null create table
          repeat       //create temp table
            label9.Caption:=Codecreate(data.sellquery,'RK','bookin');
            close;
            sql.Clear;
            sql.Add('select * from sysobjects where name=:name');
            parameters.ParamByName('name').Value:=label9.Caption;
            open;
          until (recordcount<1);
            close;
            sql.Clear;
            sql.Add('create table '+label9.Caption);
            sql.Add(' ([BillId] [varchar] (20),[BookId] [varchar] (20),');
            sql.Add('[BookName] [varchar] (30),[Price] [numeric](18, 2) NULL,');
            sql.Add('[InNumber] [int] NULL,[SumPrice] [numeric](18, 2) NULL,');
            sql.Add('[Indate] [datetime] NULL ,[HandMan] [varchar] (10) NULL,');
            sql.Add('[Worker] [varchar] (10) NULL )');
            execsql;
        end;//////////////////////////////////createtable;

        if trim(edit3.text)<>'' then
        begin  // if >0
          close;
          sql.Clear;
          sql.Add('select * from '+label9.Caption+' where bookid=:bookid');
          parameters.ParamByName('BookID').Value:=edit1.text;
          open;
          if recordcount>0 then
          begin
            close;
            sql.Clear;
            sql.Add('update '+label9.Caption+' set  InNumber=InNumber+1 where bookname=:bookname');
            parameters.ParamByName('bookname').Value:=edit3.Text;
            execsql;
            clearedit(false);
            edit2.Enabled:=true;
            edit2.SetFocus;
          end
          else
          begin
            close;
            sql.Clear;
            sql.Add('insert into '+label9.Caption);
            sql.Add(' (BillID,BookID,BookName,Indate,InNumber,HandMan,Price,SumPrice,worker) ');
            sql.Add('values(:BillID,:BookID,:BookName,:indate,:InNumber,:HandMan,:Price,:SumPrice,:worker)');
            parameters.ParamByName('BillID').Value:=label9.Caption;
            parameters.ParamByName('BookID').Value:=edit1.text;
            parameters.ParamByName('BookName').Value:=Edit3.Text;
            parameters.ParamByName('InNumber').Value:=1;
            parameters.ParamByName('Indate').Value:=date;
            parameters.ParamByName('HandMan').Value:=edit7.Text;
            parameters.ParamByName('Price').Value:=strtofloat(edit4.Text);
            parameters.ParamByName('SumPrice').Value:=strtofloat(edit6.Text);
            parameters.ParamByName('worker').Value:=main.userPurview.username;
            execsql;
            edit5.Enabled:=true;
            edit5.SetFocus;
          end;
        fond:=true;
        speedbutton2.Enabled:=true;
        end     // if >0
        else
          begin   //>0 else
            myshowmessage('该书在库存中没有找到,请输入详细信息!');
            fond:=false;
            edit1.Text:=idcreate;
            edit3.Enabled:=true;
            edit4.Enabled:=true;
            edit5.Enabled:=true;

⌨️ 快捷键说明

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