📄 spxs.~pas
字号:
Rect1 := bg.CellRect(bzq,Row1);
Rect1.Left := Rect1.Left+bg.Left;
Rect1.Right :=Rect1.Right+bg.Left;
Rect1.Top := bg.Top+ Rect1.Top;
bzqlb.Left := Rect1.Left;
bzqlb.Top := Rect1.Top+1;
bzqlb.Visible := True;
bzqlb.SetFocus;
bzqlb.ItemIndex := 0;
Exit;
end;
if (Col1 = ckmc)and(Trim(bg.Cells[ckmc,Row1])<>'') then //不在列表中选择,直接输入库存信息时,判断库存信息是否存在
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_kcjcxx where kcdm = :a or kcmc = :a');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,Row1]);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
bg.Cells[ckmc,Row1]:= Trim(Data.Query1.Fields[1].AsString);
bg.Cells[cklb,Row1]:= Trim(Data.Query1.Fields[2].AsString);
if Row1 = 1 then
bg.Cells[zk,row1]:='1.0';
bg.SetFocus;
bg.Col := bg.Col+1;
end
else
begin
kc := True;
bg.Cells[ckmc,Row1]:='';
end;
end
else if (Col1 = spdm)and(Trim(bg.Cells[spdm,Row1])<>'')and(Trim(bg.Cells[ckmc,Row1])<>'') then
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select aa.*,bb.bzsj from t_spjcxx aa inner join t_spsj bb on aa.spdm = bb.spdm and aa.spdm = :a and spzl = :b inner join t_sprkjl cc on aa.spdm = cc.spdm');
ParamByName('a').AsString := Trim(bg.Cells[spdm,Row1]);
ParamByName('b').AsString := Trim(bg.Cells[cklb,Row1]);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
bg.Cells[spdm,Row1]:= Trim(Data.Query1.Fields[0].AsString);
bg.Cells[spmc,Row1]:= Trim(Data.Query1.Fields[1].AsString);
bg.Cells[dj,Row1]:= Trim(Data.Query1.FieldByName('bzsj').AsString);
if (Trim(ksb.Text)='应税内含')or(Trim(ksb.Text)='应税外加')then
bg.Cells[sl,Row1]:= Trim(Data.Query1.FieldByName('sl').AsString)
else
bg.Cells[sl,Row1]:= '0.0';
bg.Cells[jbdw,Row1]:= Trim(Data.Query1.FieldByName('jbdw').AsString);
bg.SetFocus;
bg.Col := bg.Col+1;
end
else
begin
kc := True;
bg.Cells[spdm,Row1]:='';
bg.Cells[spmc,Row1]:='';
end;
end
else if (Col1 = spmc)and(Trim(bg.Cells[spmc,Row1])<>'')and(Trim(bg.Cells[spdm,Row1])='')and(Trim(bg.Cells[ckmc,Row1])<>'') then
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select aa.*,bb.bzsj from t_spjcxx aa inner join t_spsj bb on aa.spdm = bb.spdm and spmc = :a and spzl = :b inner join t_sprkjl cc on aa.spdm = cc.spdm');
ParamByName('a').AsString := Trim(bg.Cells[spmc,Row1]);
ParamByName('b').AsString := Trim(bg.Cells[cklb,Row1]);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
bg.Cells[spdm,Row1]:= Trim(Data.Query1.Fields[0].AsString);
bg.Cells[spmc,Row1]:= Trim(Data.Query1.Fields[1].AsString);
bg.Cells[dj,Row1]:= Trim(Data.Query1.FieldByName('bzsj').AsString);
if (Trim(ksb.Text)='应税内含')or(Trim(ksb.Text)='应税外加')then
bg.Cells[sl,Row1]:= Trim(Data.Query1.FieldByName('sl').AsString)
else
bg.Cells[sl,Row1]:= '0.0';
bg.Cells[jbdw,Row1]:= Trim(Data.Query1.FieldByName('jbdw').AsString);
bg.SetFocus;
bg.Col := bg.Col+1;
end
else
begin
kc := True;
bg.Cells[spdm,Row1]:='';
bg.Cells[spmc,Row1]:='';
bg.Cells[jbdw,Row1]:='';
end;
end
else
begin
bg.SetFocus;
if bg.Col<bg.ColCount-1 then
bg.Col := bg.Col+1;
end;
end;
end;
procedure Tf_spxs.ClearCurrentRow;
var
i: Integer;
begin
For i:=0 to bg.ColCount-1 do
bg.Cells[i,Row1]:= '';
end;
procedure Tf_spxs.ClearEndRow;
var
i: Integer;
begin
For i:=0 to bg.ColCount-1 do
bg.Cells[i,bg.RowCount-1]:= '';
end;
function Tf_spxs.CurrentIsNull: Boolean;
var
a: Integer;
begin
Result := False;
For a:= 0 to bg.ColCount -1 do
begin
if Trim(bg.Cells[a,Row1])='' then
begin
Result := True;
Break;
end;
end;
end;
procedure Tf_spxs.xsphEnter(Sender: TObject);
begin
Grid1.Visible := False;
bzqlb.Visible := False;
end;
procedure Tf_spxs.ywyExit(Sender: TObject);
var
key: Word;
begin
if Trim(ywy.Text)<>'' then
begin
Key := vk_ReTurn;
ywy.OnKeyDown(Sender,Key,[ssctrl]);
end;
end;
procedure Tf_spxs.bzqlbDblClick(Sender: TObject);
begin
bg.Cells[bzq,Row1]:= bzqlb.Items[bzqlb.itemIndex];
bzqlb.Visible := False;
bg.SetFocus;
end;
procedure Tf_spxs.bzqlbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = Vk_Return then
bzqlb.OnDblClick(Sender);
end;
procedure Tf_spxs.bzqlbExit(Sender: TObject);
begin
bzqlb.Visible := False;
bg.SetFocus;
bg.Col := je;
bg.Col:= bzq;
end;
function Tf_spxs.EditIsNull: Boolean;
var
i: Integer;
begin
Result := False;
For i := 0 to ControlCount-1 do
begin
if Controls[i] is TEdit then
begin
if (Trim(TEdit(Controls[i]).Name)<>'dhph')and(Trim(TEdit(Controls[i]).Text)='') then
begin
Result := True;
Exit;
end;
end
else if Controls[i] is TComboBox then
begin
if Trim(TComboBox(Controls[i]).Text)='' then
begin
Result := True;
Exit;
end;
end;
end;
For i :=0 to Panel2.ControlCount-1 do
begin
if Controls[i] is TEdit then
if Trim(TEdit(Controls[i]).Text)='' then
begin
Result := True;
Break;
end;
end;
end;
function Tf_spxs.GridIsNull: Boolean;
var
c,r: Integer;
begin
Result := False;
For r := 1 to bg.RowCount-1 do
For c := 0 to bg.ColCount-1 do
if Trim(bg.Cells[c,r])='' then
begin
Result := True;
Break;
end;
end;
function Tf_spxs.GroupSum(spbh: String): Real;
var
r: Integer;
begin
Result := 0;
For r := 1 to bg.RowCount-1 do
begin
if (Trim(spbh)=Trim(bg.Cells[spdm,r]))then
Result := Result + StrToInt(bg.Cells[Num,r]);
end;
end;
function Tf_spxs.IsGq: Boolean;
var
r: Integer;
begin
Result := False;
For r := 1 to bg.RowCount-1 do
begin
if StrToDateTime(bg.Cells[bzq,r])<Trunc(Now)+1 then
begin
Result := True;
Break;
end;
end;
end;
function Tf_spxs.CalculateCbj(spbh: String): real;
var
sum: Integer;
money: Real;
begin
Result := 0;
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select Sum(sl)as num,Sum(je)as Je from t_sprkjl where spdm = :a');
ParamByName('a').AsString := Trim(spbh);
Open;
end;
if Data.Query2.Fields[0].Value<>Null then
begin
Sum := Data.Query2.Fields[0].AsInteger;
money := Data.Query2.Fields[1].AsFloat;
Result := Money/sum;
end;
end;
function Tf_spxs.GroupSum(spbh, kcmc, bzqx: String): Real;
var
r: Integer;
begin
Result := 0;
For r := 1 to bg.RowCount-1 do
begin
if Trim(kcmc)=Trim(bg.Cells[ckmc,r]) then
if (Trim(spbh)=Trim(bg.Cells[spdm,r]))then
if (Trim(bzqx)= Trim(bg.Cells[bzq,r]))then
Result := Result + StrToInt(bg.Cells[Num,r]);
end;
end;
procedure Tf_spxs.ReadDataFromdhph;
var
i: integer;
begin
i := 1;
if Trim(dhph.Text)<>'' then
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_dhph where dhph = :a and bs =0');
ParamByName('a').AsString := Trim(dhph.Text);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
dhph.ReadOnly := True;
xszr.ReadOnly := True;
bg.Options := bg.Options-[goEditing];
kh.Text := Data.Query1.FieldByName('khmc').AsString;
fktj.Text := Data.Query1.FieldByName('fktj').AsString;
ksb.Text := Data.Query1.FieldByName('ksb').AsString;
ywy.Text := Data.Query1.FieldByName('ywy').AsString;
sj.DateTime := Data.Query1.FieldByName('sj').AsDateTime;
xsxj.Text := Data.Query1.FieldByName('xsxj').AsString;
xszr.Text := Data.Query1.FieldByName('xszr').AsString;
xsse.Text := Data.Query1.FieldByName('xsse').AsString;
zj.Text := Data.Query1.FieldByName('zj').AsString;
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_dhmx where dhph = :a');
ParamByName('a').AsString := Trim(dhph.Text);
Open;
end;
bg.RowCount := Data.Query2.RecordCount+1;
while Not Data.Query2.Eof do
begin
bg.Cells[ckmc,i]:= Data.Query2.FieldByName('kcmc').AsString;
with Data.Query3 do
begin
Close;
SQL.Clear;
SQL.Add('select kclb from t_kcjcxx where kcmc = :a');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,i]);
Open;
end;
bg.Cells[cklb,i]:= Data.Query3.Fields[0].AsString;;
bg.Cells[spdm,i]:= Data.Query2.FieldByName('spdm').AsString;
with Data.Query3 do
begin
Close;
SQL.Clear;
SQL.Add('select spmc from t_spjcxx where spdm = :a');
ParamByName('a').AsString := Trim(bg.Cells[spdm,i]);
Open;
end;
bg.Cells[spmc,i]:= Data.Query3.Fields[0].AsString;
bg.Cells[dj,i]:= Data.Query2.FieldByName('bzsj').AsString;
bg.Cells[jbdw,i]:= Data.Query2.FieldByName('jbdw').AsString;
bg.Cells[num,i]:= Data.Query2.FieldByName('num').AsString;
bg.Cells[sl,i]:= Data.Query2.FieldByName('sl').AsString;
bg.Cells[se,i]:= Data.Query2.FieldByName('se').AsString;
bg.Cells[zk,i]:= Data.Query2.FieldByName('zk').AsString;
bg.Cells[wzrje,i]:= Data.Query2.FieldByName('wzrje').AsString;
bg.Cells[je,i]:= Data.Query2.FieldByName('je').AsString;
bg.Cells[bzq,i]:= FormatdateTime('yyyy-mm-dd',Data.Query2.FieldByName('bzq').AsDateTime);
inc(i);
Data.Query2.Next;
end;
end
else
Application.MessageBox('该票号不存在或已完成送货.','提示',64);
end;
end;
procedure Tf_spxs.tjClick(Sender: TObject);
var
s,m: String;
i: integer;
begin
qx.OnClick(Sender);
s:= 'PH'+ FormatDateTime('yyyymmdd',sj.Date);
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select max(xsph) as ss From t_xsph where sj>=:a and sj <:b');
ParamByName('a').AsDate := Trunc(sj.Date);
ParamByName('b').AsDate := Trunc(sj.Date)+1;
Open;
end;
If Data.Query1.FieldByName('ss').Value = null then
s := s + '001'
else
begin
m:= Trim(Data.Query1.FieldByName('ss').Value) ;
i:= StrToInt(Trim(Copy(m,11,8))) ;
if i<9 then
s:= s + '00'+ InttoStr(i +1)
else if i<99 then
s:= s + '0'+ InttoStr(i +1)
else
s:= s +InttoStr(i +1);
end;
xsph.Text := s;
kh.SetFocus;
sj.Enabled := False;
dhph.Enabled := False;
end;
procedure Tf_spxs.qxClick(Sender: TObject);
var
c,r: Integer;
begin
For r:=1 to bg.RowCount-1 do
For c:=0 to bg.ColCount-1 do
bg.Cells[c,r]:='';
bg.RowCount:=2;
Grid1.Visible := False;
kh.Enabled := True;
sj.DateTime := Now;
ksb.Enabled := True;
lb.Visible := False;
ksb.ItemIndex := 0;
xsph.Clear;
xszr.Text := '0.0';
xsxj.Text:='0.0';
xsse.Text := '0.0';
zj.Text:= '0.0';
sj.Enabled := True;
ywy.Clear;
kh.Clear;
kh.SetFocus;
dhph.Clear;
dhph.Enabled := True;;
dhph.ReadOnly := False;
xszr.ReadOnly := False;
Col1 := 0;
Row1 := 1;
end;
procedure Tf_spxs.bcClick(Sender: TObject);
var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -