📄 bookinu.pas
字号:
unit BookInU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dbcgrids, Grids, DBGrids, DB, ADODB, StdCtrls, Buttons, ExtCtrls,
StrUtils, ExtDlgs;
type
TBookInF = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox2: TGroupBox;
StaticText2: TStaticText;
Edit1: TEdit;
StaticText1: TStaticText;
Edit2: TEdit;
StaticText3: TStaticText;
Edit3: TEdit;
StaticText11: TStaticText;
Edit7: TEdit;
ComboBox1: TComboBox;
StaticText4: TStaticText;
Edit4: TEdit;
StaticText6: TStaticText;
Memo1: TMemo;
StaticText5: TStaticText;
Edit5: TEdit;
StaticText9: TStaticText;
Edit6: TEdit;
StaticText10: TStaticText;
StaticText8: TStaticText;
procedure BitBtn1Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure EnabledEdit(value:boolean);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);//
private
{ Private declarations }
procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
public
{ Public declarations }
pictureName:string;
end;
var
BookInF: TBookInF;
implementation
uses DataModule,ShareU, MainU;
{$R *.dfm}
procedure TBookInF.WMNCPaint(var Msg: TWMNCPaint);
begin
inherited;
draw(BookInF);
end;
procedure TBookInF.EnabledEdit(value:boolean);//
begin
combobox1.Enabled:=value;
value:=not value;
edit2.ReadOnly:=value;
edit3.ReadOnly:=value;
edit4.ReadOnly:=value;
edit5.ReadOnly:=value;
memo1.ReadOnly:=value;
end;
procedure TBookInF.BitBtn1Click(Sender: TObject);
var
Query:TADOQuery;
TempNumber:integer;
begin
if edit1.Text='' then
begin
showmessage('图书编号不能为空!');
exit;
end;
try
dm.ADOConnection1.BeginTrans;
Query:=TADOQuery.Create(self);
query.Connection:=dm.ADOConnection1;
IF edit6.Text='' then
tempnumber:=0
else
tempnumber:=Strtoint(trim(edit6.Text)); //符值
if not dm.CCheckID('select bookid from book_info where bookid='''+
trim(edit1.Text)+'''') then
//没此书则首先往book_info表中插值,在向book_stock插值
begin
query.SQL.Text:= ' insert into book_info(bookid,bookname,bookauthor,'+
'bookman,bookprice,bookremark,booktypeid,bookpic) '+
'values (:id,:name,:author,:man,:price,:remark,'+
':typeid,:pic) ';
query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
query.Parameters.ParamByName('name').Value:=trim(edit2.text);
query.Parameters.ParamByName('author').Value:=trim(edit3.Text);
query.Parameters.ParamByName('man').Value:=trim(edit4.Text);
query.Parameters.ParamByName('price').Value:=strtofloat(trim(edit5.Text));
query.Parameters.ParamByName('remark').Value:=trim(memo1.Text);
query.Parameters.ParamByName('typeid').Value:=combobox1.Text;
if picturename='' then
query.Parameters.ParamByName('pic').Value:=null
else
query.Parameters.ParamByName('pic').LoadFromFile(picturename,ftblob);
query.ExecSQL;
end
else
//有此书,则从book_stock中取出库中所剩书数,与进书数相加生成新书数
//并更新 booklast字段,
begin
query.SQL.Clear;
query.SQL.Text:=' update book_stock set booklast=:lastNew where '+
' bookid=:id and booklast=:lastOld ';
query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
query.Parameters.ParamByName('lastOld').Value:=1;
query.Parameters.ParamByName('lastnew').Value:=0;
query.ExecSQL;
end;
//向book_stock插值
query.SQL.Clear;
query.SQL.Text:= ' insert into book_stock(bookid,bookindate,bookinnumber,'+
' bookoutdate,bookoutnumber,booklast) values (:id,:indate,'+
' :innumber,:outdate,:outnumber,:last)';
query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
query.Parameters.ParamByName('indate').Value:=Now;
query.Parameters.ParamByName('innumber').Value:=tempnumber;
query.Parameters.ParamByName('outdate').Value:=leftstr(datetimetostr(now),pos(' ',datetimetostr(now)));
query.Parameters.ParamByName('outnumber').Value:=0;
query.Parameters.ParamByName('last').Value:=1;
query.ExecSQL;
query.Free;
dm.ADOConnection1.CommitTrans;
except
on E:Exception do
begin
dm.ADOConnection1.RollbackTrans;
Application.MessageBox(PChar('错误信息如下:'+#13+#13+E.Message) ,'操作失败',Mb_OK+Mb_IconInformation);;
exit;
end;
end;
if messagedlg('入库完成,还有入库的书籍吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
CClearData(BookInF);
EnabledEdit(false);
edit1.SetFocus;
end
else
BitBtn2Click(sender); //关闭
end;
procedure TBookInF.Edit1Exit(Sender: TObject);
var
Query:TADOQuery;
begin
if edit1.Text='' then exit;
if dm.CCheckID('select bookid from book_info where bookid='''+
trim(edit1.Text)+'''') then //有此书,显示其他信息
begin
query:=TADOQuery.Create(self);
query.Connection:=dm.ADOConnection1;
query.SQL.Text:='select * from book_info where bookid=:id ';
query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
query.ExecSQL;
query.Open;
edit2.Text:=trim(query.FieldByName('bookName').AsString);
edit3.Text:=trim(query.FieldByName('bookauthor').AsString);
edit4.Text:=trim(query.FieldByName('bookman').AsString);
edit5.Text:=trim(query.FieldByName('bookprice').AsString);
memo1.Text:=trim(query.FieldByName('bookremark').AsString);
combobox1.Text:=trim(query.FieldByName('booktypeid').AsString);
query.Close;
query.Free;
ComboBox1Change(Sender);
enablededit(false);
edit6.SetFocus;
end
else
enablededit(true);
end;
procedure TBookInF.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TBookInF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BookInf:=nil;
action:=cafree; //释放窗体
end;
procedure TBookInF.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not CheckKey(Key,'n') then
key:=#0;
end;
procedure TBookInF.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not CheckKey(Key,'n') then
key:=#0;
end;
procedure TBookInF.ComboBox1Change(Sender: TObject);
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(self);
Query.Connection:=dm.ADOConnection1;
Query.SQL.Text:='select typename from book_type where booktypeid=:id';
Query.Parameters.ParamByName('id').Value:=combobox1.Text;
Query.Open;
edit7.Text:=Query.FieldByName('typename').AsString;
Query.Close;
Query.Free;
end;
procedure TBookInF.FormCreate(Sender: TObject);
function GetMaxTypeID:integer;
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(self);
Query.Connection:=dm.ADOConnection1;
Query.SQL.Text:='select booktypeid from book_type';
query.ExecSQL;
Query.open;
result:=query.RecordCount;
Query.Close;
Query.Free;
end;
var i:integer;
begin
caption:='添加图书';
Icon:=mainf.Icon;
for i:=1 to GetMaxTypeID do
begin
combobox1.Items.Add(inttostr(i));
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -