📄 frm_basedata.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 + -