Criando campo auto-incremento utilizando Generator no Firebi

Delphi

13/04/2006

Olá a todos

Fiz o exemplo de uma video-aula da clube delphi, mas não esta dando certo, da erro ´Field value requerid´, não consigo nem trocar de registro no grid, mas no exemplo do Everson funciona blz

alguem sabe o q pode estar errado.

francisco Nussbaum


Nussbaum

Nussbaum

Curtidas 0

Respostas

Ariovaldo

Ariovaldo

13/04/2006

Bom vamos tentar ajudar:

- Você deve ter criado o Generator Correto!
- Também deve ter criado a Triger na Tabela que dispara o Generator!
- Acredito que o que deve tar faltando é vc ligar o seu Generator no Seu DataSet ( Propriedade Generator Fields.


GOSTEI 0
Nussbaum

Nussbaum

13/04/2006

Blz!

Bom vc poderia me explicar um pouco sobre a Propriedade Generator Fields que vc citou?
Esta em qual componente?
SQLDataSet ou ClientDataSet?
faz diferença estou usando o Delphi 2005. no caso não achei esta propriedade, tenho que fazer atravez de linha de codigo.

Agradeço a ajuda, sou um pobre universitario que tem Java como base na facul e estou começando em uma empresa em delphi


GOSTEI 0
Titanius

Titanius

13/04/2006

Blz! Bom vc poderia me explicar um pouco sobre a Propriedade Generator Fields que vc citou? Esta em qual componente? SQLDataSet ou ClientDataSet? faz diferença estou usando o Delphi 2005. no caso não achei esta propriedade, tenho que fazer atravez de linha de codigo. Agradeço a ajuda, sou um pobre universitario que tem Java como base na facul e estou começando em uma empresa em delphi


O GeneratorField, se não me engano tem somente no IBX, no ClientDataSet ou no DBX não tem esta opção... o que você pode fazer para pegar o Valor do generator e incrementar ele, eh isso:

select gen_id(NOME_GENERATOR, INC)


Onde:

NOME_GENERATOR = Nome do seu Generator
INC = Valor integer para incrementar o generator em questao.

Espero ter ajudado
[]s


GOSTEI 0
Nussbaum

Nussbaum

13/04/2006

Olá titanius

Bom fiz assim no banco de dados, usando IBExpert

/////////
CREATE table CLIENTES (CODIGO integer NOT null PRIMARY key,
NOME VARCHAR(25) NOT null,
FONE VARCHAR(18));

CREATE GENERATOR GEN_CLIENTES;

CREATE trigger TRG_CLIENTES_INS
FOR CLIENTES before insert position 0
as
begin
if (NEW.CODIGO IS NULL) then
NEW.CODIGO = gen_id(GEN_CLIENTES, 1);
end
/////////

como utilizo pelo dbexpress com os componentes de acesso?


GOSTEI 0
Titanius

Titanius

13/04/2006

Dessa forma, o codigo somente sera gerado quando o registro for comitado para o banco... funciona perfeitamente, mas para utilidades que voce precise antecipadamente do codigo, este tipo de funcao nao funciona... entedeu?

Pra rodar no DBX, vc precisa desta vinculacao

SQLConnection -> SQLDataset -> DataSetProvider > ClientDataSet -> DataSource

na respectiva ordem...


[]s


GOSTEI 0
POSTAR