我现在在做毕业设计,遇到了一个问题,求高人指教,我先在BDE里面自己建了一个database  bobo,里面有一张Tuser的表,我界面上有一个query和datasource,DBgrid三个组件,可以对表Tuser进行插入 删除 更新操作可是我把建的database删了,在sql server 2000里面建了一个bobo的数据库,用ODBC连接上的时候,database也能显示出来同样是bobo。可是我只能做插入操作,不能删除或者更新,不然就报错,插入的时候是正常的,竟然会遇到这样的问题,求高手啊!!错误是这样的:invalid field name [microsoft][ODBC SQL server Driver][SQL server]列名'as'无效这是我插入键的代码:
begin
    with query1 do
    begin
    close;
     sql.Clear;
     sql.Add('insert into Tuser values (:id,:psd)');
     params[0].AsString:='as';
     params[1].AsString:='as';
    execsql;
   close;
   end;
   showmessage('保存成功!');   begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from Tuser');
  Query1.open;
  end;
end;这个是我删除键的代码:
var
  s:string;
  s0:string;
begin
  s0:='"';
  s:='delete from Tuser where id='+s0+'as'+s0 ;
  with query1 do
  begin
  close;
  sql.Clear;
  SQL.Add(s);
  execsql;
  close;
  end;  begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from Tuser');
  Query1.open;
  end;
end;

解决方案 »

  1.   

     s0:='"';
      s:='delete from Tuser where id='+s0+'as'+s0 ;这地方明显有问题,你的ID就是as?按理说as应该是个变量来的,不然你只能删固定的ID为as的一条记录了.而且你这样加双引号也不对.参数下面代码,假如有个id变量,是字符串型的,应该这样:s:='delete from Tuser where id='+quotedstr(id);
    //...
    按理说叫id的字段应该是整型的,但看原来的代码它应该的字符串
      

  2.   

    1.是问题就好好问 什么分享嘛
    2.虽然我不懂 数据库 可看你这代码 感觉你连基本的Delphi 写 SQL 语句都不懂
    SQL里字符串用单引号  而不是 " 因为delphi 的单引号是字符串定义的界限 所以 delphi 字符串 里的单引号要用#39 代替
    s0:='"';
    s0:=''''; 或 s0:=#39;你还是别毕业了吧.
    分给我你继续深造吧....
      

  3.   

    这个是没错的哦,我主要好奇的是两种连接database的方法一种行得通,一种不行
      

  4.   

    bde就别用了,ado可以替代它了
    as在mssql里也算是一个关键字了,做字段名,要[as],或者干脆换掉
      

  5.   

    AS只是我随机输入的一个字符串而已,不管输入什么都会出错的,我很奇怪,打算五一过了去请教delphi老师去。楼上的朋友,绝对不是引号问题,我觉得可能是哪里还需要设置,如果把BDE全部改ADO的话,工作量会很大,我12张表,几十个连接
      

  6.   


    Parameters.ParamByName('字段').Value:='as';这样才是赋值把?
      

  7.   

    或者说哪位有一个BDE连接数据库sql server 200的成功实例,一个小案例就行,我被这个弄得头疼死了
      

  8.   

    s:='delete from Tuser where id='+s0+'as'+s0 ;高,实在是高,楼主这水平,还是不要毕业,就留在学校吧。过几年评个级什么的,然后升个教授,钱包那是多多的。就不要出来害社会了。
      

  9.   

    用个DBNavigator放上去就可以了,要不就弄个ActionList,里面加入准动作,都在dataset那一类里
    懒人的办法, 代码里是得用两个单引号来替换双引号,这个问题也困绕我好几天才解决。
    建议用ADO,BDE移植不大方便。用ADO一编译完就可以直接复制到其他机器上用。
      

  10.   

    插入时是没错,因为你用的变量,这个引号问题就没有浮现出来
    但是删除的代码不对,看在都被同样问题烦恼的份上帖代码
    DataModule2.ADOQuery1.Close;
    DataModule2.ADOQuery1.SQL.Clear;
    DataModule2.ADOQuery1.SQL.Add('delete from Tuser where id = :id'  );  //设置删除条件
    DataModule2.ADOQuery1.Parameters.ParamByName('id').Value := '你要赋的值';//给变量id赋值
    DataModule2.ADOQuery1.Open;这样能看懂吧???变量还是用赋值的方式来进行维护比较好。再不行就按照我上一楼的办法用控件解决。