我从一张表中查处一个int型的数据项,把它在于另一个数相加,在更新回该数据项,Delphi报无法操作,不知语句该如何写才对 ?谢谢帮助。
a,b:integer
a;=adoquery1.FieldByName('字段').Value+b;//不能执行
adoquery1.sql.add('update 表名 set 字段=''a'' where=……);
这个update语句中的变量a的付值,adoquery与大部分书上讲的qrery的属性也不一样,没有params和后面一连串属性来给a付值,不好意思请多多帮助解决上面两个问题。

解决方案 »

  1.   

    a;=adoquery1.FieldByName('字段').AsInteger+b;
      

  2.   

    a;=adoquery1.FieldByName('字段').Value+b;//不能执行
    adoquery1.sql.add(format('update 表名 set 字段= %d where=……',[a]));
      

  3.   

    a,b:integer
    a;=adoquery1.FieldByName('字段').AsInteger+b;//不能执行
    adoquery1.sql.text := 'update 表名 set 字段=''' + IntToStr(a) +''' where=……';
      

  4.   

    经过实验,我用带参数的sql语句解决了这个问题:(不过我的字段类型为float,我想这是不影响的)
    如下:
    窗体用了一个adoconnection,一个adoquery,一个datasource,一个button,一个dbedit运行结果:每单机一次,dbedit的值增加b的值,这里为2.5////////////////////////////////////////////////////////////
    按钮单机事件如下:
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
    a_previous,a_changed,b:double;
    begin
    //------------------------------------
    b:=2.5;
    a_previous:=strtofloat(dbedit1.Text);
    a_changed:=strtofloat(dbedit1.Text)+b;
    //------------------------------------
    with adoquery1 do
    begin
    //------------------------------------
    Close;
    SQL.Clear;
    sql.add('update 东一变 set 电压35KV=:a_changed where(电压35KV=:a_previous)');
    Parameters.ParamByName('a_changed').Value:=a_changed;
    Parameters.ParamByName('a_previous').Value:=a_previous;
    ExecSQL;
    //------------------------------------
    Close;
    SQL.Clear;
    sql.add('select * from 东一变');
    open;
    //------------------------------------end;
    /////////////////////////////////////////////////////////////////////
    窗体代码如下:
    object Form1: TForm1
      Left = 248
      Top = 278
      Width = 544
      Height = 375
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object DBEdit1: TDBEdit
        Left = 120
        Top = 136
        Width = 121
        Height = 21
        DataField = '电压35KV'
        DataSource = DataSource1
        TabOrder = 0
      end
      object BitBtn1: TBitBtn
        Left = 288
        Top = 48
        Width = 75
        Height = 25
        Caption = 'BitBtn1'
        TabOrder = 1
        OnClick = BitBtn1Click
      end
      object ADOConnection1: TADOConnection
        Connected = True
        ConnectionString = 
          'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=G:\My_D' +
          'ataBase\my access database\My_电力信息远传系统.mdb;Persist Security Info' +
          '=True'
        LoginPrompt = False
        Mode = cmShareDenyNone
        Provider = 'Microsoft.Jet.OLEDB.4.0'
        Left = 48
        Top = 16
      end
      object ADOQuery1: TADOQuery
        Active = True
        Connection = ADOConnection1
        CursorType = ctStatic
        Parameters = <>
        SQL.Strings = (
          'select * from 东一变;')
        Left = 120
        Top = 16
      end
      object DataSource1: TDataSource
        DataSet = ADOQuery1
        Left = 184
        Top = 16
      end
    end
      

  5.   

    我试运行了一下,在a;=adoquery1.FieldByName('字段').AsInteger+b;大概意思差不多的语句中说等号附近有语法错误。真实一头雾水。就是没感觉哪错。
      

  6.   

    a;=adoquery1.FieldByName('字段').AsInteger+b;
    ":"号而不是“;”
      

  7.   

    select column1+column2 as column3 from urtable
    这样不行吗??
    ---------------------------------------              欢迎访问 http://www.coderpub.com 技术论坛
      

  8.   

    update 表名 set 字段=字段+XX where XX