我想做一个表单:
    此表单连接一个数据库的表,上面用几个显示此数据库的 DBEDIT 显示此数据的几个字段,下面用一个 DBGRIDEH 来显示此数据的所有记录,最后用几个 BUTTON 来操作这个表
 一个BUTTON用来‘添加’
 一个BUTTON用来‘修改’
 一个BUTTON用来‘删除’
最后二个 一个‘确认’ 一个‘取消’
现在的问题是:我要点‘添加’ 和‘修改’时,并不真的添加和修改,只是把‘确认’和‘取消’变为可按状态,只在‘确认’和‘取消’中执行操作。还有在‘添加’和‘修改’时我想先检查一下表字段‘DWBM’里有没有重复的,有的话不添加,给出提示信息,
请问我几个按钮的代码要怎么写,谢谢!

解决方案 »

  1.   

    有个UPDATESQL控件,自己搜索一下看.
      

  2.   

    前面的没太看明白,解释一下“判断数据库里是否已经有此记录,如果有,给出提示”
    with query do
    begin
    close;
    sql.clear:
    sql.text:="select count(*) as sl from 表 where 表.dwbm=:(变量)录入的记录";
    sql.execsql;
    end;
    if sl>=1 then //如果sl大于1,说明已经有了当前的记录,出现重复情况。
    messagebox("当前记录已经存在");
    exit;
    有问题请加QQ:19533286,大家共同学习。
      

  3.   

    to today_learning(szg) :
      前面的没太看明白,解释一下“判断数据库里是否已经有此记录,如果有,给出提示”
    就是如果有这条记录就是要确定‘DWBM’唯一,但数据库里 ’DWBM‘并不是索引。
    TO alonesnake(一盘菜):
    呵呵,我毕业一年了,不过不是计算机专业。TO whbo(王红波) :好,谢谢,期待中`````。
      

  4.   

    现在的问题是:我要点‘添加’ 和‘修改’时,并不真的添加和修改,只是把‘确认’和‘取消’变为可按状态;
    不如你把自己的代码贴出来,我们改吧。象你上面说得,难道你的添加和修改代码就只把那两个button,enable了?你不会在添加里没写append或insert,在修改前没把table置为eidt吧。把你button的代码给出来,我们改。
      

  5.   

    我要点‘添加’ 和‘修改’时,并不真的添加和修改·········要不要在DBEDIT 和 DBGRID  中显示? 如果不显示那就很好办了 要是显示的话~~~~~~用临时表试试  要不就先添加进去 然后判断删除~~:)
      

  6.   

    procedure Twzmc_form.FormShow(Sender: TObject);
    begin
          dm.ADOQ2.SQL.Clear;
          dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
          dm.ADOQ2.Active:=true;
    end;procedure Twzmc_form.Button1Click(Sender: TObject);
    begin
         dm.ADOQ2.Append;//添加按钮   我想按下此按钮时变为可添加状态,然后添加。
    end;procedure Twzmc_form.Button2Click(Sender: TObject);
    begin
        //我还没写 修改按钮 我想按下此按钮时变为可编辑状态,然后编辑。
    end;
    procedure Twzmc_form.Button3Click(Sender: TObject);
    begin
         //还没写, 删除,
    end;
    procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
    begin
          if key=#13 then
          begin
             key:=#0;
             perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
          end;
    end;procedure Twzmc_form.Button4Click(Sender: TObject);
    begin     dm.ADOQ2.Post; //确定按钮,还不会写。
    end;
      

  7.   

    在你的代码中修改了,不知和不和你的要求
    procedure Twzmc_form.FormShow(Sender: TObject);
    begin
          dm.ADOQ2.SQL.Clear;
          dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
          dm.ADOQ2.Active:=true;
    end;procedure Twzmc_form.Button1Click(Sender: TObject);
    begin
       Button4.setfocus;   
      // dm.ADOQ2.Append;//添加按钮   我想按下此按钮时变为可添加状态,然后添加。
    end;procedure Twzmc_form.Button2Click(Sender: TObject);
    begin
        Button4.setfocus;
     //我还没写 修改按钮 我想按下此按钮时变为可编辑状态,然后编辑。
    end;
    procedure Twzmc_form.Button3Click(Sender: TObject);
    begin
        Button4.setfocus;  
    //还没写, 删除,
    end;
    {procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
    begin
          if key=#13 then
          begin
             key:=#0;
             perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
          end;
    end;}procedure Twzmc_form.Button4Click(Sender: TObject);
    begin
      if Button1.Click then 
      begin   
        dm.ADOQ2.Append;
      end;
      if Button2.Click then 
      begin
        dm.ADOQ2.delete;  
      end;
      if Button3.Click then 
      begin
        dm.ADOQ2.edit;  
      end;
        // dm.ADOQ2.Post; //确定按钮,还不会写。
    end;
    写完了才知道没有多大意义,而且这样的逻辑也是错误的
      

  8.   

    唉,看来我还是没有说明白,我是说点‘添加’ 和‘修改’时,并不真正的 添加 和 修改!晕,我看我是说不清楚 了,谁有操作数据库的源码,发我油箱,多谢了,高分送上!
    [email protected]
      

  9.   

    to  whythinkwhy(小生):
    按正常应该怎么写。
      

  10.   

    简单的说...要按你的意思就是在ReadOnly上变来变去.
    你点添加就是ReadOnly:=false,再APPEND一个记录把.输入完后再确定就是POST进去...ReadOnly:=True
    点修改就是把数据库的ReadOnly从TRUE变成FALSE..确定修改后再重新READONLY:=TRUE;
      

  11.   

    请看
    http://community.csdn.net/Expert/topic/3603/3603884.xml?temp=5.001467E-02
    和此贴一起结贴
      

  12.   

    在Twzmc_form类中定义一个过程SetButton;
    procedure Twzmc_form.SetButton;
    begin
      if dm.ADOQ2.state in [dsedit,dsinsert] then
      begin
        Button4.Enable := True;
        Button5.Enable := Button4.Enable;
      end
      else
        Button4.Enable := False;
        Button5.Enable := Button5.Enable;
      end;   //  假如ADOQ2处于增加或编辑状态, 则确定取消按钮可用;
    end;
    procedure Twzmc_form.FormShow(Sender: TObject);
    begin
       dm.ADOQ2.Close;
       dm.ADOQ2.SQL.Clear;
       dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
       dm.ADOQ2.Active:=true;
       SetButton;    //  窗体显示时设置按钮状态;  确定取消此时应该是不可用;
    end;procedure Twzmc_form.Button1Click(Sender: TObject);
    begin
      dm.ADOQ2.Append;//添加按钮   我想按下此按钮时变为可添加状态,然后添加。
      SetButton;    //  现处于添加状态,确定取消按钮此时应该是可用;
    end;procedure Twzmc_form.Button2Click(Sender: TObject);
    begin
      dm.ADOQ2.Edit;//编辑按钮   我想按下此按钮时变为可添加状态,然后添加。
      SetButton;    //  现处于编辑状态,确定取消按钮此时应该是可用;
    end;
    procedure Twzmc_form.Button3Click(Sender: TObject);
    begin
      try
        if not DM.ADOQ2.Isempty then
         DM.ADOQ2.Delete;     //删除按钮
      except
         // ------处理异常代码
      end; 
    end;procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
    begin
          if key=#13 then
          begin
             key:=#0;
             perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
          end;
    end;procedure Twzmc_form.Button4Click(Sender: TObject);
    begin
      try
        DM.ADOQ2.connection.BeginTrans;   开始事务
        dm.ADOQ2.Post; //确定按钮,还不会写。
        SetButton;     //  设置确定取消为不可用
        DM.ADOQ2.connection.CommitTrans;   提交事务必
      except
        DM.ADOQ2.connection.RollbackTrans   事务回流
        //  其它异常处理代码
      end;
    end;
    procedure Twzmc_form.Button5Click(Sender: TObject);
    begin
       DM.ADOQ2.Cancel;   //取消按钮
       SetButton;
    end;
         //  我也不知道你是不是这个意思.    呵呵看我这么累给点分吧
      

  13.   

    多谢各位,不过现在问题仍然没有解决。可以继续帮看看
    http://community.csdn.net/Expert/topic/3603/3603884.xml?temp=.2292597