各位高手,
        小弟有个问题还不能解决了,请指点一下,可以直接发在.cn
我现在以编了,可是程序没有出错了,你帮我修改了一下按我的思路,在我的
原代码上改一点,
  SQL中的表为username,字段为(username,password, bh,xb)
有一个窗口为form4       一个combobox1 .一个datasource  ground 为gb_1
一个adquery1  ,一个ado_user:,四个文本edit(e_bh, e_user, e_bh, c_xb)
,这段程序是一个增加(b_xz),删除(b_sc),修改(b_xg),取消(b_xq),保存(b_bc),关闭(b_gb)
实现功能了,
这个程序是有点小错误的,帮我修改一下;(这个程序,我点击修改功能,等修改完了,在点击保存,记录能修改成功!能实现这个功能,但是我要增加一条记录在点击保存可是表没有增加新记录,)
定义一个全局变量标志符:
var
    bsf:string;      
   procedure tform4.s_save;     (定义一个保存过程)这个程序是没有错的
begin
  with  form4 do
    begin
      if bsf='xz' then
         adoquery1.Append
       else
        begin
          adoquery1.Edit;
          adoquery1.FieldByName('bh').AsString:=trim(e_bh.Text);
          adoquery1.FieldByName('username').AsString:=trim(e_user.Text);
          adoquery1.FieldByName('password').AsString :=trim(e_password.Text);
          adoquery1.FieldByName('xb').AsString :=trim(c_xb.Text);
          adoquery1.Post;
        end;
      end;
 end;
procedure  tform4.s_show;   (定义一个显示过程)
begin
   form4.ADOQuery1.Close;
   form4.ADOQuery1.SQL.Clear;
   form4.ADOQuery1.SQL.Add('select * from username');
   form4.ADOQuery1.Open;
 end;
procedure tform4.s_clear(var bb:boolean);    (定义一个清屏过程)这个程序也没有出错
var
i:integer;
begin
     with form4 do
        begin
           b_xz.Enabled:=true;
           b_xg.Enabled:=true;
           b_sc.Enabled:=true;
           b_bc.Enabled:=false;
           b_qx.Enabled:=false;
           b_gb.Enabled:=true;
           e_bh.Text:='';
           e_user.Text:='';
           e_password.text:='';
           c_xb.Text:='';
         for i:=0 to gb_1.controlcount-1 do
            begin
            if (gb_1.Controls[i].ClassType=tedit) or
               (gb_1.Controls[i].ClassType=tcombobox  )  then
                begin
                   if bb =false then
                       gb_1.Controls[i].Enabled :=false
                   else
                      gb_1.Controls[i].Enabled:=true;
               end;
          end;
     end;
 end;procedure TForm4.b_xzClick(Sender: TObject);   这是一个实现新增功能的,应该是没有出错的问题
var
bb:boolean;
begin
  bsf:='xz';
  bb:=true;
  s_clear(bb);
  e_bh.SetFocus;
   b_xz.Enabled:=false;
  b_xg.Enabled:=false;
  b_sc.Enabled :=false;
  b_bc.Enabled:=true;
  b_qx.Enabled :=true;
  b_gb.Enabled:=false;
end;procedure TForm4.b_xgClick(Sender: TObject); 我认为这个程序是没有错的,是实现修改功能;
var
i:integer;
begin
 if trim(e_bh.Text)<>'' then
   begin
    bsf:='xg';
    for i:=0 to gb_1.ControlCount-1 do begin
      if (gb_1.Controls[i].ClassType =tedit) or (gb_1.Controls[i].ClassType=tcombobox ) then
          gb_1.Controls[i].Enabled:=true;
       b_xz.Enabled:=false;
       b_xg.Enabled:=false;
       b_bc.Enabled:=true;
       b_sc.Enabled:=false;
       b_qx.Enabled:=true;
       b_gb.Enabled:=false;
       end;
    end
 else
      begin
         showmessage('请选择修改值');
      end;
   end;
procedure TForm4.b_bcClick(Sender: TObject);  这个程序是实现保存的功能,是有点小错误的,帮我修改一下;(这个程序,我点击修改功能,等修改完了,在点击保存,记录能修改成功!能实现这个功能,但是我要增加一条记录在点击保存可是表没有增加新记录,)
var
ss:boolean;
begin
  if trim(e_bh.Text)='' then
     begin
       showmessage('请输入编号值');
       e_bh.SetFocus;
       exit;
     end;
     if bsf <>'xg'  then         关键的就是这个红程序有点问题
       begin
          adoquery1.Close;
          adoquery1.SQL.Clear;
          adoquery1.SQL.Add('select * from username where bh='
          +char(39)+trim(e_bh.Text)+char(13));
          adoquery1.Open;
      end;
if adoquery1.recordcount<0 then
  begin 
     showmessage(‘请输入值’);
     exit;
end; 
   if trim(e_user.Text)='' then
       begin
         showmessage('请输入用户名);
         e_user.SetFocus;
         exit;
       end;
   if trim(e_password.Text)='' then
       begin
        showmessage('请输入密码值');
        e_password.SetFocus;
        exit;
       end;
   if trim(c_xb.Text)= ''then
      begin
        showmessage('请选择性别’);
        c_xb.SetFocus;
        exit;
       end;
  if application.MessageBox('记录真的保存吗?',4+32)= 6 then
     begin
        s_save;
        s_show;
        ss:=false;
        s_clear(ss);
     end
  else
   exit;
 end;
end.
       

解决方案 »

  1.   

    //我改了下面一点地方,仔细看看:)
    procedure tform4.s_save;     
    begin
      with  form4 do
        begin
          if bsf='xz' then
             adoquery1.Append
           else
            begin
              adoquery1.Edit;
              adoquery1.FieldByName('bh').AsString:=trim(e_bh.Text);
              adoquery1.FieldByName('username').AsString:=trim(e_user.Text);
              adoquery1.FieldByName('password').AsString :=trim(e_password.Text);
              adoquery1.FieldByName('xb').AsString :=trim(c_xb.Text);
            end;
           adoquery1.Post;  //这样你追加记录的时候才能post呀:)
          end;
     end;
    还有,你的程序结构化写的太差了,不要总用exit。