Fórum Gerador de Número Faltantes #261768
13/12/2004
0
Bom, estou fazendo ainda meu programinha pra catalogar gibis, e gostaria de fazer um pequeno gerador de números faltantes nele.. a minha ideia é a seguinte..
As revistas sao catalogadas dentro de um grupo e um subgrupo.. entao eu pensei em fazer assim..
Selecionar o Grupo e o SubGrupo onde estao as revistas que quero gerar os número faltantes. Ex.: Grupo: Marvel Comics; SubGrupo: Wolverine;
Digitar a númeração inicial e a final das revistas de acordo com o digitado. Ex.: Inicial: 001 e Fina: 101.
E digitar o nome com q foi cadastrado, sem o número. Ex. Wolverine #
Aí no caso, iria gerar os nomes Wolverine 001, Wolverine 002, etc.. juntando o nome, com os numeros, de 001 a 101.. e após essa geração, ele iria comparar todos os títulos gerados com os q estao ta tabela, dentro do Grupo e SubGrupo específicado, e descartar os que forem iguais, deixando só os que não forem iguais, os que estao faltando..
Depois disso eu vou aprender a colocar esses numeros gerados num relatório pra impressão, mas por enquanto gostaria somente de uma ajuda em como fazer esse gerador, como fazer pra ele criar esses nomes e comprar com a tabela... grato pela ajuda.. :roll:
Allan Elias Ramos :wink:
Aersoftware
Curtir tópico
+ 0Posts
13/12/2004
Rômulo Barros
procedure TForm1.btnGerarNumerosClick(Sender: TObject); Var Controle : Integer ; Resultado : String ; begin MemoResultados.Lines.Clear; For Controle := StrToInt(EdtInicial.Text) To StrToInt(EdtFinal.Text) Do Begin Resultado := IntToStr(Controle); While(Length(Resultado) < 3) Do Resultado := ´0´ + Resultado; Resultado := ´Wolverine # ´ + Resultado; MemoResultados.Lines.Add(Resultado); End; end;
Gostei + 0
13/12/2004
Gandalf.nho
Gostei + 0
13/12/2004
Aersoftware
var Controle : Integer; Resultado : String; begin MmLista.Lines.Clear; for Controle := StrToInt(EdtInicial.Text) to StrToInt(EdtFinal.Text) do begin Resultado := IntToStr(Controle); if EdtZeros.Text = ´0´ then begin Resultado := EdtNome.Text + Resultado; MmLista.Lines.Add(Resultado); end else if EdtZeros.Text = ´1´ then begin while (length(Resultado) < 2) do Resultado := ´0´ + Resultado; Resultado := EdtNome.Text + Resultado; MmLista.Lines.Add(Resultado); end else if EdtZeros.Text = ´2´ then begin while (length(Resultado) < 3) do Resultado := ´0´ + Resultado; Resultado := EdtNome.Text + Resultado; MmLista.Lines.Add(Resultado); end; end;
Basicamente essa mudança é pro usuário poder controlar quantos zeros a esquerda ele colocou, pra fazer a pesquisa precisa, pq pra algumas revistas pode ter 2 zeros (no caso de passar de 100 numeros) e outras podem ter 1 zero somente (caso nao chegue a 100 numeros)..
Bom, até aí funcionou blz, obrigado pela ajuda... mas, tentei fazer a comparação dos nomes gerados com o banco de dados e nao fui muito feliz.. como eu poderia fazer isso, baseado no código acima?
Eu coloquei 2 LookUps tambem, onde o usuário vai selecionar o Grupo e o SubGrupo que esta a revista.. no caso, eu teria que fazer essa pesquisa SQL onde ele achasse as revistas que tenham a chave estrangeira de Grupos e SubGrupos iguais as que foram selecionadas e depois comparar.. bom, a pesquisa eu sei fazer.. só me atrapalhei um pouco onde ela é feita e onde vai a comparação com os nomes gerados... grato pela ajuda.. :roll:
Allan Elias Ramos :roll:
Gostei + 0
14/12/2004
Rômulo Barros
procedure TForm1.Button1Click(Sender: TObject); Var Controle : Integer; QueryPesquisa : TSqlQuery; begin For Controle := 0 To Memo1.Lines.Count -1 Do Begin With(QueryPesquisa)Do Begin Close(); SQL.Text := ´ SELECT SUB.NOME ´ + ´ FROM TABLE_GRUPO GRUP, TABLE_SUB_GRUP SUB ´ + ´ WHERE SUB.CODIGO_GRUPO = GRUP.CODIGO_GRUP ´ + ´ AND SUB.NOME_REVISTA = ´ + QuotedStr(Memo1.Lines[Controle]); Open(); ShowMessage(´Resultado: ´ + Fields[0].AsString); End; End; end;
:arrow: [color=red:7163c37740][b:7163c37740]Este código acima terá que ser gerado através das opções escolhidas pelo usuário nos Lookups. Acredito que se vc informar a estrutura das tabelas GRUPO e SUBGRUPO, facilitaria bastante para que ajudássemos.[/b:7163c37740][/color:7163c37740]
Gostei + 0
14/12/2004
Aersoftware
[b:9231716bc4]Grupos[/b:9231716bc4]
PkCod_Grupo
Nome
[b:9231716bc4]SubGrupos[/b:9231716bc4]
PkCod_SubGrupo
FkCod_Grupo
NomeSubGrupo
Eu estive pensando em uma coisa, mas nao sei se da pra fazer.. fazer a pesquisa SQL e comparar ao mesmo tempo que ele gerar as edições.. daí eu teria q fazer isso 3 vezes, pras 3 opções que o usuário usar com zeros a esquerda.. tem como? Eu faço as pesquisas sempre comparando o KeyValue dos LookUps.. :wink:
Allan Elias Ramos :roll:
Gostei + 0
14/12/2004
Aersoftware
DmDados.ClientNacionais.Close; with DmDados.SqlNacionais do begin close; CommandText := ´Select * From TbRevNacionais Where FkCod_Grupo =´ + IntToStr(DbLkUpGrupos.KeyValue) + ´And FkCod_SubGrupo =´ + IntToStr(DbLkUpSubGrupos.KeyValue) + ´Order By NomeNumero´; open; end; DmDados.ClientNacionais.Open; DmDados.ClientNacionais.First; while not DmDados.ClientNacionais.Eof do begin MmResultado.Lines.Add(DmDados.ClientNacionais.FieldByName(´NomeNumero´).AsString); DmDados.ClientNacionais.Next; end;
Esse código faz um outro Memo receber os nomes das revistas que estao cadastradas.... entao, no 1º, ele vai receber o código gerado pelo gerador do numero incial ao final, e no segundo ele vai receber, também por ordem de nome os registros cadastrados..
O q eu pensei em fazer é comparar as linhas inseridas no momento da inserção e ver se sao diferentes.. se forem diferentes, um terceiro Memo irá receber também a linha que estiver sendo inserida no gerador..
Tentei mais ou menos assim..
If MmLista <> MmResultado then MmFaltantes := MmLista
Sei que não é assim, falta as ´extensões´ do memo pra comparar, mas nao sei qual delas colocar pra ele comprar o resultado gerado e colocar no último Memo esse resultado do 1º Memo..
Allan Elias Ramos :roll:
Gostei + 0
15/12/2004
Aersoftware
Allan Elias Ramos :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)