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

📄 frm_basedata.pas

📁 这是一个基于delphi平台的物流空运管理系统!
💻 PAS
字号:
unit Frm_BaseData;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Frm_Cargo, XPMenu, StdCtrls, Buttons, ExtCtrls, ComCtrls, DB,
  ADODB;

type
  TFrmBaseData = class(TFrmCargo)
    LV: TListView;
    Panel1: TPanel;
    Panel2: TPanel;
    BtnCancel: TBitBtn;
    BtnNew: TBitBtn;
    BtnDelete: TBitBtn;
    BtnEdit: TBitBtn;
    QryTemp: TADOQuery;
    Panel3: TPanel;
    CmbGrid: TComboBox;
    Label1: TLabel;
    procedure BtnNewClick(Sender: TObject);
    procedure CmbGridChange(Sender: TObject);
    procedure BtnEditClick(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure BtnCancelClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure LVDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    TableName: string;
    { Public declarations }
  end;

var
  FrmBaseData: TFrmBaseData;

implementation

uses Frm_Main, Frm_BaseDataEdit;

{$R *.dfm}

procedure TFrmBaseData.BtnNewClick(Sender: TObject);
begin
  inherited;
  FrmBaseDataEdit := TFrmBaseDataEdit.Create(Self);
  FrmBaseDataEdit.IsEdit := False;
  FrmBaseDataEdit.BtnAdd.Enabled := False;
  FrmBaseDataEdit.Caption := CmbGrid.Text + '信息编辑';
  FrmBaseDataEdit.Showmodal;
end;

procedure TFrmBaseData.CmbGridChange(Sender: TObject);
begin
  inherited;
  FrmBaseData.Caption := CmbGrid.Text + '基本信息';
  case CmbGrid.ItemIndex of
    0: TableName := 'CountryInfo';
    1: TableName := 'ProviceInfo';
    2: TableName := 'LaneCode';
    3: TableName := 'DeptmentInfo';
    4: TableName := 'TrustTypeInfo';
  end;

  if TableName = '' then
    Exit;
  QryTemp.Close;
  QryTemp.SQL.Text := 'select code,Name,CName,Remark from ' + TableName;
  QryTemp.Open;

  FrmMain.AddColumn(LV, '代码', 100);
  FrmMain.AddColumn(LV, '英文名称', 120);
  FrmMain.AddColumn(LV, '中文名称', 160);
  FrmMain.AddColumn(LV, '备   注', 200);

  FrmMain.AddData(LV, QryTemp);
end;

procedure TFrmBaseData.BtnEditClick(Sender: TObject);
begin
  inherited;
  if CmbGrid.Text = '' then
  begin
    ShowMessage('请选择数据库名!');
    exit;
  end;

  if LV.SelCount = 0 then
  begin
    ShowMessage('请选择一条记录进行编辑!');
    exit;
  end;

  FrmBaseDataEdit := TFrmBaseDataEdit.Create(Self);
  FrmBaseDataEdit.IsEdit := True;
  FrmBaseDataEdit.TableCode := LV.Selected.Caption;
  FrmBaseDataEdit.Caption := CmbGrid.Text + '信息编辑';
  FrmBaseDataEdit.BtnAdd.Enabled := true;
  FrmBaseDataEdit.Showmodal;
end;

procedure TFrmBaseData.BtnDeleteClick(Sender: TObject);
var
  SqlStr: string;
begin
  inherited;
  if FrmMain.IncludeValue('普通代码维护') then
  else
  begin
    ShowMessage('对不起,你不具有该操作的权限!');
    exit;
  end;

  if lv.Items.Count = 0 then
  begin
    ShowMessage('记录集为空,不能够删除');
    exit;
  end;
  if LV.SelCount = 0 then
  begin
    ShowMessage('请选取窗体中的一行!');
    exit; //如果没有选取行
  end;

  if MessageDlg('是否删除所选中的记录,请确定', mtConfirmation, [mbYes, mbNo], 0)
    = mrNO then
    exit;

  try
    FrmMain.UseDB.BeginTrans;
    if TableName = 'CountryInfo' then
    begin
      if FrmMain.CheckExistCount('CountryCode', LV.Selected.Caption,
        'CustomerInfo') > 0 then
      begin
        ShowMessage('此纪录与客户信息关联,不可删除!');
        FrmMain.UseDB.RollbackTrans;
        Exit;
      end;
      if (FrmMain.CheckExistCount('CountryCode', LV.Selected.Caption, 'PortInfo')
        > 0) or (FrmMain.CheckExistCount('Country', LV.Selected.Caption,
          'Company')
        > 0) then
      begin
        if MessageDlg('对不起,该代码与其他信息的关联' + chr(13) +
          '执行删除操作,将同时把与此记录关联的其他信息删除掉,是否继续执行,请确定!',
          mtConfirmation, [mbYes, mbNo], 0) = mrno then
        begin
          FrmMain.UseDB.RollbackTrans;
          exit;
        end;
        SqlStr := 'Delete From PortInfo Where CountryCode=''' +
          LV.Selected.Caption + '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
        SqlStr := 'Delete From Company Where Country=''' + LV.Selected.Caption +
          '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
      end;
    end;

    if TableName = 'PorviceInfo' then
    begin
      if (FrmMain.CheckExistCount('ProviceCode', LV.Selected.Caption,
        'CustomerInfo') > 0) or (FrmMain.CheckExistCount('Provice',
        LV.Selected.Caption, 'Company') > 0) then
      begin
        if MessageDlg('对不起,该代码存在与港口信息的关联中' + chr(13) +
          '执行删除操作,将同时把港口信息中与之关联的港口信息删除掉,是否继续执行,请确定!',
          mtConfirmation, [mbYes, mbNo], 0) = mrno then
        begin
          FrmMain.UseDB.RollbackTrans;
          exit;
        end;
        SqlStr := 'Delete From CustomerInfo Where ProviceCode=''' +
          LV.Selected.Caption + '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
        SqlStr := 'Delete From Company Where Provice=''' + LV.Selected.Caption +
          '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
      end;
    end;

    if TableName = 'LaneCode' then
    begin
      if (Frmmain.CheckExistCount('PortStation', LV.Selected.Caption, 'PortInfo')
        > 0) then
      begin
        if MessageDlg('对不起,该代码存在与港口信息的关联中' + chr(13) +
          '执行删除操作,将同时把港口信息中与之关联的港口信息删除掉,是否继续执行,请确定!',
          mtConfirmation, [mbYes, mbNo], 0) = mrno then
        begin
          FrmMain.UseDB.RollbackTrans;
          exit;
        end;
        SqlStr := 'Delete From PortInfo Where PortStation=''' +
          LV.Selected.Caption + '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
      end;
    end;

    if TableName = 'DeptmentInfo' then
    begin
      if (FrmMain.CheckExistCount('Dept', LV.Selected.Caption, 'BussinessMan') >
        0) then
      begin
        if MessageDlg('对不起,该代码存在与港口信息的关联中' + chr(13) +
          '执行删除操作,将同时把港口信息中与之关联的港口信息删除掉,是否继续执行,请确定!',
          mtConfirmation, [mbYes, mbNo], 0) = mrno then
        begin
          FrmMain.UseDB.RollbackTrans;
          exit;
        end;
        SqlStr := 'Delete From BussinessMan Where Dept=''' + LV.Selected.Caption
          + '''';
        if FrmMain.ExecSQL(SqlStr) then
        else
        begin
          ShowMessage('记录删除失败,请检查!');
          exit;
        end;
      end;
    end;

    SqlStr := 'Delete From ' + TableName + ' Where Code=''' + LV.Selected.Caption
      + '''';
    if FrmMain.ExecSQL(SqlStr) then
    else
    begin
      ShowMessage('记录删除失败,请检查!');
      exit;
    end;
    FrmMain.UseDB.CommitTrans;

    LV.Selected.Delete;

  except
    FrmMain.UseDB.RollbackTrans;
    ShowMessage('删除操作进行失败,请检查!');
    Exit;
  end;
end;

procedure TFrmBaseData.BtnCancelClick(Sender: TObject);
begin
  inherited;
close;
end;

procedure TFrmBaseData.FormDestroy(Sender: TObject);
begin
  inherited;
  FrmBaseData:=nil;
end;

procedure TFrmBaseData.LVDblClick(Sender: TObject);
begin
  inherited;
  BtnEditClick(Sender);
end;

end.

⌨️ 快捷键说明

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