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

📄 indepot_unit.pas

📁 药品进销管理程序,内有SQL附加的数据库.....详情看里面的,运行就OK
💻 PAS
字号:
unit InDepot_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids, Buttons,
  DB, ADODB, RpRender, RpRenderCanvas, RpRenderPreview, RpRave, RpDefine,
  RpCon, RpConDS, RpBase, RpSystem;

type
  TfrmInDepot = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    cmbxType: TComboBox;
    cmbxStockID: TComboBox;
    lblInDepotID: TLabel;
    lblProviderID: TLabel;
    InDepotDatetime: TDateTimePicker;
    memRemark: TMemo;
    Panel2: TPanel;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    lblAuditing: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    cmbxMedicineID: TComboBox;
    edtBuyPrice: TEdit;
    edtJobPrice: TEdit;
    edtRetailPrice: TEdit;
    edtAmount: TEdit;
    ValidityDatetime: TDateTimePicker;
    edtBatchCode: TEdit;
    btnAuditing: TBitBtn;
    btnPrint: TBitBtn;
    btnSave: TBitBtn;
    btnFind: TBitBtn;
    btnAdd: TBitBtn;
    btnDel: TBitBtn;
    dsrInDepotHeader: TDataSource;
    qryInDepotHeader: TADOQuery;
    qryInDepotBody: TADOQuery;
    qryMedicine: TADOQuery;
    qryStock: TADOQuery;
    dsrInDepotBody: TDataSource;
    dsrMedicine: TDataSource;
    dsrStock: TDataSource;
    qryPrint: TADOQuery;
    RvDataSetConnection1: TRvDataSetConnection;
    RvProject1: TRvProject;
    RvSystem1: TRvSystem;
    procedure btnAddClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cmbxMedicineIDExit(Sender: TObject);
    procedure cmbxStockIDChange(Sender: TObject);
    procedure btnFindClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure btnDelClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnAuditingClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnPrintClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmInDepot: TfrmInDepot;

implementation

uses Common_Unit, LeechdomMain_Unit;

{$R *.dfm}

procedure TfrmInDepot.btnAddClick(Sender: TObject);
var
  InsertHeaderStr, MaxID: string;
begin
  qryInDepotBody.Close;
  cmbxType.Text := '';
  cmbxStockID.Text := '';
  cmbxMedicineID.Text := '';
  edtBuyPrice.Text := '';
  edtJobPrice.Text := '';
  edtRetailPrice.Text := '';
  edtAmount.Text := '';
  edtBatchCode.Text := '';
  lblAuditing.Caption := '未审核';
  lblProviderID.Caption := '自动带出';
  MaxID := 'Exec proc_InDepot @Flag=''SelectMaxID''';
  OpenDataSQL(frmLeechdomMain.qryMaxID, MaxID);
  if frmLeechdomMain.qryMaxID.FieldByName('MaxID').AsString = '' then
    lblInDepotID.Caption := 'SL' + FormatDatetime('yyyymm',Date) + '0001'
  else
    lblInDepotID.Caption := 'SL' + frmLeechdomMain.qryMaxID.FieldByName('MaxID').AsString;
end;

procedure TfrmInDepot.FormShow(Sender: TObject);
var
  SelectStrSto,SelectStrMed, sID, sName: string;
begin
  InDepotDatetime.Date := Date;
  SelectStrSto := 'Select * From StockHeader';
  cmbxStockID.Items.Clear;
  OpenDataSQL(qryStock, SelectStrSto);
  with qryStock do
  begin
    while not Eof do
    begin
      sID := FieldByName('StockID').AsString;
      cmbxStockID.Items.Add(sID);
      Next;
    end;
  end;

  SelectStrMed := 'Select * From Medicine';
  cmbxMedicineID.Items.Clear;
  OpenDataSQL(qryMedicine, SelectStrMed);
  with qryMedicine do
  begin
    while not Eof do
    begin
      sID := FieldByName('MedicineID').AsString;
      sName := FieldByName('MedName').AsString;
      cmbxMedicineID.Items.Add(sID + '.' + sName);
      Next;
    end;
  end;
end;

procedure TfrmInDepot.cmbxMedicineIDExit(Sender: TObject);
begin
  cmbxMedicineID.Text := Copy(cmbxMedicineID.Text,1,Pos('.',cmbxMedicineID.Text)-1);
