我的代码如下: 
the first procedure: 
with myquery do 
begin 
   if not active then 
   begin 
      //其中KeyCode是关键字,种子,逐一递增一 
      Parameters.ParamByName('KeyCode').Value := 0; //取出0条记录 
      Open; 
   end; 
   Append; 
   Post; 
end 
the second procedure: 
with myquery do 
begin 
   myKeyCode := FieldByName('KeyCode').AsInteger; 
end 
我想取出第一个procedure生成的新纪录的KeyWord值,但每次都是读出的 
是0值,不知是不是和参数值设为1有关,哪位大侠能解毒这段代码的问题 
后来我用dbgrid显示下myquery的内存记录,发现KeyWord没有存任何值,而
其他字段显示正常,游说能解答问题

解决方案 »

  1.   

    SQL中有相应的函数不过不刻了,
      

  2.   

    把 myquery 的SQL 语句写出来
      

  3.   

    myquery的sql语句是
       select * from myTable where KeyCode = :KeyCode
      

  4.   

    Parameters.ParamByName('KeyCode').Value := 0; 
    根据这条语句,将取出 KeyCode=0 的所有记录,如果表中没有符合这个条件的记录,则返回一个空集。
    这时你要插入新记录可以啊:
     Append;
     FieldByName('KeyCode').AsInteger:=YourKeyCode; 
     Post; 如果这是一个 AutoInc 字段,则不能这样写,你要刷新 myquery 才能取得其值
      

  5.   

    这里的KeyCode是AutoInc型字段,每次append记录后,用dbgrid观察myquery的记录情况,
    发现KeyWord的字段值为空,用FieldByName取KeyCode的值都是0,而其它字段填写均正常,这是为什么,有谁碰到这种情况.
      

  6.   

    刷新嘛,Refresh ,或 Close,Open因为 AutoInc 字段是数据库自动为你生成的,你 Append 后,其它字段都在本地,当然看得见,而自增字段在数据库中,要重新取回来才行