数据库维护

简介:

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;

 








本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/955993,如需转载请自行联系原作者




相关文章
循环控制中关键字break和continue的使用
循环控制中关键字break和continue的使用
198 1
|
JavaScript 开发者
[vue2/vue3] -- 深入剖析v-model的原理、父子组件双向绑定的多种写法
[vue2/vue3] -- 深入剖析v-model的原理、父子组件双向绑定的多种写法
[vue2/vue3] -- 深入剖析v-model的原理、父子组件双向绑定的多种写法
|
存储 Kubernetes Cloud Native
2021年11个我们喜爱的DevOps开源工具
2021年11个我们喜爱的DevOps开源工具
902 0
|
API 数据处理 开发工具
探索iOS开发的未来:SwiftUI和Combine的融合
【7月更文挑战第23天】随着Apple不断推动其软件开发工具的创新,SwiftUI和Combine框架的出现标志着iOS开发进入了一个新的时代。本文将深入探讨这两个框架如何简化界面设计和事件处理,以及它们如何共同为开发者提供一个更加高效、声明式的编程模型。我们将通过实际示例来展示如何利用SwiftUI构建用户界面,并使用Combine处理异步事件和状态管理。文章还将预测这些技术如何塑造iOS应用开发的未来趋势。
|
存储 缓存 Cloud Native
阿里云 ClickHouse 企业版云原生 ClickHouse 技术揭秘
云数据库 ClickHouse 企业版是阿里云和 ClickHouse, Inc 战略合作打造的云原生ClickHouse 产品。企业版推出专属 SharedMergeTree 云原生引擎,支持存算分离,Serverless 秒级实时弹性,集群吞吐和查询效率线性扩展及 Lightweight update 实时更新能力。本文将详细揭秘 SharedMergeTree 实现机制,实时弹性扩展实现原理,lightweight update 技术实现原理,同时对企业版和开源版进行详细的性能测试对比。
2213 1
阿里云 ClickHouse 企业版云原生 ClickHouse 技术揭秘
|
开发框架 安全 .NET
『部署实操』使用 IIS 在 Windows 上托管 ASP.NET Core
使用 IIS 在 Windows 上托管 ASP.NET Core
1180 0
『部署实操』使用 IIS 在 Windows 上托管 ASP.NET Core
|
双11 黑灰产治理
二选一:电商一年一度周期性话题,也是伪命题
2019年10月14日下午,阿里市场公关委员会王帅不得不再次回应“二选一”的问题,王帅说,“这个话题炒作的已经让人生厌。我们尊重法院的任何判决结果,我们实在不愿意再被动的配合某些企业的无底线无休止的炒作了”。
205 0
二选一:电商一年一度周期性话题,也是伪命题
|
网络协议 iOS开发
NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
“IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下。
6709 0
|
自然语言处理 机器学习/深度学习 数据可视化
NLP神器spaCy 2.1中文预训练模型
spaCy是最流行的开源NLP开发包之一,它有极快的处理速度,并且预置了词性标注、句法依存分析、命名实体识别等多个自然语言处理的必备模型,因此受到社区的热烈欢迎。中文版预训练模型包括词性标注、依存分析和命名实体识别,由汇智网提供,下载地址:spaCy2.1中文模型包 。
4417 0