Fórum Como editar os campos de uma tabela menos um????????????? #375789
09/10/2009
0
Uso TEdits, Table..
Gero o codigo automaticamente na hora da inserção
Table1.First;
while not Table1.Eof do
begin
ultimo := Table1cod_os.AsInteger;
Table1.Next;
end;
edit1.Text := inttostr(ultimo + 1);
Meu problema é que quando vou editar a tabela
o codigo que ja esta no Edit é inserido de novo e da erro.
Vou tentar explicar melhor:
tenho o codigo 250(edit1) e o nome(edit2) ricardo por exemplo..
vou em editar..
edito o nome ..
quando vou gravar
Tblcodigo.value := edit1.text (recebe de novo ja estava gravado)
tblnome.value := edit2.text (edito o nome que eu queria)
Dai da erro porque o codigo já existe!!!!!!!!!!!
Então quando vou editar posso editar qualquer campo menos o do codigo pq e automatico,
mas quando eu digitava o codigo nao tinha esse problema!!!!!!
O comando para gerar codigo esta no botao table.insert!!!!!!!!
To com as idéias embaralhadas demaiiiisssss
Por favor se alguém entendeu me ajude!!!!!!!
Kaka_dp
Curtir tópico
+ 0Posts
09/10/2009
Marcos.gandin
Aí é só você gravar o código que o SQL retornou.
Select max(cod) + 1 as Codigo From tabela
edit1.Text := IntToStr(Query.FieldByName(´Codigo´).asInteger);
Gostei + 0
09/10/2009
Lehapan
Espero ter ajudado.
Gostei + 0
09/10/2009
Wagnermarrane
Espero ter ajudado.
Gostei + 0
11/10/2009
Carlosrm
acho que o jeito mais simples de resolver isso, sem precisar muitas alterações, é colocar um desvio antes de gravar o tblCodigo.
Se a tabela (dataset) estiver em inserção, o sistema grava. Se estiver em estado diferente de inserção, ´pula´ essa linha.
Mais ou menos assim:
If (table.state = dsInsert) then Tblcodigo.value := edit1.text; //(recebe de novo ja estava gravado)
Assim, se estiver em edição, na hora de gravar o campo código permanecerá o mesmo. Talvez haja alguma variação na escrita do código, mas a idéia geral acho que te serve.
Claro que existem muitas outras maneiras, mas a que melhor atende só você pode avaliar.
boa sorte. carlosrm.
Gostei + 0
13/10/2009
Carlosrm
desculpe, eu fui apressado ao responder. Uma maneira mais decente de contornar o que você postou, não alterando a sua programação, é:
1º) Ignore meu comentário anterior.
2º) Acrescente este pedaço de código
edit1.text := Table1cod_os.AsInteger;
no momento (evento) em que entrar em edição (ao pressionar um botão editar, clicar no dbgrid, ou qualquer outro método que esteja usando.)
Assim, na hora de gravar, se estava em Inserção, o edit1 tem o valor do último código mais um. Se era edição, o edit1 tem o código do próprio registro já gravado na tabela.
Aí é só gravar.
boa sorte.carlosrm
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)