2013-07-06 29 views
0

我有一个TSQLQuery组件,叫做qryUltimoProyectoCreado,下一个查询:检索和管理DB数据

select gen_id(GEN_PROYECTO_ID, 0) 
from rdb$database; 

查询组件有一个数据集组件,叫做dsUltimoProyectoCreado。 现在,在我的代码,我需要执行阙查询(开放)和操作检索的行:

DMConnect.qryUltimoProyectoCreado.Open; 
{ now ? } 

任何想法?即时通讯新手在德尔福。谢谢 !。

+0

你有意打算用step = 0调用gen_id()吗?顺便说一句,从FB 2.0开始,建议生成新值的方法是**从rdb $ database **中为选择下一个值[http://www.firebirdsql.org/refdocs/langrefupd20-genid.html](http:/ /www.firebirdsql.org/refdocs/langrefupd20-genid.html) – pf1957

回答

1

与查询Fields物业刚工作:

DMConnect.qryUltimoProjyectoCread.Open; 
if not DMConnect.qryUltimoProjyectoCread.IsEmpty then 
    NewID := DMConnect.qryUltimoProjyectoCread.Fields[0].AsInteger; 

它的更好,如果你给你的栏(尤其是那些函数或存储过程的结果),在SQL别名:

DMConnect.qryUltimoProjyectoCread.SQL.Text := 'select gen_id(GEN_PROYECTO_ID, 0)' + 
               ' as NewID from rdb$database;'; 
DMConnect.qryUltimoProjyectoCread.Open; 
if not DMConnect.qryUltimoProjyectoCread.IsEmpty then  
    MyNewID := DMConnect.qryUltimoProjyectoCread.FieldByName('NewID').AsInteger; 

上面链接的文档页面的底部有一些链接,显示如何使用Delphi中的数据处理数据,您可能会发现它们很有用。

+0

优秀的作品! – ramiromd