Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Fórum DevMedia


Autor
Mensagem
Informações sobre o chamado:
Criado em: 3/9/2010 5:04:32 PM
Status deste chamado: em andamento
Última ação ref. este chamado: Chamado resp. pelo usuario
  Ver histórico do chamado
Clei Flavio Martins
 

País: Brasil
Estado: SP
Cidade: Rio Claro
Mensagens: 21
#ID: 385651   Postado em: 3/9/2010 5:04:32 PM

Fala Galeraaa,

Estou tendo um problema com o meu auto incremento do meu banco.

tenho minha tabela e assim quando vou inserindo registro ele vai incrementando no meu campo ID da minha tabela mas o incremento chega uma hora e para tipo assim,  na minha tabela o id está em 526 mas no meu generator do incremento ele está em 523 assim dando conflito e não fazendo o registro em minha base.

Alguem poderia me ajudar.


Valeuu 

Clei Flavio


EDUARDO C. VILARO
 

País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 3
#ID: 385663   Postado em: 3/9/2010 11:40:32 PM
A dica seria
1 - Observar se no campo ID de seu ClientDataSet em FieldEditor o required está como false.
2 - No ClientDataSet no evento OnNewRecord vc esta passando algum ID ???
3 - No Gererator do Seu DB  está identico ao número de registros existentes ??
4- Pode ser feito de duas formas
  4_1 - Passar um ID No OnNewRecord usando o generator do FireBird usando uma function
  4_2 -  Passar no OnNewRecord  0  e usar StoreProcedure
5- Existiu um  caso que fiz um insert via código pelo IBEXpert o Gererator não foi acionado ficando com 0 resultando um transtrono imenso.
6- Usa  Transação [ Comit  / RollBack ] ?
 
7-  Qual firebird está usando ?  Delphi Versão ?
 
8 - Se usou alguns dos itens acima ? 
 
 
Diagnosticar erros ou Problemas gerados devemos primeiramente descrever de que forma está usando concorda ?  fica muito mais facil te ajudar.

 
Deivison
 

País: Brasil
Estado: PE
Cidade: x
Mensagens: 87
#ID: 385706   Postado em: 6/9/2010 9:37:28 AM
Fiz uma função que talvez te ajude (baseada na conexão dbexpress):
 
//Cabeçalho da função
function GeneratorID (aName: string; Connection: TSQLConnection; Incrementa: Boolean): integer;
 
 
//função
function GeneratorID (aName: string; Connection: TSQLConnection;
  Incrementa: Boolean): integer;
var
  Qry: TSQLQuery;
begin
  Qry := TSQLQuery.Create(nil);
  try
    Qry.SQLConnection := Connection;
    if Incrementa then
      Qry.SQL.Add(
        'SELECT GEN_ID('+aName+', 1) FROM RDB$DATABASE')
    else
      Qry.SQL.Add(
        'SELECT GEN_ID('+aName+', 0) FROM RDB$DATABASE');
    Qry.Open;
    Result := Qry.Fields[0].AsInteger;
  finally
    FreeAndNil(Qry);
  end;
end;
 
Qualquer coisa estou à disposição!!
 
Atenciosamente,
 
Emanoel Deivison
Recife - PE

 
Clei Flavio Martins
 

País: Brasil
Estado: SP
Cidade: Rio Claro
Mensagens: 21
#ID: 385708   Postado em: 6/9/2010 9:45:29 AM
Bom vamos responder !!



1 - Observar se no campo ID de seu ClientDataSet em FieldEditor o required está como false.

 - sim está false.

2 - No ClientDataSet no evento OnNewRecord vc esta passando algum ID ???

 - não estou passando nenhum valor nesse evento.

3 - No Gererator do Seu DB  está identico ao número de registros existentes ??

Então, ai que é o problema, o meu generator está parando de gerar numero porem ai que dá pau, pq quando faço uma inserção de registro ele acusa dados duplicados, pq meu generator está parado.

4- Pode ser feito de duas formas
  4_1 - Passar um ID No OnNewRecord usando o generator do FireBird usando uma function
  4_2 -  Passar no OnNewRecord  0  e usar StoreProcedure
5- Existiu um  caso que fiz um insert via código pelo IBEXpert o Gererator não foi acionado ficando com 0 resultando um transtrono imenso.
6- Usa  Transação [ Comit  / RollBack ] ?

Não
 
7-  Qual firebird está usando ?  Delphi Versão ?

Firebird 2.0 e Delphi 7
 
8 - Se usou alguns dos itens acima ? 
 
Diagnosticar erros ou Problemas gerados devemos primeiramente descrever de que forma está usando concorda ?  fica muito mais facil te ajudar.



Será que com essas informações vc consegue me ajudar ?




 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 913
#ID: 385770   Postado em: 6/9/2010 8:50:07 PM
altere seu generator de modo a ser maior que o maior id da sua tabela.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
#ID: 385785   Postado em: 7/9/2010 10:07:43 AM
Você deve ajustaro generator´para ficar igual ao do id da sua tabela.
Depois utilize a função que o Emanoel passou sempre no Before Post das suas tabelas.
Se quiser eliminar os teus generators te passo uma função que incrementa pelo Id de suas tabelas.

 
Clei Flavio Martins
 

País: Brasil
Estado: SP
Cidade: Rio Claro
Mensagens: 21
#ID: 385883   Postado em: 9/9/2010 9:32:36 AM

 

Galera seguinte, alterar o generator para maio que a minha tabela eu  fiz isso varias vezes porem o sistema roda normalmente mas depois o problema volta, o meu generator para ( " Ele meio que volta ") mas o meu id passa, tipo assim.

Tabela - ID = 2450  Generator = 2450 
ai o sistema ta rodando normal derrepente fica assim
Tabela - ID = 2500  Generator = 2498  
Ai que dá o problema minha tabela não consegue inserir registro porque é chave primaria e ele vai inserir um id que já existe.

Eu queria saber o porque isso está acontecendo e como acertar isso ?



 
Clei Flavio Martins
 

País: Brasil
Estado: SP
Cidade: Rio Claro
Mensagens: 21
#ID: 385909   Postado em: 9/9/2010 1:12:33 PM
Galera percebi uma coisa em  minha base e acho que pode ajudar a conclusão desse post.
 

Notei que  meus dados na minha tabela ficam aleatorios muito estranho acho que ai pode estar o problema.

Exemplo:

ID
1
2
3
4
200
5
6
7
198
6
.
.
199

Ai vou ver meu generator e está no 200

alguem sabe porque ?

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03