end;

procedure TfrmInDepot.cmbxStockIDChange(Sender: TObject);
var
  ProviderID: string;
begin
  ProviderID := 'Select * From StockHeader where StockID=' + Quotedstr(cmbxStockID.Text);
  OpenDataSQL(qryStock, ProviderID);
  lblProviderID.Caption := qryStock.FieldByName('ProviderID').AsString;
end;

procedure TfrmInDepot.btnFindClick(Sender: TObject);
var
  SelectAll, FindID: string;
  FindBool: Boolean;
begin
  try
    FindID := lblInDepotID.Caption;
    FindBool := InputQuery('查询', '输入查询的编号', FindID);
    if FindBool then
    begin
      SelectAll := 'Exec proc_InDepot @Flag=''SelectInDepot'''
                  +',@InDepotID=' + Quotedstr(FindID);
      OpenDataSQL(qryInDepotHeader, SelectAll);
      OpenDataSQL(qryInDepotBody, SelectAll);
      cmbxType.Text := qryInDepotHeader.FieldByName('InDepotType').AsString;
      cmbxStockID.Text := qryInDepotHeader.FieldByName('StockID').AsString;
      InDepotDatetime.Date := StrToDate(qryInDepotHeader.FieldByName('InTime').AsString);
      lblInDepotID.Caption := qryInDepotHeader.FieldByName('InDepotID').AsString;
      lblProviderID.Caption := qryInDepotHeader.FieldByName('ProviderID').AsString;
      memRemark.Text := qryInDepotHeader.FieldByName('Remark').AsString;
      lblAuditing.Caption := qryInDepotHeader.FieldByName('Auditing').AsString;
    end;
  except
    Application.MessageBox('查询错误,请核实后重新查询!','错误',16);
    lblInDepotID.Caption := '自动生成';
  end;
end;

procedure TfrmInDepot.DBGrid1CellClick(Column: TColumn);
begin
  if DBGrid1.DataSource.DataSet.IsEmpty then
    Exit;
  if qryInDepotBody.Active then
  begin
    cmbxMedicineID.Text := DBGrid1.DataSource.DataSet.FieldByName('MedicineID').AsString;
    edtBuyPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('ByPrice').AsString;
    edtJobPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('JobPrice').AsString;
    edtRetailPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('RetailPrice').AsString;
    edtAmount.Text := DBGrid1.DataSource.DataSet.FieldByName('Amount').AsString;
    ValidityDatetime.Date := DBGrid1.DataSource.DataSet.FieldByName('ValidityDatetime').AsDateTime;
    edtBatchCode.Text := DBGrid1.DataSource.DataSet.FieldByName('BatchCode').AsString;
  end;
end;

procedure TfrmInDepot.btnDelClick(Sender: TObject);
var
  DelBodyStr, DelHeadStr, SelectBody, SelectAll: string;
begin
  if lblAuditing.Caption = '已审核' then
  begin
    Application.MessageBox('已审核不能修改!','提示',16);
    Exit;
  end;
  if DBGrid1.DataSource.DataSet.IsEmpty then
    Exit;
  if Application.MessageBox('确定要删除此条信息吗?','提示',68) = IDYes then
  begin
    DelBodyStr := 'Exec proc_InDepot @Flag=''DelInDepot'''
            + ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
            + ',@MedicineID=' + Quotedstr(cmbxMedicineID.Text)
            + ',@ValidityDatetime=' + Quotedstr(DateToStr(ValidityDatetime.Date));
    DelHeadStr := 'Exec proc_InDepot @Flag=''DeleteHeader'''
                + ',@InDepotID = ' + QuotedStr(lblInDepotID.Caption);

    ExecSQL(qryInDepotBody,DelBodyStr);
    if FindSQL('Select * From InDepotBody where InDepotID=' + QuotedStr(lblInDepotID.Caption)) = False then
      ExecSQL(qryInDepotHeader,DelHeadStr);

    Application.MessageBox('明细删除成功!','提示',64);
    SelectAll := 'Exec proc_InDepot @Flag=''SelectInDepot'''
            +',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
    OpenDataSQL(qryInDepotBody, SelectAll);
  end;
