Fórum problema no post firebird #336325
17/01/2007
0
estou com um grande problema aqui, tem dois dias que não consigo sair dele e a ajuda de voces vai ser de excelente valia.
quando estou dando post na tabela (DM.cdsOcoInclude.Post;) ele dá o erro:
Project project1.exe raised exception class EDBClient with message ´´. Process stopped. use step or Run to continue.
Essa tabela de ocorrencias, tem um campo que criei uma trigger para auto-incrementar o campo CODIGOocorrencia.
Se eu defino:
DM.cdsOcoIncludeCODIGOOCORRENCIAS.AsString := ´1´;
DM.cdsOcoInclude.Post;
ele grava no post sem problema, mas assim, não incrementa o campo Codigo, e todos os registros ficam com CODIGOOCORRENCIAS = 1
Ou seja, não resolve
estou nessa briga a facadas com essas duas linhas tem umas 20 horas seguidas... please!! alguem pode me ajudar?
Garciabh3
Curtir tópico
+ 0Posts
17/01/2007
Landersongomes
Vc está usando acesso via dbExperss?
Caso seja procure sobre providerFlags dos Tfields...
Uma outra opção seria vc usar uma query informando o valor max de codigo e acrescentar um a este... tipo:
if dmSAE.cdsCadDoctosID_DOCTO.IsNull then
dmSAE.cdsCadDoctosID_DOCTO.AsInteger :=
dmSAE.cdsMaxDoctoMAX.AsInteger + 1;
dmSAE.cdsCadDoctos.Post;
Lembrando sempre de abrir a query antes e fechar depois das atualizações.
Gostei + 0
17/01/2007
Aroldo Zanela
Você está usando ClientDataSet? Se sim, usou ApplyUpdates(-1)? Pode colocar um fragmento maior do código?
Gostei + 0
17/01/2007
Emerson Nascimento
veja se resolve
Gostei + 0
17/01/2007
Garciabh3
landersongomes:
Sim, estou usando dbExpress e ClientDataSet
Aroldo:
ele dá pau no post, antes do applyupdates
(não chega na parte do apply)
trecho do codigo mais detalhado:
if (Funcao = ´Inserir´) then begin DM.cdsOcoInclude.Open; DM.cdsOcoInclude.insert; DM.cdsOcoIncludeDATA.AsString := DateToStr(now); DM.cdsOcoInclude.Post; DM.cdsOcoInclude.ApplyUpdates(0); end;
é simples, mas to apanhando de 20 a 0
emerson:
já tinha alterado a Flag para required false, mas se eu não passo nada para o campo, dá aquela mensagem de erro sinistra. se eu passo, funciona (mas não auto-incrementa)
Gostei + 0
17/01/2007
Garciabh3
UWHOOOOOOOO
funcionou!!!
brigadão pela luz!!!
consegui alterando a trigger
CREATE TRIGGER TRG_OCORRENCIAS_INC
FOR OCORRENCIAS ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
if (NEW.CODIGOOCORRENCIAS = 0) then
NEW.CODIGOOCORRENCIAS = GEN_ID(GEN_OCORRENCIAS_ID, 1);
END
sem o if (NEW.CODIGOOCORRENCIAS = 0) then
quando eu ia editar, ele fazia uma confusão doida
era mesmo problema de trigger, agora deu!
pra quem ler este post no futuro com esta duvida,
eu passo o
DM.cdsOcoIncludeCODIGOOCORRENCIAS.AsInteger := 0;
e uso o novo trigger
nó... que luta!!!
valeu, gente
Gostei + 0
18/01/2007
Bruno.sensatta
CREATE SEQUENCE <NOME_DA_SEQUENCE>
minvalue 1
maxvalue 99999999999
start with 1
increment by 1
nocache;
esta criada a sequence, agora para chama-la basta vc colocar no evento after insert do Client data set a seguinte query
Select <nome_da_sequence>.nextvalue SEQUENCIAL from dual
simples não acha ??
só entendendo o que fiz, montei um select e renomei o nome da coluna que ira retornar para SEQUENCIAL, agora basta vc atribuir o valor desta coluna no campo onde deseja exibila, ou passa-la para o client data set no respectivo campo....
Espero ter ajudado um pouco mais,
Abraços!!
Gostei + 0
18/01/2007
Bruno.sensatta
CREATE SEQUENCE <NOME_DA_SEQUENCE>
minvalue 1
maxvalue 99999999999
start with 1
increment by 1
nocache;
esta criada a sequence, agora para chama-la basta vc colocar no evento after insert do Client data set a seguinte query
Select <nome_da_sequence>.nextvalue SEQUENCIAL from dual
simples não acha ??
só entendendo o que fiz, montei um select e renomei o nome da coluna que ira retornar para SEQUENCIAL, agora basta vc atribuir o valor desta coluna no campo onde deseja exibila, ou passa-la para o client data set no respectivo campo....
Espero ter ajudado um pouco mais,
Abraços!!
Gostei + 0
18/01/2007
Bruno.sensatta
=)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)