我从1个表里选出了想要的字段,用ADOQuery控件显示出来了。
现在我想向这个组合表里增加(或修改)一个记录。
选表的SQL语句如下:
select f_lineno as 线路代码,f_name as 线路名称 from a_tline order by f_lineno我是这样写的:
procedure TForm9.Button1Click(Sender: TObject);
begin
   form8.ADOQuery1.append;
   form8.ADOQuery1.fieldvalues['线路代码']:=Form9.Edit1.Text;
   form8.ADOQuery1.fieldvalues['线路名称']:=Form9.Edit2.Text;
   form8.ADOQuery1.post;
   form8.ADOQuery1.refresh;
end;
运行通过,但当操作时报错如下:
[microsoft][odbc driver for oracle][oracle]ora-12704:字符集不匹配
不知道怎么改

解决方案 »

  1.   

    用sql语句不行吗
     with ADOquery do
    begin
      close;
    sql.clear;
    sql.add('insert into a_tline(f_lineno) values('+chr(39)+Form9.Edit1.Text+chr(39)+ ')';
    sql.execute;
    end;
      

  2.   

    用SQL语句完全可以实现,而且非常简单,但是需要两个ADOQUERY,一个用来显示你的字段,另一个用来进行追加记录  查询:
      with ADOquery1 do
        begin
          close;
          sql.clear;
          sql.add(' select * from  a_tline where 条件  ');
          open;
        end;
       追加:
      with ADOquery1 do
        begin
          close;
          sql.clear;
          sql.add(' insert into  a_tline  values('''+edit1.text+''',等等) ');
          execSQL;     
        end; OK!!!!
      

  3.   

    你的form8.ADOQuery1 Open了吗?
    form8.ADOQuery1.append;
       form8.ADOQuery1.fieldByName('线路代码').asstring:=Form9.Edit1.Text;
       form8.ADOQuery1.fieldByName('线路名称').asstring:=Form9.Edit2.Text;
       form8.ADOQuery1.post;
      

  4.   

    字段取了别名,造成的。
    select f_lineno ,f_name from a_tline 
    order by f_lineno显示中文字段名,可以有其他很多方式吗?
    为什么要这样做呢!
      

  5.   

    1、首先要adoqry.OPEN,才能进行adoqry.Append.
    2、在数据库结构字段中不要用中文字符,这样非常容易出错!
       到时也可以在ADOqry中修改!
      

  6.   

    用了大家说的方法,还是老毛病,唉
    用法如下:
     strsql:= 'insert into  a_tline(f_lineno,f_name)values'('''+Edit1.Text+''','''+Edit2.Text+''')'; with form8.ADOQuery1 do
    begin
    close;
    sql.clear;
    sql.add(strsql);
    execSQL;
    end;
    还是报错,字符集不匹配再问:如果我是从多个表取得所需字段用ADOAquery组合成一个表,需要插入或修改记录,那又该如何办?
      

  7.   

    form8.ADOQuery1.append;
       form8.ADOQuery1.fieldvalues['线路代码']:=Form9.Edit1.Text;
       form8.ADOQuery1.fieldvalues['线路名称']:=Form9.Edit2.Text;
       form8.ADOQuery1.post;