GARANTIR DESCONTO

Fórum Preenchimento de campo... #39390

13/10/2003

0

[color=blue:f9c519c21f]Galera,

a situação:
2 tabelas - Titulos (cd_titulo, cd_genero, id_titulo, no_titulo, etc...) e Generos (cd_genero, id_genero e no_genero).
No id_genero, gravo uma identificação própria para o no_genero, tipo: AV para Aventura, CO para Comédia.
No id_titulo, pego o id_genero mais uma numeração, ficando mais ou menos assim: AV0001, AV0002, AV0003, etc.

o código:
Trascrevi abaixo, como faço para gravar esse id_título automáticamente. No formulário, quando se escolhe o gênero, já pego o id_genero e adiciono a numeração, prenchendo com zero os espaços em branco (utilizei tamanho 4 para os números)[/color:f9c519c21f]


[i:f9c519c21f][color=darkred:f9c519c21f]//--------- Variável que pega no registro atual, o valor do id_genero ----
id := IBQry_GeneroID_GENERO.CurValue

//--------- Aponta para o último registro -------------------------------------
IBQry_Titulos.Last;

//--------- Testa o valor para poder adicionar numeração -----------------
if IBQry_TitulosID_TITULO.Value <> ´´ then
begin

//--------- Variálvel para pegar a parte numérica do código --------------
aux := copy(IBQry_TitulosID_TITULO.Value,3,4);

//--------- Variável que recebe o novo valor da numeração --------------
num_id := StrToInt(aux) + 1;

//--------- Variável para armazenar o valor de id_titulo ------------------
val_id := id + DM.Preenche(IntToStr(Num_id),4);
end;


if IBQry_TitulosID_TITULO.Value = ´´ then
//--------- Se não houver nenhum registro, adicione ----------------------
begin
num_id := (1);
val_id := id + DM.Preenche(IntToStr(Num_id),4)
end;
IBQry_Titulos.First;[/color:f9c519c21f][/i:f9c519c21f]

[color=blue:f9c519c21f]Não sei se é melhor maneira de se fazer isso, mas foi assim que implementei meu código. Sei que muitos terão formas mais práticas, mas estou apenas iniciando na programação. E como podem ver, desta forma, meus registros serão gravados assim: AV0001, AV0002, AV0003, CO0004, CO0005, DR0006, EP0007, e assim por diante.

a dúvida:
Como faço para que quando o id_genero mudar, ele recomeçe a contagem (AV0001, AV0002, AV0003, CO0001, CO0002, DR0001, EP0001), e quando for o mesmo id_genero, continuar a contagem de onde parou (AV0004, CO0003, DR0002, EP0002)???

Espero ter sido claro na minha questão.
Bons ventos a todos...[/color:f9c519c21f]


Rommel.jp

Rommel.jp

Responder

Posts

14/10/2003

Carlos Jatai

creio que a solução é voce mandar pesquisar idgenero + idtitulo e ver qual o último número cadastrado, seleciona antes o genero e depois manda pesquisar só naquele genero qual o último registro, tipo

myquery.sql.add(´select * from MYTABLE where LEFT(myfield) eq ´mygenero´ );
myquery.open;
myquery.last;

dai vc tem o valor do ultimo numero od genero e depois é só incrementar

creio q dá certo

T+

Carlos Jatai


Responder

Gostei + 0

14/10/2003

Stci

rommel.jp

Porque você não cria uma tabela com o Nome do Genero e o ID para cada um como:

IDGENERO ( Nome da Tabela )
Campos: IDGE_ID (Integer)
IDGE_SIGLA (Varchar(2))


Aí é só você controlar a gravação para cada genero, e o Select para pegar o ID do Genero ficaria mais rápido porque não vai estar buscando na tabela toda por Max, com Left e outros mais. Além de você teru um lugar centralizado para o controle do ID.

Poderá fazer StoredProcedure para Trazer o ID Atual ou até mesmo incluir um novo ID.

Eu acho esta maneira mais rápida e mais eficiente.


Responder

Gostei + 0

14/10/2003

Rommel.jp

Carlos Jatai e Mauríco Rocha, primeiramente quero agradecer-lhes pela atenção reservada.
Bem, ainda vou testar a solução do Carlos. Me parece interessante, mas preciso testar.
Maurício, quanto a sua solução, não sei se vc observou, mas já tenho essa tabela. É justamente a tabela Generos. Abaixo vou fazer uma breve descrição dela:

Generos
-------------------------------------------------
cd_genero | no_genero | id_genero |
-------------------------------------------------
001 | AVENTURA | AV |
-------------------------------------------------
002 | DRAMA | DR |
-------------------------------------------------
003 | POLICIAL | PO |
-------------------------------------------------
004 | COMÉDIA | CO |
-------------------------------------------------

E é justamente por esse id_genero que faço a implementação do campo id_titulo na tabela Titulos. Essa implementação é justamente para que eu não precise digitar nada nesse campo. O próprio sistema é que vai montar o valor do campo e assim, inserir o valor no campo.
Deu pra entender?

Espero ter sido um pouco mais claro.
Fico no aguardo de novos posts...
E de ante-mão já agradeço a todos que puderem ajudar.


Responder

Gostei + 0

14/10/2003

Rommel.jp

Maurício,

ou vc está dizendo para eu criar uma tabela para cada genero???


Responder

Gostei + 0

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

Aceitar