Fórum cdskit: cannot perform this operation on a closed dataset #374971

16/09/2009

0

ola galera tenho esse funcao...
Function RetornaChave(Indice: String;incremento:integer): Integer; begin dm.cdsid.Close; dm.Cdsid.CommandText:=´SELECT GEN_ID(´ + Indice +´,´+inttostr(incremento)+´) AS ID_RET FROM RDB$DATABASE´; dm.cdsId.Open; if dm.CdsId.IsEmpty then raise Exception.Create(´Não foi criado nenhum valor.´) else result := dm.CdsId.FieldByName(´ID_RET´).AsInteger; end;


esssa procedure...
procedure Tfrmcadkit.BitBtn5Click(Sender: TObject); begin messagebox(frmcadkit.Handle,´Deseja novo registro?´,´Atenção´, mb_YesNo+mb_iconinformation); if messagebox(frmcadkit.handle,´Deseja novo registro?´,´Atenção´, mb_YesNo+mb_iconinformation) =(mryes) then begin dm.cdskit.Append; editcodigo.Text:=inttostr(retornachave(´GEN_KITS_ID´, 1)); editcod.SetFocus; end else if messagebox(frmcadkit.Handle,´Deseja novo registro?´,´Atenção´, mb_YesNo+mb_iconinformation)=(mrno) then begin editcod.SetFocus; end; end;

enfim, deveria me retornar o ultimo valor do generator! mais deu esse erro aí! em outro form os msm codigo funcionaram, mais com outro generator.

alguem podia me ajudar? :idea: se tiverem intendido :shock:


Thiagoangra2

Thiagoangra2

Responder

Posts

30/09/2009

Djfabioninja

Fala Thiago, blz?

Voce não mencionou em qual momento está obtendo o erro, mas vou tentar ajudar com o que entendi:

O erro que vc está tendo (cannot perform this operation on a closed dataset) tá dizendo (não se pode fazer esta operação em um dataset fechado).
Pois bem, na sua função, voce dá um close no dataset, muda a instrução e em seguida dá o open. Acredito que isso esteja funcionando certinho. Um detalhe que deve ser atentado é que o dataset que está retornando o erro é o CDSKIT. Na sua procedure voce dá um APPEND no CDSKIT, se ele não estiver setado como OPEN anteriormente ele irá retornar esse erro mesmo, justamente porque ele (´nao pode fazer esta operação em um dataset fechado´). Experimente dar um OPEN antes do APPEND só pra testar.

Espero ter ajudado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar