下列代码执行后,没有任何错误,但就是不修改数据库数据,不知道错在哪里,各位看看.try
    datamodform.ADOConDB.BeginTrans;   //调用存储过程,存储过程没问题,我已经在SQL分析器里执行,可以修改数据表,但在这里执行,
   //却不能修改数据表,怪.    with adostoredproc2 do 
    begin
      close;
      parameters.ParamByName('@tbname').Value := extra_tablename ;
      parameters.ParamByName('@fldname').Value := combobox3.Text ;
      parameters.ParamByName('@datatype').Value := vdatatype ;
      parameters.ParamByName('@size').Value := spinedit3.Value  ;
      parameters.ParamByName('@precision').Value := spinedit4.Value  ;
      execproc;
    end;
   
    with ADOQy_uddbstruct do
    begin
      close;
      sql.Clear;
      sql.add('select * from uddbstruct where udd_tablename = '''+extra_tablename+'''');
      sql.add(' and udd_fldname = '''+combobox3.Text +'''');
      open;
      if not eof then
      begin
        edit;
        fieldbyname('udd_datatype').AsString := combobox2.Text ;
        fieldbyname('udd_size').Asinteger := spinedit3.Value;
        fieldbyname('udd_precision').Asinteger := spinedit4.Value;
        fieldbyname('udd_res_cn_s').Asstring := edit3.text;
        post;
      end;
    end;
    with adoqy_udforms do
    begin
      close;
      sql.Clear;
      sql.add('select * from udforms where udf_formname = '''+extra_formname +'''');
      sql.add('  and (udf_ctrlname = '''+'lab'+combobox3.Text+'''');
      sql.add('  or udf_ctrlname = '''+'grd'+combobox3.Text+''')');
      open;
      while not eof do
      begin
         edit;
         fieldbyname('udf_caption').AsString :=  edit3.Text;
         post;
         next;
      end;
    end;    datamodform.ADOConDB.CommitTrans ;
    application.MessageBox('successful to save (提交成功。)','INFORMATION(信息)',MB_ICONINFORMATION+mb_ok);
 except
   datamodform.ADOConDB.RollbackTrans;
   application.MessageBox('修改数据表,提交失败。','错误',MB_ICONERROR+mb_ok);
 end;

解决方案 »

  1.   

    while not EOF do 
    begin
      .......
      Next;
    enb;用Sql语句更新最好
      

  2.   

    是不是对ADOQy_uddbstruct没有循环处理?
      

  3.   

    ADOQy_uddbstruct不需要循环,它最多只有一条合乎条件的记录,
    并且,我跟踪的时候,全部正常执行,但就是不修改数据,真是晕呀,而我的"增加过程"却能正确新增数据,真是怪.
      

  4.   

    while not EOF do 
    begin
      .......
      post;
      refresh;
      Next;
    enb;
      

  5.   

    with adoqy_udforms do
        begin
          close;
          sql.Clear;
          sql.add('select * from udforms where udf_formname = '''+extra_formname +'''');
          sql.add('  and (udf_ctrlname = '''+'lab'+combobox3.Text+'''');
          sql.add('  or udf_ctrlname = '''+'grd'+combobox3.Text+''')');
          open;
          first;//先定位数据集指针
          while not eof do
          begin
             edit;
             fieldbyname('udf_caption').AsString :=  edit3.Text;
             post;
             next;
          end;