GARANTIR DESCONTO

Fórum Relacinamento entre Campos. #270291

26/02/2005

0

Boa Noite,

Estou com o seguinte problema.

Tenho uma tabela nessa tabela tem dois campos um chamado CATEGORIA e outro chamado SUBCODIGO na inclusão de um registro o usuario informa por exemplo a CATEGORIA E1 e o sistema automaticamente teria que puxar o codigo 001 no campo SUBCODIGO, se incluise um novo registro e o usuario informar a categoria E1 o SUBCODIGO deveria vir 002 pq já existe um lançamento com o codigo 001, e tbm não deveria aceitar que o campo SUBCODIGO tenha valores duplicados, mas se o usuario informar uma CATEGORIA E2 então o SUBCODIGO deveria ser 001, pq mudou a categoria, e se ele incluise outro registro usando a categoria E2 o SUBCODIGO deveria vier 002 pq já tem um registro E2 com o subcodigo 001. O problema é que não estou conseguindo fazer esse controle no Delphi.

Estou usando FireBird e Delphi 7.


Spooner

Spooner

Responder

Posts

01/03/2005

Spooner

Ninguem sabe??


Responder

Gostei + 0

01/03/2005

Aroldo Zanela

Colega,

Crie uma tabela para controlar essas sequências.
Ex:

SEQUENCIAS (TABELA)
CATEGORIA,CHAR(2)
SUBCODIGO,INTEGER

Implemente uma busca de categoria nesta tabela, se a categoria não existir, então inclua a categoria e inicialize o contador de subcodigo, caso a categoria já exista, incremente o contador de subcodigo.

Ex:

if not tbSequencias.Locate(´categoria´,editCATEGORIA,[]) then
  .. Incluir catedoria e contador = 1
else
 .. colocar tabela em ediçao e incrementar contador de subcodigo



Responder

Gostei + 0

02/03/2005

Spooner

Boa Tarde Aroldo Zanela,

O problema é que o contador depende da categoria por ex:

Tabela não tem nem um lançamento.

ai eu mando incluir informo uma categoria E1 e quando eu sair desse campo o sistema automaticamente joga 001 no campo subcodigo, no segundo lançamento se ele informar a mesma categoria o sistema grava outra linha com a categoria E1 e já no subcodigo tem que vim 002, mas se o usuario informar uma categoria E2 o campo subcodigo não pode vim com 003 e sim com 001 pq esse foi o primeiro lançamento que usei a categoria E2, e assim por diante...

Obrigado pela resposta.


Responder

Gostei + 0

02/03/2005

Aroldo Zanela

Colega,

Foi exatamente isto que mencionei na mensagem anterior. Para demonstrar, criei a seguinte estrutura no Firebird:


CREATE TABLE CATEGORIAS (
    CAT_ID        CHAR(2) NOT NULL,
    CAT_SUBGRUPO  INTEGER
);


Usei a seguinte implementação no Delphi:

procedure TForm1.Button1Click(Sender: TObject);
begin
if not tbCategorias.Locate(´cat_id´, leCategoria.Text, []) then
  begin
  tbCategorias.AppendRecord([leCategoria.Text, 1]);
  end else
  begin
  tbCategorias.Edit;
    tbCategoriasCAT_SUBGRUPO.Value := tbCategoriasCAT_SUBGRUPO.Value+1;
    tbCategorias.Post;
  end;
  // Abaixo, demais implementações
  leSubgrupo.Text:= FormatFloat(´000´, tbCategoriasCAT_SUBGRUPO.Value);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
tbCategorias.Open;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar