1.设置初始条件。

private:

addflag:boolean

modiflag:boolean

var:

  strSQLCondition,strOrderCondition:string;

(保存按钮)btnsave.enabled := false;

(取消按钮)btncancel.enabled := false;

(添加,删除,更改)按钮 button.enabled := false;

2.设置添加(add)

addflag:=true;

modiflag:=false;

(保存按钮)btnsave.enabled := true;

(取消按钮)btncancel.enabled := true;

3.设置修改(ALTER)

modiflag:=true;

addflag := false;

(保存按钮)btnsave.enabled := true;

(取消按钮)btncancel.enabled := true;

4.设置删除(delete)

  if addflag = True then
  begin
    Application.MessageBox('正处于新增状态,请选择要删除的项目',
                              '项目设置',mb_OK+MB_ICONinformation);
    abort;
  end;    //新增状态下不予删除

  alterflag := true;
  addflag := False;

判断删除条件,符合后进行删除。

  if dbgrdh1.FieldColumns['项目名称'].DisplayText = '' then
  begin
    Application.MessageBox('请选择要删除的项目',
                              '项目设置',mb_OK+MB_ICONinformation);
    abort;
  end;

  if MessageBox(self.Handle,pchar('你确定将'+trim(dbgrdh1.FieldColumns['项目名称'].DisplayText)+' 项目删除吗?'),'提示信息',MB_ICONQUESTION+MB_YESNO)=ID_YES then
  begin
  str_sql := 'select fl from zd_flzd where flmc = ' + quotedstr(trim(dbgrdh1.FieldColumns['分类名称'].DisplayText));
  with qry_alter do
  begin
    close;
    sql.clear;
    sql.add(str_sql);
    open;
  end;
  qry_alter.first;
  Fl := qry_alter.fieldbyname('fl').asstring;

  str_sql := 'delete from zd_gbxx where code = ' + quotedstr(trim(dbgrdh1.FieldColumns['编码'].DisplayText))
  + ' and  xm = ' + quotedstr(trim(dbgrdh1.FieldColumns['项目名称'].DisplayText))
  + ' and fl = ' + quotedstr(Fl);
  with qry_alter do
  begin
    close;
    sql.clear;
    sql.add(str_sql);
    execsql;
  end;
  dxbrbtn34Click(Sender);//查询按钮

5.设置保存按钮(save)

    if edt_flmc.text = '' then
    begin
    Application.MessageBox('分类名称不能为空!已取消。',
                              '设置',mb_OK+MB_ICONinformation);
    abort;
  end;
  if edt_xm_2.text = '' then
    begin
    Application.MessageBox('项目名称不能为空!已取消。',
                              '设置',mb_OK+MB_ICONinformation);
    abort;
  end;

 

 if (edt_flmc.Text <> '') then
  begin
    str_sql := 'select fl from zd_flzd where flmc = ' + quotedstr(trim(edt_flmc.text));
    with qry_alter do
    begin
      close;
      sql.clear;
      sql.add(str_sql);
      open;
    end;
    qry_alter.first;
    Fl := qry_alter.fieldbyname('fl').asstring;

    str_sql := 'select code,xm from zd_gbxx where code = ' + quotedstr(Trim(edt_code.Text))+ ' and xm= '+ quotedstr(Trim(edt_xm.Text));
    with qry_alter do
    begin
      close;
      sql.clear;
      sql.add(str_sql);
      open;
    end;
    if qry_alter.RecordCount >= 1 then
    begin
          Application.MessageBox('该项目已存在!已取消添加。',
                              '设置',mb_OK+MB_ICONinformation);
      abort;
    end
    else if qry_alter.RecordCount = 0 then
    begin
    str_sql := 'insert into zd_gbxx(code,Fl,XM,DM,WBX) values(' + QuotedStr(Trim(edt_code.Text))+','
    +QuotedStr(fl)+','
    +QuotedStr(Trim(edt_XM_2.Text))+','
    +QuotedStr(Trim(edt_DM.Text))+','
    +QuotedStr(Trim(edt_wbx.Text))
    + ')';
    with qry_alter do
    begin
      Close;
      SQL.Clear;
      SQL.Add(str_sql);
      ExecSQL;
    end;
    end;
  dxbrbtn34Click(Sender);

  if alterflag = True then
  begin
    if edt_flmc.text = '' then
    begin
      Application.MessageBox('分类名称不能为空!已取消。',
                              '设置',mb_OK+MB_ICONinformation);
      abort;
    end;
    if edt_xm_2.text = '' then
    begin
      Application.MessageBox('项目名称不能为空!已取消。',
                              '设置',mb_OK+MB_ICONinformation);
      abort;
    end;
    if (edt_flmc.Text <> '') then
    begin
      str_sql := 'select fl from zd_flzd where flmc = ' + quotedstr(trim(edt_flmc.text));
      with qry_alter do
      begin
        close;
        sql.clear;
        sql.add(str_sql);
        open;
      end;
      qry_alter.first;
      Fl := qry_alter.fieldbyname('fl').asstring;
      str_sql := 'update zd_gbxx set code = '
      + quotedstr(Trim(edt_code.Text))
      + ' where fl = ' + quotedstr(fl)
      + ' and xm = ' + quotedstr(trim(dbgrdh1.FieldColumns['项目名称'].DisplayText))
      + ' and DM = ' + QuotedStr(Trim(dbgrdh1.FieldColumns['拼音代码'].DisplayText));
      with qry_alter do
      begin
        close;
        sql.clear;
        sql.add(str_sql);
        execsql;
      end;
      dxbrbtn34Click(Sender);
    end;
  end;

6.设置取消按钮。

  addflag := false;
  alterflag := False;
  edt_code.Text := '';
  edt_DM.Text := '';
  edt_XM_2.Text := '';
  edt_flmc.Text := '';
  edt_wbx.Text := '';

7.另一种添加,更改,删除的方法。利用parameters.parambyname('').value := ..

with adoquery do
begin
close;
sql.Clear;
sql.Add('insert into  gzyb (姓名,职务) values(:xm,:zw)');
Parameters.ParamByName('xm').Value:=trim(xmedit.Text);
Parameters.ParamByName('zw').Value:=trim(zwedit.Text);
execsql;
showmessage('添加成功!');
xmedit.Text:='';
zwedit.Text:='';
end;

try
with adoquery do
begin
close;
sql.Clear;
sql.Add('delete from gzyb where 姓名=:xm');
Parameters.ParamByName('xm').Value:=trim(xmedit.Text);
execsql;
showmessage('删除成功!');
xmedit.Text:='';
zwedit.Text:='';
end;
except
showmessage('删除失败!');
end;

///

try
with adoquery do
begin
close;
sql.Clear;
sql.Add('update gzyb set 职务=:zw where 姓名=:xm');
Parameters.ParamByName('xm').Value:=trim(xmedit.Text);
Parameters.ParamByName('zw').Value:=trim(zwedit.Text);
execsql;
showmessage('修改成功!');
xmedit.Text:='';
zwedit.Text:='';
end;
 except
showmessage('修改失败!');
end;