📄 baseinbase.pas
字号:
unit BaseInBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
ToolWin, Grids, DBGridEh, ExtCtrls, StdCtrls, DBGridEhImpExp;
type
TfrmBaseInBase = class(TfrmInfoBase)
Panel1: TPanel;
Panel2: TPanel;
DBGridEh1: TDBGridEh;
GroupBox1: TGroupBox;
actCopy: TAction;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
DateTimePicker1: TDateTimePicker;
Label3: TLabel;
ADOQuery1: TADOQuery;
procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
procedure DBGridEh1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure QBaseInfoBeforePost(DataSet: TDataSet);
procedure QBaseInfoBeforeEdit(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBGridEh1ColExit(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
function GetOrderData():Integer;
procedure CopyOrderData();
{ Public declarations }
end;
var
frmBaseInBase : TfrmBaseInBase;
implementation
uses Global, DataModule,AssistantInput,pasStockInput;
{$R *.dfm}
function TfrmBaseInBase.GetOrderData():Integer;
var tmpHTH:string ;
begin
tmpHTH:=QBaseInfo.FieldValues['fHth'];
with dmClient.qry_cx do
begin
close;
SQL.Clear;
SQL.Add(' select distinct hth,xh,sizes,sh_remark from vGetOrderDate where hth like '+'''%'+trim(tmpHTH)+'%''');
dmClient.qry_cx.Open;
if dmClient.qry_cx.IsEmpty then
Result:=0 //没有返回结果集
else if dmClient.qry_cx.RecordCount > 1 then
result:=2//返回数目大于1的结果集
else result:=1;//返回数目等于1的结果集
end;
end;
procedure TfrmBaseInBase.CopyOrderData();
begin
if dmClient.qry_cx.active then
if dmClient.qry_cx.FieldCount >0 then
begin
self.QBaseInfo.FieldbyName('fHth').asString:=WCI_fHth;
self.QBaseInfo.FieldbyName('fModel').asString:=Trim(WCI_fModel);
self.QBaseInfo.FieldbyName('fName').asString:=Trim(WCI_fModel);
self.QBaseInfo.FieldbyName('fSize').asString:=WCI_fSize;
self.QBaseInfo.FieldbyName('fSH').asString:=WCI_fSH;
end;
end;
procedure TfrmBaseInBase.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if QBaseInfo.State in [dsInsert, dsEdit] then
begin
//-----自动复制数据
if DBGridEh1.SelectedField.FieldName = 'fAudit' then
begin
Button1.Click;
QBaseInfo.Last;
QBaseInfo.Edit;
DBGridEh1.SelectedIndex := 0;
//ShowMessage('hello!');
end;
//-----------
if DBGridEh1.SelectedIndex = 0 then
begin
QBaseInfo.FieldbyName('fDate').AsDateTime := strtodate(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date));
QBaseInfo.FieldbyName('fchecker').asString := G_sUserName;
QBaseInfo.FieldbyName('fsize').asString := '/';
end;
if DBGridEh1.SelectedField.FieldName = 'fOutSource' then
DBGridEh1.SelectedIndex := 17;
if DBGridEh1.SelectedField.FieldName = 'fUnit' then
begin
//ShowMessage('jin');
with QIsUnique do
begin
close;
SQL.Clear;
SQL.Add('select * from tAmount where fModel=:a and fSH=:b and fsize=:c');
parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fSH'];
parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
QIsUnique.Open;
if QIsUnique.Eof then
showmessage('型号、规格、色号不匹配,对应数量或重量将无法自动计算,请检查后输入!');
end;
end;
if DBGridEh1.SelectedField.FieldName = 'fName' then
begin
with QIsUnique do
begin
close;
SQL.Clear;
SQL.Add('select * from tAmount where fModel=:a and fsh=:b and fsize=:c');
parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fsh'];
parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
QIsUnique.Open;
if not QIsUnique.Eof then
QBaseInfo.FieldbyName('fname').Value := QIsUnique.FieldValues['fname']
else
ShowMessage('没有找到对应的名称!');
end;
end;
DBGridEh1.FieldColumns['funit'].PickList.Text := '粒' + #13 + #10 + '付' + #13 + #10 + '套' + #13 + #10 + 'GR' + #13 + #10 + '打' + #13 + #10 + '百粒' + #13 + #10 + '百付' + #13 + #10 + '百套';
//if QBaseInfo.State in [dsInsert, dsEdit] then
//begin
if (GetKeyState(vk_Control) < 0) and (GetKeyState(VK_RETURN) < 0) then
begin
GetOrderData();
Application.CreateForm(TfrmStockInput,frmStockInput);
G_CanInput:=False;
frmStockInput.ShowModal;
if G_CanInput then
begin
CopyOrderData();
end;
end;
//end;
end;
end;
procedure TfrmBaseInBase.DBGridEh1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
if QBaseInfo.State in [dsInsert, dsEdit] then
begin
if DBGridEh1.SelectedField.FieldName = 'fDate' then
QBaseInfo.FieldbyName('fDate').AsDateTime := strtodate(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date));
end;
end;
procedure TfrmBaseInBase.FormCreate(Sender: TObject);
//var i:Integer;
begin
inherited;
DateTimePicker1.DateTime:=StrToDate(FormatDateTime('yyyy-mm-dd', Date()));
tbtFind.visible := False;
{ for i := 0 to DBGridEh1.Columns.Count - 1 do
begin
if i mod 2 = 0 then
DBGridEh1.Columns[i].Color := clMoneyGreen
else
DBGridEh1.Columns[i].Color := clWhite;
end; }
end;
procedure TfrmBaseInBase.QBaseInfoBeforePost(DataSet: TDataSet);
begin
if (QBaseInfo.FieldbyName('fHTH').asString = '') then
begin
showmessage('合同号不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fsize').asString = '') then
begin
showmessage('规格不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fSH').asString = '') then
begin
showmessage('色号不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fDate').asString = '') then
begin
showmessage('时间不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fModel').asString = '') then
begin
showmessage('型号不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fWeight').asString = '') then
begin
showmessage('重量不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('famount').asString = '') then
begin
showmessage('数量不能为空,请重新输入!');
abort;
end;
if (QBaseInfo.FieldbyName('fDepot').asString = '') then
begin
showmessage('仓库不能为空,请重新输入!');
abort;
end;
begin
with QIsUnique do
begin
close;
SQL.Clear;
SQL.Add('select * from tAmount where fModel=:a and fsh=:b and fsize=:c');
parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fsh'];
parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
QIsUnique.Open;
end;
if not QIsUnique.Eof then
QBaseInfo.FieldbyName('fname').Value := QIsUnique.FieldValues['fname']
else
QBaseInfo.FieldbyName('fname').asString :=QBaseInfo.fieldbyname('fmodel').AsString;
end;
with QTemp do
begin
close;
SQL.Clear;
SQL.Add('select * from tcolor where fsh=:a');
parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fsh'];
QTemp.Open;
if not QTemp.Eof then
QBaseInfo.FieldbyName('fcolor').Value := QTemp.FieldbyName('fcolor').Value
else
QBaseInfo.FieldbyName('fcolor').asString := QBaseInfo.fieldbyname('fsh').AsString;
end;
end;
procedure TfrmBaseInBase.QBaseInfoBeforeEdit(DataSet: TDataSet);
begin
inherited;
if (QBaseInfo.FieldbyName('fAudit').asString = '1') then
begin
Application.MessageBox('对不起!已审核的数据不能再进行修改!要修改请使用冲帐!', '信息提示', MB_OK);
abort;
end;
end;
procedure TfrmBaseInBase.Button1Click(Sender: TObject);
var
i : Integer;
ar : array of variant;
begin
QBaseInfo.Refresh;
if QBaseInfo.State in [dsInsert, dsEdit] then
showmessage('请先保存后再复制记录')
else
begin
SetLength(ar, QBaseInfo.FieldCount);
//复制当前记录
for i := 0 to QBaseInfo.FieldCount - 1 do
ar[i] := QBaseInfo.Fields[i].Value;
QBaseInfo.Append;
//将复制的记录粘贴到新记录中
for i := 0 to QBaseInfo.FieldCount - 1 do
QBaseInfo.Fields[i].Value := ar[i];
QBaseInfo.Post;
QBaseInfo.Last;
QBaseInfo.Edit;
DBGridEh1.SelectedIndex := 0;
end
end;
procedure TfrmBaseInBase.Button2Click(Sender: TObject);
begin
inherited;
if QBaseInfo.State in [dsInsert, dsEdit] then
showmessage('请先将数据保存后再审核!')
else
begin
QBaseInfo.Requery();
if MessageDlg('确定审核吗?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
while (not QBaseInfo.Eof) do
begin
QBaseInfo.Edit;
QBaseInfo.FieldbyName('faudit').asBoolean := True;
// QBaseInfo.Post;
QBaseInfo.Next;
end;
end;
QBaseInfo.Requery();
end;
end;
procedure TfrmBaseInBase.DBGridEh1ColExit(Sender: TObject);
begin
inherited;
if QBaseInfo.State in [dsInsert, dsEdit] then
begin
with QTemp do
begin
close;
SQL.Clear;
SQL.Add('select * from tcolor where fsh=:a');
parameters.ParamByName('a').DataType:=ftString;
Parameters.ParamByName('a').NumericScale:=255;
Parameters.ParamByName('a').Precision:=255;
Parameters.ParamByName('a').Size:=50;
parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fsh'];
QTemp.Open;
if QTemp.RecordCount<>0 then
begin
QBaseInfo.FieldbyName('fcolor').Value := QTemp.FieldbyName('fcolor').Value
end
else
begin
showMessage('此色号没有相应的颜色与之对应,请检查色号是否正确');
QBaseInfo.FieldbyName('fcolor').asString := QBaseInfo.fieldbyname('fsh').AsString;
end;
end;
QBaseInfo.FieldbyName('fhth').Value := Uppercase(DBGridEh1.FieldColumns['fhth'].DisplayText);
QBaseInfo.FieldbyName('fmodel').Value := Uppercase(DBGridEh1.FieldColumns['fmodel'].DisplayText);
QBaseInfo.FieldbyName('fsize').Value := Uppercase(DBGridEh1.FieldColumns['fsize'].DisplayText);
end;
end;
procedure TfrmBaseInBase.ToolButton2Click(Sender: TObject);
begin
inherited;
SaveDialog1.DefaultExt := 'XLS';
SaveDialog1.Filter := '*.XLS|*.XLS';
if SaveDialog1.Execute then
begin
if SaveDialog1.FileName <> '' then
begin
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, DBGridEh1, SaveDialog1.FileName, True);
Application.MessageBox('Excel文件导出成功!', '成功', MB_OK);
end;
end;
end;
procedure TfrmBaseInBase.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
frmBaseInBase:=nil;
end;
procedure TfrmBaseInBase.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{if (GetKeyState(VK_CONTROL)<0) and (GetKeyState(VK_RETURN)<0) then
begin
keybd_event(VK_TAB,0,0,0);
end;}
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -