📄 pprice.~pas
字号:
unit pprice;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, DBTables, Menus, constb,
Buttons;
type
Tppricefm = class(TForm)
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
scgxdb: TDataSource;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N3: TMenuItem;
GroupBox2: TGroupBox;
Label1: TLabel;
schdeptqy: TQuery;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
scgxqy: TQuery;
Button4: TButton;
BitBtn1: TBitBtn;
Label2: TLabel;
ComboBox2: TComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1DblClick(Sender: TObject);
procedure scgxqyAfterDelete(DataSet: TDataSet);
procedure scgxqyAfterPost(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure scgxqyBeforePost(DataSet: TDataSet);
procedure scgxqyBeforeEdit(DataSet: TDataSet);
procedure ComboBox1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure scgxqyPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure Button4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure scgxqyAfterInsert(DataSet: TDataSet);
private
oldscgxno, olddept: string;
{ Private declarations }
public
dept: string;
{ Public declarations }
end;
var
ppricefm: Tppricefm;
implementation
uses scgxprint, scbrow, gxmanage;
{$R *.dfm}
procedure Tppricefm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
scgxqy.Close;
action := cafree;
if assigned(scbrowfm) then
scbrowfm.WindowState := wsMaximized;
end;
procedure Tppricefm.FormDestroy(Sender: TObject);
begin
ppricefm := nil;
end;
procedure Tppricefm.FormCreate(Sender: TObject);
begin
scgxqy.RequestLive := true;
combobox1.Items.Clear;
schdeptqy.SQL.Clear;
schdeptqy.SQL.Add('select PNO from scpo');
schdeptqy.open;
while not schdeptqy.Eof do
begin
combobox1.Items.Add(schdeptqy.fieldbyname('pno').AsString);
schdeptqy.Next;
end;
schdeptqy.Close;
//dbgrid1.Columns[0].PickList := insertcombobox('scdepts', 'dept'); //部门
combobox2.Items.Clear;
schdeptqy.SQL.Clear;
schdeptqy.SQL.Add('select dept from scgx group by dept');
schdeptqy.open;
while not schdeptqy.Eof do
begin
combobox2.Items.Add(schdeptqy.fieldbyname('dept').AsString);
schdeptqy.Next;
end;
schdeptqy.Close;
end;
procedure Tppricefm.N1Click(Sender: TObject);
begin
scgxqy.Append;
end;
procedure Tppricefm.N3Click(Sender: TObject);
begin
scgxqy.Delete;
scgxqy.ApplyUpdates;
scgxqy.CommitUpdates;
ComboBox1Change(Sender);
end;
procedure Tppricefm.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['a'..'z'] then
key := upcase(key);
if key = #13 then
begin
with Dbgrid1 do
if Selectedindex < (FieldCount - 1) then
Selectedindex := Selectedindex + 1
else
begin
scgxqy.Next;
if scgxqy.Eof then
scgxqy.Append;
Selectedindex := 0;
end;
end;
//////////////////
{with schdeptqy do
begin
sql.clear;
sql.add('select * from scgx where dept=:dept and scgxno=:gxno');
parambyname('dept').asstring:=scgxqy.fieldbyname('dept').asstring;
parambyname('gxno').asstring:=scgxqy.fieldbyname('gxno').asstring;
open;
if recordcount>0 then
begin
scgxqy.FieldByName('scgx').asstring:=schdeptqy.fieldbyname('scgx').asstring;
scgxqy.FieldByName('scprice').asfloat:=schdeptqy.fieldbyname('scprice').asfloat;
end;
end; }
end;
procedure Tppricefm.DBGrid1DblClick(Sender: TObject);
begin
if schscgxflg then
if scgxqy.Active and (scgxqy.RecordCount > 0) then
begin
scbrowfm.inmxqy.FieldByName('SCgx').asstring := scgxqy.Fieldbyname('scgx').asstring;
scbrowfm.inmxqy.FieldByName('gxNO').asstring := scgxqy.Fieldbyname('gxNO').asstring;
scbrowfm.inmxqy.FieldByName('INPRICE').asFLOAT := scgxqy.Fieldbyname('scprice').asfloat;
close;
end;
end;
procedure Tppricefm.scgxqyAfterDelete(DataSet: TDataSet);
begin
n3.Enabled := bool(scgxqy.RecordCount);
end;
procedure Tppricefm.scgxqyAfterPost(DataSet: TDataSet);
begin
{ scgxqy.Close;
scgxqy.Open;}
end;
procedure Tppricefm.FormShow(Sender: TObject);
begin
scgxqy.SQL.Clear;
scgxqy.SQL.Add('select * from scpo');
if combobox1.Text<>'' then
scgxqy.SQL.add('where pno=:dept');
if combobox1.Text<>'' then
scgxqy.parambyname('dept').asstring := combobox1.text;
scgxqy.Open;
end;
procedure Tppricefm.scgxqyBeforePost(DataSet: TDataSet);
function searchfield2(dept,scgxno:string): integer; //检查字段1
var
schqy: tquery;
sqlstr: string;
begin
result:=0;
sqlstr := 'select scgx from scgx where dept=:dept and scgxno=:scgxno ';
schqy := tquery.Create(nil);
schqy.DatabaseName := 're_data';
schqy.SQL.clear;
schqy.SQL.Add(sqlstr);
schqy.ParamByName('dept').asstring := dept;
schqy.ParamByName('scgxno').asstring := scgxno;
schqy.Open;
result := schqy.RecordCount;
schqy.Free;
end;
begin
case dataset.State of
dsinsert:
begin
if searchfield2(dataset.FieldByName('dept').asstring,dataset.FieldByName('scgxno').asstring)>0 then
begin
messagedlg('输入的工序代码重复,请重新输入!', mtinformation, [mbok],
0);
abort;
end
end;
dsedit:
begin
{ if (oldscgxno <> dataset.FieldByName('scgxno').asstring) or
(olddept <> dataset.FieldByName('dept').asstring) then
if bool(searchfield2(olddept,oldscgxno)) then
begin
messagedlg('输入的工序代码重复,请重新输入!', mtinformation, [mbok],
0);
abort;
end; }
end;
end;
end;
procedure Tppricefm.scgxqyBeforeEdit(DataSet: TDataSet);
begin
oldscgxno := scgxqy.fieldbyname('SCGX').asstring;
olddept := scgxqy.fieldbyname('PNO').asstring;
end;
procedure Tppricefm.ComboBox1Change(Sender: TObject);
begin
scgxqy.SQL.Clear;
scgxqy.SQL.Add('select * from scpo');
if combobox1.Text <> '' then
begin
scgxqy.SQL.add('where pno=:pno');
scgxqy.parambyname('pno').asstring := combobox1.Text;
end;
scgxqy.Open;
end;
procedure Tppricefm.Button1Click(Sender: TObject);
begin
scgxqy.Append;
end;
procedure Tppricefm.Button2Click(Sender: TObject);
begin
scgxqy.ApplyUpdates;
scgxqy.CommitUpdates;
ComboBox1Change(Sender);
end;
procedure Tppricefm.Button3Click(Sender: TObject);
begin
scgxqy.CancelUpdates;
end;
procedure Tppricefm.scgxqyPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
messagedlg('工序代码有重复,请检查!',mtinformation,[mbok],0);
end;
procedure Tppricefm.Button4Click(Sender: TObject);
begin
if not assigned(scgxprtfm) then
scgxprtfm:=tscgxprtfm.create(self);
with scgxprtfm do
begin
quickrep1.DataSet:=scgxqy;
qrdbtext1.DataSet:=scgxqy;
qrdbtext2.DataSet:=scgxqy;
qrdbtext3.DataSet:=scgxqy;
qrdbtext4.DataSet:=scgxqy;
quickrep1.Preview;
end;
end;
procedure Tppricefm.BitBtn1Click(Sender: TObject);
begin
schdeptqy.SQL.Clear;
schdeptqy.SQL.Add('delete from scpo');
schdeptqy.SQL.add('where (pno=:pno and scgx=:gx)');
schdeptqy.parambyname('pno').asstring :=scgxqy.fieldbyname('pno').asstring;
schdeptqy.parambyname('gx').asstring :=scgxqy.fieldbyname('scgx').asstring;
schdeptqy.execsql;
ComboBox1Change(Sender);
end;
procedure Tppricefm.scgxqyAfterInsert(DataSet: TDataSet);
begin
scgxqy.fieldbyname('dept').asstring:=combobox2.Text;
scgxqy.fieldbyname('pno').asstring:=combobox1.Text;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -