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

📄 unithouse.pas

📁 社区服务系统
💻 PAS
字号:
unit UnitHouse;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, ImgList, ComCtrls, Buttons, DB, ADODB,
  ExtCtrls;

type
  TfrmHouse = class(TForm)
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    pclHouse: TPageControl;
    TabSheet1: TTabSheet;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    edtCId: TEdit;
    Label2: TLabel;
    edtHId: TEdit;
    Label3: TLabel;
    edtHname: TEdit;
    Label4: TLabel;
    edtHouseholder: TEdit;
    Label5: TLabel;
    edtHAddress: TEdit;
    Label6: TLabel;
    edtHphone: TEdit;
    Label7: TLabel;
    edtHtelephone: TEdit;
    Label9: TLabel;
    memHouse: TMemo;
    adoHouse: TADOQuery;
    DataSource1: TDataSource;
    adoHouseHId: TWideStringField;
    adoHouseCId: TWideStringField;
    adoHouseHname: TWideStringField;
    adoHouseHAddress: TWideStringField;
    adoHouseHphone: TWideStringField;
    adoHouseHtelephone: TWideStringField;
    adoHouseHouseholder: TWideStringField;
    adoHouseHUserWC: TWideStringField;
    adoHouseHmemo: TWideStringField;
    ADOHouseConn: TADOConnection;
    Panel1: TPanel;
    bbtnAdd: TBitBtn;
    bbtnModify: TBitBtn;
    bbtnDel: TBitBtn;
    bbtnSave: TBitBtn;
    bbtnCancel: TBitBtn;
    bbtnExit: TBitBtn;
    ADOTable1: TADOTable;
    procedure bbtnAddClick(Sender: TObject);
    procedure bbtnModifyClick(Sender: TObject);
    procedure bbtnCancelClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure bbtnSaveClick(Sender: TObject);
    procedure adoHouseAfterScroll(DataSet: TDataSet);
    procedure bbtnDelClick(Sender: TObject);
    procedure bbtngotoClick(Sender: TObject);
  private
    { Private declarations }
    procedure ButtonState(btag : integer);                     //按钮状态
    procedure showlist;                                        //列表显示
    procedure iniData;                                         //初始化combox下拉列表
  public
    { Public declarations }
  end;

var
  frmHouse: TfrmHouse;
  iflag : integer;                                             //记录操作,如添加,iflag=1;修改,iflag=2
  strHID : string;                                             //家庭编号
  strMsg : string;
  strsql : string;
  strSearch : string;                                          //查询条件

  const DOADD = 1;
  const DOMODIFY = 2;
  const DOCANCEL = 3;
  const DOSHOW = 4;
implementation
uses unitADOconn;
{$R *.dfm}

{
*************************************************************************************
函数名称:按钮状态
功能描述:要求在增加状态后,只有保存,取消可以操作,别的按钮不可操作。修改、删除状态也一样。
输入参数:btag,添加,btag=1;修改,btag=2
输出参数:
返回 值:  无
说   明:
*************************************************************************************
}
procedure TfrmHouse.ButtonState(btag : integer);
begin
  case btag of
  1 :                                                        //添加时按钮状态
    begin
      bbtnModify.Enabled := false;
      bbtnSave.Enabled := true;
      bbtnCancel.Enabled := true;
      bbtnDel.Enabled := false;
    end;
  2:                                                         //修改
    begin
      bbtnAdd.Enabled := false;
      bbtnSave.Enabled := true;
      bbtnCancel.Enabled := true;
      bbtnDel.Enabled := false;
    end;
  3:                                                         //取消
    begin
      bbtnadd.Enabled := true;
      bbtnModify.Enabled := true;
      bbtnDel.Enabled := true;
      bbtnSave.Enabled := false;
    end;
  4:                                                        //显示状态  
    begin
      bbtnadd.Enabled := true;
      bbtnModify.Enabled := true;
      bbtnDel.Enabled := true;
      bbtnSave.Enabled := false;
    end
    else
    exit;
  end;
end;

procedure TfrmHouse.bbtnAddClick(Sender: TObject);
begin
  iflag := DOADD;
  buttonState(DOADD);
  edtHId.SetFocus;

  edtHId.ReadOnly := false;
  edtHname.ReadOnly := false;
  edtHouseholder.ReadOnly := false;
  edtHAddress.ReadOnly := false;
  edtHphone.ReadOnly := false;
  edtHtelephone.ReadOnly := false;
  memhouse.ReadOnly := false;

  edtHId.Text := '';
  edtHname.Text := '';
  edtHouseholder.Text := '';
  edtHAddress.Text := '';
  edtHphone.Text := '';
  edtHtelephone.Text := '';
  memHouse.Text := '';
end;

procedure TfrmHouse.bbtnModifyClick(Sender: TObject);
begin
  iflag := DOMODIFY;
  ButtonState(DOMODIFY);
  edtHname.ReadOnly := false;
  edtHouseholder.ReadOnly := false;
  edtHAddress.ReadOnly := false;
  edtHphone.ReadOnly := false;
  edtHtelephone.ReadOnly := false;
  memhouse.ReadOnly := false;

  edtHname.SetFocus;
end;

procedure TfrmHouse.bbtnCancelClick(Sender: TObject);
begin
  ButtonState(DOCANCEL);
  if iflag=1 then
  begin
    edtHId.Text := adoHouse.fieldbyname('HId').AsString;
    edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
    edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
    edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
    edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
    edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
    memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;
    iflag := 0;
  end;

  if iflag=2 then
  begin
    adopub.Close;
    adopub.SQL.Text := 'select * from THouse where HId='''+edtHId.Text+'''';
    adopub.Open;
    edtHname.Text := adopub.fieldbyname('Hname').AsString;
    edtHouseholder.Text := adopub.fieldbyname('Householder').AsString;
    edtHAddress.Text := adopub.fieldbyname('HAddress').AsString;
    edtHphone.Text := adopub.fieldbyname('Hphone').AsString;
    edtHtelephone.Text := adopub.fieldbyname('Htelephone').AsString;
    memHouse.Text := adopub.fieldbyname('Hmemo').AsString;
    adopub.Close;
    iflag := 0;
  end;
end;

procedure TfrmHouse.bbtnExitClick(Sender: TObject);
begin
  close;
end;

{
*************************************************************************************
函数名称:显示DBGrid列表
功能描述:将THouse表中的数据在DBGrid列表中显示出来
输入参数: 无
输出参数: 无
返回 值:  无
说   明:  添加、修改、删除操作要调用该函数以达到显示更新后的数据显示目的
*************************************************************************************
}
procedure TfrmHouse.showlist;
begin
  try
    adoHouse.Close;
    adoHouse.Open;
  except
    on e:exception do
      showmessage('列表显示失败');
  end;
  edtCID.ReadOnly := true;
  edtHId.ReadOnly := true;
  edtHname.ReadOnly := true;
  edtHouseholder.ReadOnly := true;
  edtHAddress.ReadOnly := true;
  edtHphone.ReadOnly := true;
  edtHtelephone.ReadOnly := true;   
  memhouse.ReadOnly := true;


  edtHId.Text := adoHouse.fieldbyname('HId').AsString;
  edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
  edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
  edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
  edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
  edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
  memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;

  ButtonState(4);
  
end;


procedure TfrmHouse.FormShow(Sender: TObject);
begin
  inidata;
  showlist;
  edtCID.Text := 'C001';
  edtCID.ReadOnly := true;
  pclHouse.TabIndex := 0;
  if blnAdd = false then                                //如果用户没有添加的权限,则将添加按钮置为不可见状态
    bbtnAdd.Visible := false;
  if blnModify = false then                             //如果用户没有修改的权限,则将修改按钮置为不可见状态
    bbtnModify.Visible := false;
  if blnDel = false then                                //如果用户没有删除的权限,则将删除按钮置为不可见状态
    bbtnDel.Visible := false;
end;


{
*************************************************************************************
函数名称:数据保存
功能描述:将添加、修改的数据保存到数据库中
输入参数: 无
输出参数: 无
返回 值:  无
说   明:  添加、修改操作要调用该函数以达到显示更新后的数据显示目的
*************************************************************************************
}
procedure TfrmHouse.bbtnSaveClick(Sender: TObject);
var
    strMsg : string;
begin
try
  case iflag of
  1:
  begin
    strMsg := '添加';
    if length(edtHID.Text)<>9 then
    begin
      showmessage('请输入九位正确的家庭编号');                                      //家庭编号为4位社区编号+2位楼号+3位室号
      exit;                                                                         //比如:coo101501
    end;

    adopub.Close;
    adopub.SQL.Text := 'select * from THouse where HId=''' + edtHId.Text +'''';     //如果库中有相同的用户编号,以下将判断它的状态值
    adopub.Open;
    if adopub.RecordCount<>0 then
    begin
      if adopub.FieldByName('HState').AsString='1' then                              //如果状态值为1,说明库中有相同的家庭编号,已经存在该用户
      begin
        showmessage('已经存在该用户');
        exit;
      end
      else                                                                          //如果状态值为0,将其状态值恢复为1
      begin
        adoshare.Close;
        strsql := 'update THouse set Hname=''' + edtHname.Text + ''',HAddress='''+edtHAddress.Text+''',Hphone=''';
        strsql := strsql + edtHphone.Text + ''',Htelephone='''+edtHtelephone.Text+''',Householder='''+edtHouseholder.Text;
        strsql := strsql + ''',HState='+'''1'''+',Hmemo='''+memHouse.Text + ''' where HId='''+edtHId.Text+'''';
        adoshare.SQL.Text := strsql;
        adoshare.ExecSQL;
        adoshare.Close;
        showmessage('添加成功');
        showlist;
        exit;
      end;
    end;


    //如果库中没有相同的用户编号,则添加一条新记录,将状态值置为1
    adoshare.Close;
    strsql := 'insert into THouse (HId,CId,Hname,HAddress,Hphone,Htelephone,Householder,HState,HUserWC,Hmemo) values (''';
    strsql := strsql + edtHId.Text + ''',''' + edtCId.Text + ''',''' + edtHname.Text + ''',''' + edtHAddress.Text;
    strsql := strsql + ''',''' + edtHphone.Text + ''',''' + edtHtelephone.Text + ''',''' + edtHouseholder.Text;
    strsql := strsql + ''',' + '''1''' + ',''' + ''',''' + memHouse.Text + ''')';
    adoshare.SQL.Text := strsql;
    adoshare.ExecSQL;
    adoshare.Close;
    showmessage('添加成功');
    showlist;
  end;
  2:
  begin
     strMsg := '修改';

     adoshare.Close;
     strsql := 'update THouse set Hname=''' + edtHname.Text + ''',HAddress='''+edtHAddress.Text+''',Hphone=''';
     strsql := strsql + edtHphone.Text + ''',Htelephone='''+edtHtelephone.Text+''',Householder='''+edtHouseholder.Text;
     strsql := strsql + ''',Hmemo='''+memHouse.Text + ''' where HId='''+edtHId.Text+'''';
     adoshare.SQL.Text := strsql;
     adoshare.ExecSQL;
     adoshare.Close;
     showmessage('修改成功');
     showlist;
  end
  else
    exit;
  end;
except
  on e:exception do
  showmessage('执行'+strMsg+'操作不成功');
end;
end;

procedure TfrmHouse.adoHouseAfterScroll(DataSet: TDataSet);
begin
  edtHId.Text := adoHouse.fieldbyname('HId').AsString;
  edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
  edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
  edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
  edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
  edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
  memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;
end;


{
*************************************************************************************
函数名称: 初始化数据
功能描述:  将数据字典中的数据初始化到combox下拉列表中
输入参数: 无
输出参数: 无
返回 值:  无
说   明:
*************************************************************************************
}
procedure TfrmHouse.iniData;
begin
try
  adoshare.close;
  adoshare.SQL.Text := 'select a.DId,a.DName from TDataParam a,TDataType b where a.DTypeId=b.DTypeId and b.DTypeName=''卫生厕''';
  adoshare.Open;
  while not adoshare.Eof do
  begin
    adoshare.Next;
  end;
  adoshare.Close;

  adoshare.close;
  adoshare.SQL.Text := 'select HId from THouse';
  adoshare.Open;
  while not adoshare.Eof do
  begin
    adoshare.Next;
  end;
  adoshare.Close;
except
  on e:exception do
    showmessage('初始化下拉列表失败');
end;
end;

procedure TfrmHouse.bbtnDelClick(Sender: TObject);
var
  iDel : integer;
begin
  iDel := application.MessageBox('确定要删除吗?','删除提示',MB_YESNO+MB_Iconquestion);
  if iDel=6 then
  begin
    adoshare.Close;
    adoshare.SQL.Text := 'update THouse set HState=''0'' where HID='''+edtHID.Text+'''';
    adoshare.ExecSQL;
    adoshare.Close;
    showmessage('删除成功');
    showlist;
  end
  else
  begin
    exit;
  end;
end;

procedure TfrmHouse.bbtngotoClick(Sender: TObject);
begin
  pclHouse.TabIndex := 0;
end;



end.

⌨️ 快捷键说明

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