end;

procedure TfrmInDepot.btnSaveClick(Sender: TObject);
var
  InsertHeader, InsertBody, SelectBody: string;
begin
  try
    if lblAuditing.Caption = '已审核' then
    begin
      Application.MessageBox('已审核不能再保存数据!','提示',16);
      Exit;
    end;
    if (cmbxMedicineID.Text = '') or (edtBuyPrice.Text = '') or (edtJobPrice.Text = '') or (edtRetailPrice.Text = '') then
    begin
      Application.MessageBox('明细数据不能为空!','错误',16);
      cmbxMedicineID.SetFocus;
      Exit;
    end;
    if lblInDepotID.Caption = '自动生成' then
    begin
      Application.MessageBox('主项数据没有单号,请添加!','错误',16);
      Exit;
    end;
    InsertHeader := 'Exec proc_InDepot @Flag=''InsertHeader'''
                 + ',@StockID=' + Quotedstr(cmbxStockID.Text)
                 + ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
                 + ',@ProviderID=' + Quotedstr(lblProviderID.Caption)
                 + ',@InTime=' + Quotedstr(DateToStr(InDepotDatetime.Date))
                 + ',@InDepotType=' + Quotedstr(cmbxType.Text)
                 + ',@AuditingPeople=' + Quotedstr(LoginID)
                 + ',@Remark=' + Quotedstr(memRemark.Text);

    InsertBody := 'Exec proc_InDepot @Flag=''InsertBody'''
                + ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
                + ',@ValidityDatetime=' + Quotedstr(DateToStr(ValidityDatetime.Date))
                + ',@MedicineID=' + Quotedstr(cmbxMedicineID.Text)
                + ',@ByPrice=' + edtBuyPrice.Text
                + ',@JobPrice=' + edtJobPrice.Text
                + ',@RetailPrice=' + edtRetailPrice.Text
                + ',@Amount=' + edtAmount.Text
                + ',@BatchCode=' + Quotedstr(edtBatchCode.Text);

    SelectBody := 'Exec proc_InDepot @Flag=''SelectInDepot'''
                 +',@InDepotID=' + QUotedstr(lblInDepotID.Caption);
    ExecSQL(qryInDepotHeader,InsertHeader);
    ExecSQL(qryInDepotbody,InsertBody);
    OpenDataSQL(qryInDepotBody, SelectBody);
  except
    Application.MessageBox('保存数据错误,请查实!','错误',16);
  end;
end;

procedure TfrmInDepot.btnAuditingClick(Sender: TObject);
var
  Auditing, Update: string;
begin
  if lblAuditing.Caption = '已审核' then
  begin
    Application.MessageBox('不能重复审核!','提示',16);
    Exit;
  end;
  if DBGrid1.DataSource.DataSet.IsEmpty then
    Exit;
  if Application.MessageBox('确定要审核此单吗?','提示',68) = IDNo then
    Exit;
  Auditing := 'Exec proc_InDepot @Flag=''UpdateAuditing'''
             +',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
  Update := 'Exec proc_Storage @Flag=''InUpdateStorage'''
            + ',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
  ExecSQL(qryInDepotHeader,Update);
  ExecSQL(qryInDepotHeader,Auditing);
  Application.MessageBox('审核成功!','提示',64);
  lblAuditing.Caption := '已审核';
end;

procedure TfrmInDepot.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmInDepot := nil;
end;

procedure TfrmInDepot.btnPrintClick(Sender: TObject);
var
  PrintSQL: string;
begin
 PrintSQL := 'Select A.*,B.*,C.*,D.*,E.* From InDepotHeader A'
            +' Left Join InDepotBody B on A.InDepotID=B.InDepotID'
            +' Left Join Medicine C on B.MedicineID=C.MedicineID'
            +' Left Join Provider D on A.ProviderID=D.ProviderID'
            +' Left Join StockHeader E on A.StockID=E.StockID'
            + ' where A.InDepotID =' + QuotedStr(lblInDepotID.Caption);
  if lblInDepotID.Caption = '自动生成' then Exit;
  OpenDataSQL(qryPrint, PrintSQL);
  RvProject1.ProjectFile :='.\InDepotReport.rav';
  RvProject1.Execute;
end;

end.

⌨️ 快捷键说明

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