📄 ubill_base.~pas
字号:
Else
BtnAuditing.Caption:='审弃';
with QryDetail do
begin
Close;
sql.Clear;
SQL.Text:=tmpSQL;
SQL.Add(' Where nBillID='''+Trim(DBEdit1.Text)+'''');
Open;
end;
end;
end;
procedure TfrmBill_Base.FormShow(Sender: TObject); //Pass
begin
Panel2.Enabled:=false;
end;
procedure TfrmBill_Base.FormClose(Sender: TObject; //Pass
var Action: TCloseAction);
begin
SaveCol(RepOrder.Caption,DBGridEh1,1,trim(DBEdit3.text));
if frmMain.MDIChildCount=1 then
frmMain.Panel1.Visible:=True
else
frmMain.Panel1.Visible:=False;
Action:=CaFree;
frmBill_Base:=nil;
end;
procedure TfrmBill_Base.FormActivate(Sender: TObject);
begin
WindowState:=wsMaximized;
frmMain.Panel1.Visible:=False;
end;
procedure TfrmBill_Base.FormCloseQuery(Sender: TObject; //Pass
var CanClose: Boolean);
var
i:integer;
begin
if DS<>dsNone then
begin
i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
if i=6 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then //保存出错
begin
CanClose:=false;
Exit;
end;
end
else if i=7 then
begin
BtnCancelClick(Sender);
end else
CanClose:=False;
end;
end;
procedure TfrmBill_Base.SpeedButton5Click(Sender: TObject);
begin
SelFromTree(Edit5,DBEdit12,frmSel_Kh);
end;
procedure TfrmBill_Base.Edit5Exit(Sender: TObject);
begin
HaveError(DBEdit12,Edit5);
end;
procedure TfrmBill_Base.Edit5Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit12,Edit5,frmSel_Kh);
end;
procedure TfrmBill_Base.DBEdit12Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit12,Edit5,frmSel_Kh);
end;
procedure TfrmBill_Base.BtnExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmBill_Base.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY,0);
end;
procedure TfrmBill_Base.BtnFirstClick(Sender: TObject);
var
i:integer;
begin
if DS<>dsNone then
begin
i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
if i=6 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then //保存出错
begin
Exit;
end;
QryMaster.First;
end
else if i=7 then
begin
BtnCancelClick(Sender);
QryMaster.First;
end else
Exit;
end else
QryMaster.First;
end;
procedure TfrmBill_Base.BtnPreviousClick(Sender: TObject);
var
i:integer;
begin
if DS<>dsNone then
begin
i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
if i=6 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then //保存出错
begin
Exit;
end;
QryMaster.Prior;
end
else if i=7 then
begin
BtnCancelClick(Sender);
QryMaster.Prior;
end else
Exit;
end else
QryMaster.Prior;
end;
procedure TfrmBill_Base.BtnNextClick(Sender: TObject);
var
i:integer;
begin
if DS<>dsNone then
begin
i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
if i=6 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then //保存出错
begin
Exit;
end;
QryMaster.Next;
end
else if i=7 then
begin
BtnCancelClick(Sender);
QryMaster.Next;
end else
Exit;
end else
QryMaster.Next;
end;
procedure TfrmBill_Base.BtnLastClick(Sender: TObject);
var
i:integer;
begin
if DS<>dsNone then
begin
i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
if i=6 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then //保存出错
begin
Exit;
end;
QryMaster.Last;
end
else if i=7 then
begin
BtnCancelClick(Sender);
QryMaster.Last;
end else
Exit;
end else
QryMaster.Last;
end;
function TfrmBill_Base.NoError: Boolean;
var
i:integer;
j:integer;
k:integer;
tmpBool:Boolean;
ckPosition:boolean;
begin
i:=0;
Result:=true;
ErrorField:=-1;
with DM.ADOQckPosition do
begin
close;
sql.Add('select ncktcode,bCKPos from S_ck where ncktcode='+#39+DBEdit3.text+#39);
open;
ckPosition := DM.ADOQckPosition.fieldbyname('bCKPos').asboolean;
DM.ADOQckPosition.close;
end;
if (DS=dsNone) then Exit;
try
if (QryDetail.FieldByName('nGoodCode').AsString='') and
(QryDetail.FieldByName('nGoodName').AsString='') and
(QryDetail.FieldByName('nFSCount').AsString='') then
Exit;
Except
Exit;
end;
With QryDetail do
begin
if FieldByName('nGoodName').AsString='' then
begin
Application.MessageBox('物品编号有误','提示',64);
ErrorField:=0;
Result:=False;
Exit;
end;
if (FieldByName('nFSCount').AsString='') then
begin
for i:=0 to Fields.Count-1 do
begin
if trim(Fields[i].FieldName)='nFsCount' then
begin
Application.MessageBox('数量不能为空','提示',64);
ErrorField:=i;
Break;
end;
end;
Result:=False;
Exit;
end;
if (FieldByName('nFSPrice').AsString='') then
begin
for i:=0 to Fields.Count-1 do
begin
if Fields[i].FieldName='nfsprice' then
begin
ErrorField:=i;
Application.MessageBox('单价不能为空','提示',64);
Break;
end;
end;
Result:=False;
Exit;
end;
if FieldByName('bBatch').AsBoolean then
begin
for i:=0 to Fields.Count-1 do
if Fields[i].FieldName='nbatch' then //DataSet 的列
Break;
for j:=0 to DBGridEh1.Columns.Count-1 do
if DBGridEh1.Columns[j].FieldName='nbatch' then //Grid 的列
Break;
if FieldByName('nBatch').AsString='' then
begin
Result:=False;
ErrorField:=i;
Application.MessageBox('批次不能为空','提示',64);
Exit;
end;
end;
//=====================
for j:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[j].FieldName='nPosition' then
break;
end;
if ckPosition then
begin
if DBGridEh1.Columns[j].PickList.Count>0 then
begin
if (FieldByName('nPosition').AsString='') then
begin
for i:=0 to Fields.Count-1 do
if trim(Fields[i].FieldName)='nPosition' then
Break;
ErrorField:=i;
Application.MessageBox('货位有误','提示',64);
Result:=False;
Exit;
end else
begin //已经录入,看是否有误
tmpBool:=true;
for k:=0 to DBGridEh1.Columns[j].Picklist.Count-1 do
begin
if DBGridEh1.Columns[j].PickList.Strings[k]=FieldbyName('nPosition').AsString then
begin
tmpBool:=false;
Break;
end;
end;
if tmpBool then
begin
Result:=false;
Application.MessageBox('货位录入有误','提示',64);
ErrorField:=i;
Exit;
end;
end;
end;
end;
//=====================
for j:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[j].FieldName='nFSCount' then
break;
end;
if not(bHaveEnough) then
begin
for i:=0 to FieldCount-1 do
begin
if QryDetail.Fields[i].FieldName='nFsCount' then
begin
ErrorField:=i;
Break;
end;
end;
result:=false;
Exit;
end;
//========为后续准备 ????????????/
if ckPosition then
begin
if Caption='调拨业务' then
begin
tmpBool:=true;
for j:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[j].FieldName='nPosition2' then
begin
tmpBool:=false;
break;
end;
end;
if tmpBool then Exit;
if DBGridEh1.Columns[j].PickList.Count>0 then
begin
if (FieldByName('nPosition2').Asstring='') then
begin
for i:=0 to Fields.Count-1 do
if trim(Fields[i].FieldName)='nPosition2' then
Break;
ErrorField:=i;
Application.MessageBox('货位有误','提示',64);
Result:=False;
Exit;
end;
end;
end;
end;
end; {With}
end;
procedure TfrmBill_Base.QryDetailBeforePost(DataSet: TDataSet);
begin
QryDetail.FieldByName('nBillID').AsString:=QryMaster.FieldByName('nBillID').AsString;
end;
procedure TfrmBill_Base.QryDetailAfterOpen(DataSet: TDataSet);
var
rs_:_RecordSet;
pty:property_;
Pties:Properties;
function GetCriteria:Property_;
var
iCount:Integer;
begin
rs_:=QryDetail.Recordset;
Pties:=rs_.Properties;
for iCount:=0 to Pties.Count-1 do
begin
pty:=pties.Item[iCount];
if (pty.Name='Update Criteria') then
begin
Result:=pty;
Break;
end;
end;
end;
begin
pty:=getCriteria;
pty.Value:=0;
end;
function TfrmBill_Base.bHaveEnough: Boolean;
var
tmpStr:String;
begin
Result:=true;
tmpStr:=Copy(DBEdit1.Text,0,2);
if (((tmpStr='01') or (tmpStr='02') or (tmpStr='03') or (tmpStr='07') )
and (DBCheckBox1.Checked )) or (tmpStr='08')
or (((tmpStr='04') or (tmpStr='05') or (tmpStr='06')) and
(not(DBCheckBox1.Checked))) then
begin { TODO : To see wether the bill is out bill,just like Red In Bill or Blue out Bill or DB }
With DM.ADOProc do
begin
Close;
Parameters.ParamByName('@nGDCode').value:=QryDetail.FieldByName('nGoodCode').AsString;
Parameters.ParamByName('@nCK').value:=DBEdit3.Text;
Parameters.ParamByName('@nPosition').value:=QryDetail.FieldByName('nPosition').AsString;
Parameters.ParamByName('@nBatch').value:=QryDetail.FieldByName('nBatch').AsString;
Parameters.ParamByName('@Stocks').Value:=0;
ExecProc;
if QryDetail.FieldByName('nFsCount').AsFloat>Parameters.ParamByName('@Stocks').Value then
begin
//Application.MessageBox('目前没有这么多货物','提示',64);
//Result:=false;
result := true;
end;
end; { TODO : with }
end;
end;
procedure TfrmBill_Base.QryMasterAfterOpen(DataSet: TDataSet);
var
rs_:_RecordSet;
pty:property_;
Pties:Properties;
function GetCriteria:Property_;
var
iCount:Integer;
begin
rs_:=QryMaster.Recordset;
Pties:=rs_.Properties;
for iCount:=0 to Pties.Count-1 do
begin
pty:=pties.Item[iCount];
if (pty.Name='Update Criteria') then
begin
Result:=pty;
Break;
end;
end;
end;
begin
pty:=getCriteria;
pty.Value:=0;
end;
procedure TfrmBill_Base.btnDeleteClick(Sender: TObject);
begin
// if DS=dsAdd then
if trim(QryMaster.FieldByName('nShMan').AsString)<>'' then
begin
Application.MessageBox('该单据已审核,不能删除','提示',64);
Exit;
end;
QryDetail.Delete;
end;
procedure TfrmBill_Base.Button1999Click(Sender: TObject);
var
iCount:integer;
begin
for iCount:=0 to DBGrideh1.Columns.Count-1 do
begin
with DM.ADOQueryN do
begin
Close;
SQL.Text:='insert into s_Qrdetail (reporder,dispname,dispfield) values('''+
Label9.Caption+''','''+DBGridEh1.Columns[icount].Title.Caption+
''','''+DBGridEh1.Columns[icount].FieldName+''')';
ExecSQL;
end;
end;
end;
procedure TfrmBill_Base.BtnSetClick(Sender: TObject);
begin
//ncw19770107
SetItem(QryLoadField);
FormShow(Sender);
if trim(Edit1.Text)<>'' then begin
FullGd(QryLoadField,DBGridEh1,RepOrder.Caption,1,DBEdit3.Text);
end;
end;
procedure TfrmBill_Base.QryDetailnFsJineSetText(Sender: TField;
const Text: String);
begin
if RepOrder.Caption = '7' then
begin
if QryDetail.FieldByName('nFsCount').AsFloat<>0 then
if text='' then
QryDetail.FieldByName('nfsprice').Value:=0
else
QryDetail.FieldByName('nfsprice').Value:=StrToFloat(Text)/QryDetail.FieldByName('nFsCount').AsFloat;
// QryDetail.FieldByName('nFsJine').Value:=formatfloat('#0.00',
// StrToFloat(Text)*QryDetail.FieldByName('nFsCount').AsFloat);
QryDetail.FieldByName('nFsJine').AsString:=Text;
end;
end;
procedure TfrmBill_Base.DBGridEh1ColumnMoved(Sender: TObject; FromIndex,
ToIndex: Integer);
begin
if QryLoadField.Active then
setDBGridEhTile(QryLoadField,FromIndex,ToIndex);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -