建了一个视图由base,buy2个表组成:buy(顺序码,条形码,进价,采购数量,采购日期)base(条形码,书籍名称,库存量,书籍名称,作者,出版社,零售价)。DBGrid显示的是视图的内容。然后我要输入数据
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('insert into base values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)');
form1.ADOQuery1.Parameters.ParamByName('条形码').Value:=strToFloat(form1.Edit1.Text);
form1.ADOQuery1.Parameters.ParamByName('书籍名称').Value:=form1.Edit2.Text;
form1.ADOQuery1.Parameters.ParamByName('库存量').Value:=strToInt(form1.Edit7.Text);
form1.ADOQuery1.Parameters.ParamByName('作者').Value:=form1.Edit3.Text;
form1.ADOQuery1.Parameters.ParamByName('出版社').Value:=form1.Edit4.Text;
form1.ADOQuery1.Parameters.ParamByName('零售价').Value:=strToFloat(form1.Edit5.Text);
form1.ADOQuery1.ExecSQL;
我用这样输入但是不能执行。因为SQL SERVER里视图不能自动更新,所以我就想直接对基本表进行操作,但是我怎么也找不到一个办法解决。所以要请大家帮帮忙,我想几天了~~都郁闷死了

解决方案 »

  1.   

    这样吧!
    with ADOQuery1 do
    begin
      sql.clear;
      sql.add('insert into base values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)');
      //最好加上你要录入的表中的字段名称,以防出错
      //比如:insert into base(a,b,c,d,e,f) values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)'
      Parameters.ParamByName('条形码').Value:=strToFloat(form1.Edit1.Text);
      Parameters.ParamByName('书籍名称').Value:=form1.Edit2.Text;
      Parameters.ParamByName('库存量').Value:=strToInt(form1.Edit7.Text);
      Parameters.ParamByName('作者').Value:=form1.Edit3.Text;
      Parameters.ParamByName('出版社').Value:=form1.Edit4.Text;
      Parameters.ParamByName('零售价').Value:=strToFloat(form1.Edit5.Text);
      ExecSQL;
    end;//没有编译,如果有问题,请说出问题是什么
      

  2.   

    SQL SERVER里视图不能自动更新  那如果要更新视图 怎么处理呢?
      

  3.   

    错误是ADOQuery1:Parameters‘条形码’not found
      

  4.   

    这样吧!
    with ADOQuery1 do
    begin
      sql.clear;
      sql.add('insert into base values(:a,:b,:c,:d,:e,:f)');
      //最好加上你要录入的表中的字段名称,以防出错
      //比如:insert into base(a,b,c,d,e,f) values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)'
      Parameters.ParamByName('a).Value:=strToFloat(form1.Edit1.Text);
      Parameters.ParamByName('f).Value:=form1.Edit2.Text;
      Parameters.ParamByName('c).Value:=strToInt(form1.Edit7.Text);
      Parameters.ParamByName('d').Value:=form1.Edit3.Text;
      Parameters.ParamByName('e).Value:=form1.Edit4.Text;
      Parameters.ParamByName('f').Value:=strToFloat(form1.Edit5.Text);
      ExecSQL;
    end;这样再出问题就没天理了!!!还有:建议你不要用中文名作变量
      

  5.   

    建议这样直接写成sql语句
    query1.close; 
    query1.sql.text:='insert into base(a,b,c,d,e,f) values('
      + form1.Edit1.Text+','+form1.Edit2.Text+','+form1.Edit7.Text+','
    类的,其余的你自己添加,注意要与库中的格式相同。
    你可以用showmessage(query1.sql.text)在query1.execsql前来检验一下语句是否正确。祝在新的一年中成为Delphi大拿
      

  6.   

    视图其实就是一组SQL语句,如果是单表视图的话,写的上面的语句,在没有约束的情况下,能实现更新。
    便如果是多表视图的话。更新起来是比较困难的。可以直接对视图相关的表进行操作。
      

  7.   

    兄弟我理会错你的意思了。直接更新用来组成你的视图的表,再刷新一下视图就OK了,在我的印象中SQL Server的多表视图用AdO时也能更新
      

  8.   

    谢谢大家的帮助啊!!!~我来了~~~现在去试试 Kshape()的方法
      

  9.   

    Kshape() 告诉你一个不幸的事
    我试试了。还不行你有油箱吗??
    我把程序发给你。你看看