Atualização Grid para o Banco de Dados
19/03/2013
0
Criei um modulo de cadastro de unidades de medida.
Nele tenho uma Grid que nela mesmo eu insiro as informaçoes na tabela (Unidades), com os campos CODIGO e DESCRICAO.
O campo CODIGO é auto incremento.
E os componentes para conexao que utilizo é SQLConection, ClientDataSet, DataSetProvider, SQLTable.
Agora o que esta acontecendo:
Quando eu insiro uma nova unidade no campo descrição ( na Grid), o campo CODIGO nao se auto enumera, mas se eu deixo a nova descrição la, como UN (exemp.), e fecho todo o sistema, a informação vai pro banco e quando eu abro o sistema novamente o cadastro esta feito e o campo esta numerado.
O que eu quero que ocorra:
Que quando eu inserir a nova unidade de medida, o campo CODIGO, tem que auto enumerar quando eu der seta pra baixo, para cadastrar uma nova unidade. Ao inves de eu ter que ficar abrindo e fechando o sistema.
Fico grato a qualquer ajuda.
Obrigado.
Christiano Treib
Posts
19/03/2013
Danillo Camargo
Criei um modulo de cadastro de unidades de medida.
Nele tenho uma Grid que nela mesmo eu insiro as informaçoes na tabela (Unidades), com os campos CODIGO e DESCRICAO.
O campo CODIGO é auto incremento.
E os componentes para conexao que utilizo é SQLConection, ClientDataSet, DataSetProvider, SQLTable.
Agora o que esta acontecendo:
Quando eu insiro uma nova unidade no campo descrição ( na Grid), o campo CODIGO nao se auto enumera, mas se eu deixo a nova descrição la, como UN (exemp.), e fecho todo o sistema, a informação vai pro banco e quando eu abro o sistema novamente o cadastro esta feito e o campo esta numerado.
O que eu quero que ocorra:
Que quando eu inserir a nova unidade de medida, o campo CODIGO, tem que auto enumerar quando eu der seta pra baixo, para cadastrar uma nova unidade. Ao inves de eu ter que ficar abrindo e fechando o sistema.
Fico grato a qualquer ajuda.
Obrigado.
Boa tarde Christiano Treib. Tudo bem?
Tenta fazer o seguinte no evento "AfterPost" do seu clientdataset:
procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet); begin ClientDataSet1.ApplyUpdates(0); end;
Qualquer dúvida estou à disposição,
Atenciosamente,
19/03/2013
Christiano Treib
Primeiramente muito obrigado pela sua resposta.
Poderei te dizer se deu certo mais a noite.
Pois meu projeto esta em casa e estou no trabalho no momento.
Mas deixo aqui meu Obrigado.
Em breve te dou uma resposta.
19/03/2013
Danillo Camargo
Primeiramente muito obrigado pela sua resposta.
Poderei te dizer se deu certo mais a noite.
Pois meu projeto esta em casa e estou no trabalho no momento.
Mas deixo aqui meu Obrigado.
Em breve te dou uma resposta.
Ok, fico no aguardo.
Segue uma correção no código do post acima:
procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet); begin ClientDataSet1.ApplyUpdates(0); ClientDataSet1.Refresh; end;
Atenciosamente,
19/03/2013
Christiano Treib
Deu certo, era exatamente isso.
Porem surgiu mais um probleminha rsrs.
Digamos que o meu Codigo parou no 12, quando eu excluo esse registro, e insiro um novo, o novo registro acaba sendo o 13 e nao o 12.
O que pode ser isso?
Valeu.
20/03/2013
Danillo Camargo
Deu certo, era exatamente isso.
Porem surgiu mais um probleminha rsrs.
Digamos que o meu Codigo parou no 12, quando eu excluo esse registro, e insiro um novo, o novo registro acaba sendo o 13 e nao o 12.
O que pode ser isso?
Valeu.
Você está trabalhando com o campo auto incremento do banco de dados certo?
Caso esteja, é uma característica do auto incremento do próprio banco de dados. Não vou saber te informar se é possível alterar essa situação.
Caso precise "resetar" o incremento, segue comando para o banco SQL Server:
DBCC CHECKIDENT ('nome_tabela', RESEED, numero_inicial)
onde:
nome_tabela = nome da tabela que será alterada;
numero_inicial = número que será iniciado o incremento;
Uma sugestão é fazer um rotina de geração de chaves pegando a chave do último registro da tabela e somando um. Assim ficaria da forma que você precisa!
Qualquer dúvida estou à disposição,
Atenciosamente,
20/03/2013
Christiano Treib
Na minha tabela eu vou tirar o auto-incremento do campo e no meu comando quando eu inserir um novo registro, o seu codigo sera o ultimo + 1.
Certo?
Valeu.
20/03/2013
Danillo Camargo
Na minha tabela eu vou tirar o auto-incremento do campo e no meu comando quando eu inserir um novo registro, o seu codigo sera o ultimo + 1.
Certo?
Valeu.
Boa tarde Christiano,
Sim, minha sugestão é criar uma rotina que, antes de salvar os registro no banco de dados, consulte qual é a última chave do banco de dados e acrescente + 1 a ela.
Se prefirir, me passa seu e-mail que mando um exemplo.
Qualquer dúvida estou à disposição,
Atenciosamente,
20/03/2013
Perivaldo Martins
Boa sorte bons códigos!
20/03/2013
Christiano Treib
Meu email:
christiano.treib@hotmail.com.br
Meu sistema nao sera em rede.
valeu.
20/03/2013
Danillo Camargo
Boa sorte bons códigos!
Boa noite Martins. Tudo bem?
Muito boa observação, obrigado por se atentar.
Aplico a rotina de geração de chave no evento "BeforeUpdateRecord" do datasetprovider. Assim a geração acontece na camada "servidora" (camada de negócio) no caso de sistema em rede.
Mais uma vez obrigado pela atenção,
Bons códigos,
Atenciosamente,
21/03/2013
Danillo Camargo
Abraços.
Olá Christiano.
Enviei na hora do almoço, não chegou?
Atenciosamente,
21/03/2013
Christiano Treib
Recebi sim.
Vou testar mais a noite.
Muito obrigado pela a atenção.
Clique aqui para fazer login e interagir na Comunidade :)