begin
    ADOQueryCom.close;
    ADOQueryCom.SQL.Clear;
    ADOQueryCom.SQL.Text:='update Company set Company=:UpdateText where Company=:SelectedItem';
    ADOQueryCom.Parameters.ParamByName('SelectedItem').Value:=DBLookupListBox1.SelectedItem;
    ADOQueryCom.Parameters.ParamByName('UpdateText').Value:=Edit1.Text;
    ADOQueryCom.ExecSQL;
    end;弹出好几个出错,为什么?

解决方案 »

  1.   

    address violation at address...之类的冲突,有好几个
    请问批量update的方法如何?我的方法是否可行?
      

  2.   

    你的company 肯定是char类型的吧在sql里面你要写 update 的话应该是这样的
    update company
    set company = 'value1'
    where company = 'value2'
    所以你的sql写错了的
    你应该这样写
      adoquery1.close;
      adoqeury1.sql.clear;
      adoquery1.sql.add('update Company set Company='+''''+p_val1+''''+' where company='+''''+p_val2+'''' );
      adoquery1.open;
      在这前面你先把p_val1,p_val2赋值就好了    
      

  3.   

    试用下面语句:
    With ADOQueryCom Do
    Begin
      Close;
      SQL.Text := 'Update Company Set Company='''+Trim(Edit1.Text)+''' Where Company='''+Trim(DBLookupListBox1.SelectedItem)+''' ';
      ExecSQL;
    End;
      

  4.   

    也就是说update不能用ADOQueryCom.Parameters.ParamByName,而select就可以,对吗?为什么呢?回答我马上结贴
      

  5.   

    不是update不能用parameters方法而是你update的对象是char类型的写SQL的时候要加''号导致你用parameters方法不方便!上面我写的有一个地方不对adoquery1.open;
      应该是adoquery1.execsql;
      

  6.   

    我想写入两个以上的值,就是说中间有‘,’  不知道应该怎么写,'''''烦死人了!
    我想用parameters方法,因为sql语句在一航太长很难看,不知道应该怎么写?搞了很久都不行
      

  7.   

    出错说sql语句结束位置缺少分号(;),请问这句错在那?
          SQL.Text := 'insert into Company(Company,SubUnit1) values ('''+DBLookupListBox1.SelectedItem+''','''+Trim(Edit2.Text)+''') Where Company='''+DBLookupListBox1.SelectedItem+''' ';