同意  prometheusphinx(白日梦)
我也试过,不过可以不可以看看代码啊?

解决方案 »

  1.   

    cursor在一般情况下翻译为光标,在数据库里是指的游标操作(TTABLE、TQUERY等能够返回数据集的控件都要用到它)
      

  2.   

    多谢各位,很保歉,我五点就下了,所以现在才看到,是这样的我想做一个像工作日志表能记录用户的登录情况,他的字段包括用户名和用户类型还有登陆时间,我做了三个form和一个module,第一个form是登陆窗体,第二个是一个button控件第三个是一张记录用户登录的表,module中有两个query一个用于登陆窗体,另一个用于记录用户登录的表,我想可能是第三张表的编码有问题,每次运行时,运行流程是这样的,先进入一个登录界面,等你登录后出现一个button,按了button后出现form3,每次在按了button后出错。form2的button代码如下:
    procedure TForm3.Button1Click(Sender: TObject);
     begin
        with dm2.query2 do
     begin
      close;
      sql.clear;
      sql.add('insert 工作日志 (用户名,用户类型,登录时间)');
      sql.Add('select 用户名,用户类型,getdate() from 用户表1');
      sql.add('where 用户名=:username');
      parambyname('username').AsString:=name;
      prepare;
      open;
      end;
    form4.show;
    end;
    end.
      

  3.   

    产生上面错误的原因是没有区分Open 和 ExecSql 的差异,对于一般返回结果集的SQL语句,如"Select * from ..."这样的操作,应用Query.Open ,而对于没有返回结果的SQL语句,例如上面的"Insert 工作日志..."应用Query.Execute.
      

  4.   

    这中错误一般是执行sql语句造成的
    insert ...
    Query2.ExecSQL
    然后,select...
    Query2.Open
      

  5.   

    用sql时如 select * from tablename 时是不是要用execsql来结尾
      

  6.   

    同一张表,同一个query用两次execsql是不是会出错