query1.ParamByName('tt').AsString:=query1.fieldbyname('Bid').asstring;
上面的那一句有问题,同一个query既用来删除数据,又用来取得参数,当然不行。
要么你在执行之前首先取得tt的值,在选中记录的时候就可以这样写:
tt := query1.fieldbyname('Bid').asstring;

解决方案 »

  1.   

    你的方法是直接用SQL语句到数据库里去删除数据,其实大可不必,而且即使是这样,你的代码也确实是错的,错误就是上面这位朋友说的。
    实际上你可以点击DBGrid后,直接用DBGrid所连接的Query.Delete实现删除,何必用SQL语句呢?而且用了SQL语句删除记录,前段的DBGrid还要动态刷新,太累了。
      

  2.   

    首先要保正query.requestlive为true
    然后对当前行执行query.delete;
    最后若要确认,用query.post;
      

  3.   

    同意楼上,具体方法为:
    设置Query1.Requirelive为True;
    if messagedlg('真的要删除吗?',mtinformation,[mbyes,mbno],0)=mryes then
      Query1.Delete;
      

  4.   

    呵呵query1.Close都CLOSE掉了
    你去哪里读query1.fieldbyname('Bid').asstring啊?
    在CLOSE前用一变量装你的query1.fieldbyname('Bid').asstring
    然后再判断