Para quien le sirva, logré encontrar la respuesta a la segunda pregunta, y gracias a tecno tengo la respuesta a la primera.
Lo resolvi con stored procedures.1. El primer paso fue crear un generador:
Todo lo que sigue se hace desde la ventana de iSQL de Interbase. (yo tengo la version 6.5)
CREATE GENERATOR PAC_ID_GEN;
2. Despues hay que crear un stored procedure. Tambien desde el iSQL.
SET TERM ^ ;
CREATE PROCEDURE PAC_ID_PROC
RETURNS (avalue INTEGER)
AS
BEGIN
avalue = GEN_ID (PAC_ID_GEN, 1);
END^
SET TERM ; ^
3. De ahi hay que poner un componente del tab de InterBase llamado IBStoredProc, lo pones en tu forma, lo asocias con la base de datos que ya debes tener en tu forma y con la transaccion tambien. De le das click en la propiedad StoredProcName del Object Inspector y seleccionas el stored procedure que acabas de crear arriba!
4. Ahora solo tienes que usarlo, por ejemplo yo puse un edit simple en mi forma. Y quiero que al crearlo me desplegue el valor del generador en ese edit. Este valor puede luego ser usado como una llave para tus campos.
Entonces en el OnCreate de tu forma pones el siguiente codigo:
IBStoredProc1->ExecProc();
Edit1 -> Text = IBStoredProc1->ParamByName("avalue")->AsString;
Y listo! claro recuerda agregar el edit! y ponerle el nombre adecuado en el codigo, en caso de que no se llame Edit1.
ok?
Laters!