Ajuda - Busca - Membros - Calendário
Versão Completa: Addnew
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
M@tEuS
Pra gente gerar um código novo automaticamente usa-se o AddNew não é?
Quais são os parâmetros dele?
tbExemplo.RecordSet.AddNew (?); blink.gif
Progr'amador
QUOTE(M@tEuS @ Dec 12 2006, 01:44 PM) *

Pra gente gerar um código novo automaticamente usa-se o AddNew não é?
Quais são os parâmetros dele?
tbExemplo.RecordSet.AddNew (?); blink.gif

Como assim, gerar um código???

você está usando Table??? huh.gif

Abs. Progr'amador.

cool.gif
M@tEuS
Isso mesmo, e o Access
Progr'amador
QUOTE(M@tEuS @ Dec 12 2006, 03:17 PM) *

Isso mesmo, e o Access

Ueh!,
o componente TTable não tem essa função RecordSet unsure.gif
e ainda não entendi essa: gerar um código novo automaticamente
você está falando "gerar" um novo registro??? é isso?

Abs. Progr'amador.

cool.gif
Churc
QUOTE
e ainda não entendi essa: gerar um código novo automaticamente

eheh verdade

da detalhes do que você quer fazer M@theus não
da pra entender nada... rs
M@tEuS
tongue.gif é, foi mal! Não expliquei direito.
É o seguinte: se eu tiver, por exemplo, uma tabela "Cadastro de Produtos", e essa tabela possui um campo chamado "Código do Produto", como eu faço para que quando eu click em "btnNovo", o Delphi gere automaticamente um valor numérico para esse campo (ex.:001, 002, 003,...)?
Progr'amador
QUOTE(M@tEuS @ Dec 13 2006, 01:12 PM) *

tongue.gif é, foi mal! Não expliquei direito.
É o seguinte: se eu tiver, por exemplo, uma tabela "Cadastro de Produtos", e essa tabela possui um campo chamado "Código do Produto", como eu faço para que quando eu click em "btnNovo", o Delphi gere automaticamente um valor numérico para esse campo (ex.:001, 002, 003,...)?

Opa, agora sim,

já que você está usando Table, é so pegar o valor do ultimo registro antes de inserir o novo redistro.
tipo:

CODE
var
  i : integer;
begin
  Table1.Next;
  i := Table1.FieldByName('Codigo').Value + 1;
  
  Table1.Insert;
  Table1.FieldByName('Codigo').Value := i;
  etc...

end;


Abs. Progr'amador.
cool.gif
M@tEuS
E se eu, por exemplo, deletar um registro no meio da tabela, tem como um novo registro usar o código do deletado? huh.gif Não sei se deu pra entender.
Churc
opa

QUOTE
E se eu, por exemplo, deletar um registro no meio da tabela, tem como
um novo registro usar o código do deletado?
então pela lógica da função acima não daria pois ela sempre irá pegar o último
código e criar um novo adicionando + 1, ou seja, 100, 101, 102 do jeito
que você queria...

O que você pode fazer, é uma rotina que procure por "buracos" nos códigos
dos produtos e assim se encontrado, o novo produto que vai ser cadastrado
vai ganhar aquele código, o que não é aconselhavél pois pode gerar futuros
conflitos com relatórios por exemplo...

abraço
M@tEuS
Valeu pela ajuda cool.gif
M@tEuS
Probleminha com incompatibilidade: ohmy.gif
Apareceu a mensagem de erro: 'Could not convert variant of type (OleStr) into type (Double).'
Onde que tá o erro?
Churc
opa

para que possamos te ajudar será necessário que você cole
a parte do seu código em que está dando o erro...

abs
M@tEuS
Exatamente no código que o "Progr'amador" passou pra mim logo acima.
Churc
qual o nome do campo que você utiliza pra armazenar
os códigos dos produtos, este campo é de qual tipo?
M@tEuS
O nome é 'Codigo' e já coloquei como texto e como número e nenhum adiantou.
Micheus
QUOTE(Progr'amador @ Dec 13 2006, 01:15 PM) *
QUOTE(M@tEuS @ Dec 13 2006, 01:12 PM) *
tongue.gif é, foi mal! Não expliquei direito.
É o seguinte: se eu tiver, por exemplo, uma tabela "Cadastro de Produtos", e essa tabela possui um campo chamado "Código do Produto", como eu faço para que quando eu click em "btnNovo", o Delphi gere automaticamente um valor numérico para esse campo (ex.:001, 002, 003,...)?
Opa, agora sim,

já que você está usando Table, é so pegar o valor do ultimo registro antes de inserir o novo redistro.
tipo:

CODE
var
  i : integer;
begin
  Table1.Next;
  i := Table1.FieldByName('Codigo').Value + 1;
  
  Table1.Insert;
  Table1.FieldByName('Codigo').Value := i;
  etc...

end;


Abs. Progr'amador.
cool.gif
Progr'amador, permitame apenas uma observação:
- deve ser substituído Table1.Next por Table1.Last, de modo a posicionar no último registro.

QUOTE
Apareceu a mensagem de erro: 'Could not convert variant of type (OleStr) into type (Double).'
M@tEuS, por acaso esse campo Codigo está definido no Access como Decimal ou outro com casas decimais? O ideal é que fosse Inteiro Longo.
Uma outra coisa que você também pode tentar é definir o tipo de dados que você quer atribuir. Por exemplo:
Table1.FieldByName('Codigo').AsInteger := i;
Table1.FieldByName('Codigo').AsFloat := i;

[]s
Progr'amador
QUOTE(Micheus @ Dec 14 2006, 03:05 PM) *

- deve ser substituído Table1.Next por Table1.Last, de modo a posicionar no último registro.

Valeu Micheus, isso mesmo,
apenas confundi na hora de postar.

Abs. Progr'amador.
cool.gif
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.