⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitstructls.pas

📁 delphi+sql server 我是delphi的初学者
💻 PAS
字号:
unit Unitstructls;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, dxCntner, dxEditor, dxExEdtr,
  dxEdLib;

type
  TFormstructls = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edid: TEdit;
    Czt: TComboBox;
    Clx: TComboBox;
    dxCurrencyEdit1: TdxCurrencyEdit;
    DateTimePicker1: TDateTimePicker;
    Cdd: TComboBox;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure EdidKeyPress(Sender: TObject; var Key: Char);
    procedure EdidKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CztKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ClxKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dxCurrencyEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DateTimePicker1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    function zhid:Integer;
    function  list:string;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Formstructls: TFormstructls;

implementation
uses UDM;
{$R *.dfm}
function TFormstructls.list;
var
  counter:Integer;
  id:string;
begin
     with DM.T_COUNTER do
     begin
      Filter:='id=''B''';
      Filtered:=true;
      open;
      counter:=fieldbyname('countervalues').AsInteger;
      inc(counter);
      edit;
      fieldbyname('countervalues').AsInteger:=counter;
      post;
      close;
     end;
     id:='000'+inttostr(counter);
     id:=copy(id,length(id)-3,4);
     id:=formatdatetime('yyyy',now)+id;
  Result:=id;
 end;
function TFormstructls.zhid;
 begin
  with dm.qrytemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select isnull(max(libnumber),0)+1 from libnumber');
      Prepared;
      Open;
    end;
    Result:=dm.qrytemp.Fields[0].AsInteger;
 end;

procedure TFormstructls.Button1Click(Sender: TObject);
begin
     if (Edid.Text='') and (Czt.Text='') then
      begin
        MessageBox(Handle,'单据号码不能为空','系统提示',MB_ICONINFORMATION+MB_OKCANCEL);
        Exit;
      end;
      if dm.ADOlibnumber.Locate('numberid;numbertype;libnumberplace',VarArrayOf([Edid.Text,Clx.Text,dm.NAME]),[]) then
        begin
              if not dm.ADOlibnumberls.Locate('numberid;numbertype;libnumberplace',VarArrayOf([Edid.Text,Clx.Text,dm.NAME]),[]) then
                begin
                    try
                     dm.con1.BeginTrans;
                     //同时增加一个数据
                     DM.ADOlibnumberls.Append;
                     dm.ADOlibnumberlslibnumber.Value:=zhid;
                     dm.ADOlibnumberlslist.Value:=list;
                     dm.ADOlibnumberlsnumberid.Value:=EdID.Text;
                     dm.ADOlibnumberlsnumbertype.Value:=Clx.Text;
                     dm.ADOlibnumberlshxbz.Value:='1';
                     dm.ADOlibnumberlsrq.Value:=DateTimePicker1.Date;
                     dm.ADOlibnumberlslypername.AsString:=dm.hname;
                     DM.ADOlibnumberlsJINE.Value:=dxCurrencyEdit1.Value;
                     dm.ADOlibnumberlsA.Value:=True;
                     dm.ADOlibnumberlsB.Value:=True;
                     dm.ADOlibnumberlslibnumberplace.Value:=DM.NAME;
                     dm.ADOlibnumberlszt.Value:=Czt.Text;
                     dm.ADOlibnumberlssxdm.Value:=dm.hdm;
                     dm.ADOlibnumberls.Post;

                       with dm.qrytemp do
                         begin
                           Close;
                           SQL.Clear;
                           SQL.add('delete from libnumber');
                           SQL.Add('where numberid=:id and numbertype=:type and libnumberplace=:place and sxdm=:dm');
                           Parameters.ParamByName('id').Value:=EdID.Text;
                           Parameters.ParamByName('type').Value:=Clx.Text;
                           Parameters.ParamByName('place').Value:=DM.NAME;
                           Parameters.ParamByName('dm').Value:=dm.hdm;
                           execsql;
                         end;
                        dm.con1.CommitTrans;
                        DM.ADOlibnumber.Close;
                        dm.ADOlibnumber.Open;
                      except
                        dm.con1.RollbackTrans;
                    end;
                end
                else
                ShowMessage('数据重不能录入');
        end
        else
         begin
         MessageBox(Handle,'未发现领用单据,请确认后在领用','系统提示',MB_ICONINFORMATION+MB_OKCANCEL);
         end;
    ShowMessage('数据保存成功,请选择下一个单据!');
    Edid.Text:='';
    Clx.Text:='';
    Czt.Text:='';
    DateTimePicker1.Date:=Date;
    dxCurrencyEdit1.Value:=0;
end;

procedure TFormstructls.FormShow(Sender: TObject);
begin
  dm.ADOlibnumber.Open;
  Edid.Text:='';
  Clx.Text:='';
  Czt.Text:='';
  Cdd.Text:='';
  DateTimePicker1.Date:=Date;
     with dm.qrytemp do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select djzt from meun_zt');
       Prepared;
       Open;
     end;
    Czt.Items.Clear;
    while not dm.qrytemp.Eof do
      begin
        Czt.Items.Append(dm.qrytemp.Fields[0].AsString);
        DM.qrytemp.Next;
      end;


   with dm.qrytemp do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select typename from typeunit');
       Prepared;
       Open;
     end;
    Clx.Items.Clear;
    while not dm.qrytemp.Eof do
      begin
        Clx.Items.Append(dm.qrytemp.Fields[0].AsString);
        DM.qrytemp.Next;
      end;

   with dm.qrytemp do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select placename from ly_place');
       Prepared;
       Open;
     end;
    Cdd.Items.Clear;
    while not dm.qrytemp.Eof do
      begin
        Cdd.Items.Append(dm.qrytemp.Fields[0].AsString);
        DM.qrytemp.Next;
      end;

end;

procedure TFormstructls.Button2Click(Sender: TObject);
begin
   CLOSE;
end;

procedure TFormstructls.EdidKeyPress(Sender: TObject; var Key: Char);
begin
   if not (Key in ['0'..'9',#8]) then
   key:=#0;

end;

procedure TFormstructls.EdidKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i:Integer;
begin
    with dm.qrytemp do
    begin
      close;
      SQL.Clear;
      SQL.Add('select numberid,numbertype from libnumber');
      SQL.Add('where numberid=:id');
      Parameters.ParamByName('id').Value:=Edid.Text;
      Prepared;
      Open;
    end;
   Clx.Text:=DM.qrytemp.Fields[1].AsString;

  with dm.qrytemp do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select count(numberid) from libnumber');
       SQL.Add('where numberid=:id and numbertype=:type');
       SQL.Add('group by numberid');
       Parameters.ParamByName('id').Value:=Edid.Text;
       Parameters.ParamByName('type').Value:=Clx.Text;
       Prepared;
       Open;
     end;
     i:=dm.qrytemp.Fields[0].AsInteger;
   if (i>1) and (i<=2) then
    begin
      ShowMessage('此单据其他吧台也有,请确认此单据所在的吧台,在进行核销');
    end;

  if Key=$0D then
  Czt.SetFocus;
end;

procedure TFormstructls.CztKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=$0D then
  Clx.SetFocus;
end;

procedure TFormstructls.ClxKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=$0D then
  dxCurrencyEdit1.SetFocus;
end;

procedure TFormstructls.dxCurrencyEdit1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key=$0D then
 DateTimePicker1.SetFocus;
end;

procedure TFormstructls.DateTimePicker1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=13 then
Button1Click(Sender);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -