Da maneira que está não ocorrerá autoincremento, sempre será gerado 
o mesmo código:

DataModulo.TREGRA.FieldByName('CDREGRA').Value:=
DataModulo.TREGRA.FieldByName('CDREGRA').Value + 1;

O que pode fazer eh criar uma TREGRA1 que aponte para a mesma tabela 
TREGRA do banco e usar dessa forma.

// vai para o ultimo registro da TREGRA1
DataModulo.TREGRA1.Close;
DataModulo.TREGRA1.Last;
DataModulo.TREGRA1.Open;

DataModulo.TREGRA.Append;
DataModulo.TREGRA.FieldByName('CDREGRA').Value:=
DataModulo.TREGRA1.FieldByName('CDREGRA').Value + 1; // observe que 
está pegando o codigo da TREGRA1
"""
"""

Vale lembrar que CDREGRA1 deve ser chave primária.

Roberto.


--- Em delphi-br@yahoogrupos.com.br, "Info Desenvolvimento" 
<[EMAIL PROTECTED]> escreveu
> Possuo uma tabela que o campo é auto-incremento. Como faço para 
que sejam gravados registros nesta tabela
> Estou mandando gravar, mas não está gravando, está gravando por 
cima
> 
> Exemplo no meu botão gravar, onde está o erro?
> 
>  if(Application.MessageBox
>   ('Confirma a Gravação dos dados?',
>    'CONFIRMAÇÃO',mb_IconQuestion+mb_YESNO)=idyes)then
>   BEGIN
>    LStatus.Visible:= True;
>    LSTATUS.Caption:= 'Inclusão de Registro!';
>    DataModulo.TREGRA.Open;
>    DataModulo.TREGRA.Edit;
>    DataModulo.TREGRA.FieldByName('CDREGRA').Value:= 
DataModulo.TREGRA.FieldByName('CDREGRA').Value + 1;
>    DataModulo.TREGRA.FieldByName('DESCRICAO').Value:= 
EDESCRICAO.Text;
>    DataModulo.TREGRA.FieldByName('PERCENTUAL').Value:= EPERC.Text;
>    DataModulo.TREGRA.FieldByName('VAL_LIMITE').Value:= 
ELIMITE.Text;
>    DataModulo.TREGRA.FieldByName('DTINI_RETENCAO').AsDateTime:= 
strtodate(EINICIO.Text);
>    DataModulo.TREGRA.FieldByName('DTFIM_RETENCAO').AsDateTime:= 
strtodate(EINICIO.Text);
>    IF RGRETENCAO.ItemIndex = 0 THEN
>       DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 's';//Semanal
>     IF RGRETENCAO.ItemIndex = 1 THEN
>        DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 'q';//Quinzenal
>      IF RGRETENCAO.ItemIndex = 2 THEN
>         DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 'm';//Mensal
>       IF RGRETENCAO.ItemIndex = 3 THEN
>          DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 't';//Trimestral
>        IF RGRETENCAO.ItemIndex = 4 THEN
>           DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 'e';//Semestral
>         IF RGRETENCAO.ItemIndex = 5 THEN
>            DataModulo.TREGRA.FieldByName
('TP_RETENCAO').AsString:= 'a';//Anual
>    DataModulo.TREGRA.FieldByName('DTINI_VALIDADE').AsDateTime:= 
strtodate(EINIVALID.Text);
>    DataModulo.TREGRA.FieldByName('DTFIM_VALIDADE').AsDateTime:= 
strtodate(EFIMVALID.Text);
>    DataModulo.TREGRA.Post;
>    ShowMessage('Operação realizada com sucesso!');
>    LStatus.Visible:= False;
>    EDESCRICAO.Clear;
>    EPERC.Clear;
>    ELIMITE.Clear;
>    EINICIO.Clear;
>    EFIM.Clear;
>    EINIVALID.Clear;
>    EFIMVALID.Clear;
>    EDESCRICAO.Enabled:= False;
>    EPERC.Enabled:= False;
>    ELIMITE.Enabled:= False;
>    EINICIO.Enabled:= False;
>    EFIM.Enabled:= False;
>    EINIVALID.Enabled:= False;
>    EFIMVALID.Enabled:= False;
>    BitGrava.Enabled:=  False;
>    BitEdita.Enabled:=False;
>    BitCancela.Enabled:=False;
>    BitDeleta.Enabled:= False;
>    RGRETENCAO.ItemIndex:= -1;
>    RGRETENCAO.SetFocus;
>   END;
> 
> [As partes desta mensagem que não continham texto foram removidas]





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a