10 últimos...
Olá pessoal,
Tenho uma dúvida de como posso fazer um form que me mostre os últimos 10 registros gravados no BD.
É o seguinte uso IBX e F.B 1.5, tenho um formulário para registro de casamentos, que nele tem o nº do Livro, nº da Folha e nº do casamanto, gostária de fazer algo para saber qual foi os últimos números digitados, um botão no form registro que abrisse outro form e tivesse uma lista dos últimos 10 digitados, MAS TEM QUE MOSTRAR COM ESTA REGRA (WHERE REGISTRADO = ´SIM´).
Como posso fazer.
Rodrigo.
Obrigado.
[color=green:f79f51f842]Movido de Delphi para Interbase/Firebird[/color:f79f51f842]
Tenho uma dúvida de como posso fazer um form que me mostre os últimos 10 registros gravados no BD.
É o seguinte uso IBX e F.B 1.5, tenho um formulário para registro de casamentos, que nele tem o nº do Livro, nº da Folha e nº do casamanto, gostária de fazer algo para saber qual foi os últimos números digitados, um botão no form registro que abrisse outro form e tivesse uma lista dos últimos 10 digitados, MAS TEM QUE MOSTRAR COM ESTA REGRA (WHERE REGISTRADO = ´SIM´).
Como posso fazer.
Rodrigo.
Obrigado.
[color=green:f79f51f842]Movido de Delphi para Interbase/Firebird[/color:f79f51f842]
Rodrigorpb
Curtidas 0
Respostas
Rjun
19/09/2005
Na sua tabela, você guarda a data e hora em que os registros foram gravados?
GOSTEI 0
Adriano Santos
19/09/2005
Na sua tabela, você guarda a data e hora em que os registros foram gravados?
[b:5daaadf489]Rjun[/b:5daaadf489], mesmo que ele tenha isso na tabela, como você imagina o algoritimo? Porque o cara pode ter criado um registro mês passado, outro a 15 dias, outro a 17 dias e etc?
Eu pensei em trazer todos os registros com o critério (WHERE REGISTRADO = ´SIM´) e dar um loop de baixo pra cima. Pegar os últimos 10, jogar talvez em uma tabela temporária e apresentar em um grid.
Não imagino outra forma, porque não existe uma função :
SELECT LAST 10 * FROM TABELA WHERE CONDICAO
no interbase, só tem o FIRST.
GOSTEI 0
Rjun
19/09/2005
Ele poderia ordernar de forma decrescente.
SELECT TOP 10 * FROM TABELA ORDER BY DATA DESC
GOSTEI 0
Adriano Santos
19/09/2005
Ele poderia ordernar de forma decrescente.
SELECT TOP 10 * FROM TABELA ORDER BY DATA DESC
Puts, pode crer. Mas acho que ele pode usar um campo que seja Primary Key também, por exemplo:
SELECT FIRST 10 * FROM TABELA WHERE REGISTRO = ´SIM´ ORDER BY CODIGO DESC
GOSTEI 0
Rodrigorpb
19/09/2005
Eu não uso data do dia que foi gravado, tenho um campo PK do Código, e os nº do casamento nunca se repete.
Mas se for o caso coloco um campo data para registrar o dia do cadastro.
Como é a melhor forma.
Rodrigo.
Obrigado Adriano Santos e Rjun
Mas se for o caso coloco um campo data para registrar o dia do cadastro.
Como é a melhor forma.
Rodrigo.
Obrigado Adriano Santos e Rjun
GOSTEI 0
Adriano Santos
19/09/2005
Eu não uso data do dia que foi gravado, tenho um campo PK do Código, e os nº do casamento nunca se repete.
Mas se for o caso coloco um campo data para registrar o dia do cadastro.
Como é a melhor forma.
Rodrigo.
Obrigado Adriano Santos e Rjun
Entção [b:44aa4d2563]Rodrigorpb[/b:44aa4d2563], do jeito que o [b:44aa4d2563]Rjun[/b:44aa4d2563] mencionou eu fiz, mas usando um PK. Funcionou.
SELECT FIRST 10 * FROM TABELA WHERE REGISTRO = ´SIM´ ORDER BY SEU_PK DESC
GOSTEI 0
Rodrigorpb
19/09/2005
Eu estava pensando tb em registrar a hora do registro e listar pela horas, mas vou fazer com o CODIGO (PK).
Obrigado novamente.
Adriano Santos e Rjun
Rodrigo. :D
Obrigado novamente.
Adriano Santos e Rjun
Rodrigo. :D
GOSTEI 0
Adriano Santos
19/09/2005
Posta ai depois pra gente se deu certo.
GOSTEI 0
Rodrigorpb
19/09/2005
Olá amigos,
Outra coisa como eu citei em cima, surgiu outra dúvida:
Tenho no Form CODIGO INTEGER (PK), NLIVRO INTEGER, NFOLHA INTEGER e NREGISTRO INTEGER, como faço para no delphi ele verificar se o NREGISTRO (Nº do casamento) já existe e se existir passar uma mensagem para o usuário digitar outro número.
Rodrigo.
Obrigado.
Outra coisa como eu citei em cima, surgiu outra dúvida:
É o seguinte uso IBX e F.B 1.5, tenho um formulário para registro de casamentos, que nele tem o nº do Livro, nº da Folha e nº do casamanto,
Tenho no Form CODIGO INTEGER (PK), NLIVRO INTEGER, NFOLHA INTEGER e NREGISTRO INTEGER, como faço para no delphi ele verificar se o NREGISTRO (Nº do casamento) já existe e se existir passar uma mensagem para o usuário digitar outro número.
Rodrigo.
Obrigado.
GOSTEI 0
Adriano Santos
19/09/2005
Olá amigos,
Outra coisa como eu citei em cima, surgiu outra dúvida:
[quote:d744a9b058]É o seguinte uso IBX e F.B 1.5, tenho um formulário para registro de casamentos, que nele tem o nº do Livro, nº da Folha e nº do casamanto,
Tenho no Form CODIGO INTEGER (PK), NLIVRO INTEGER, NFOLHA INTEGER e NREGISTRO INTEGER, como faço para no delphi ele verificar se o NREGISTRO (Nº do casamento) já existe e se existir passar uma mensagem para o usuário digitar outro número.
Rodrigo.
Obrigado.[/quote:d744a9b058]
Faça uma Select, é mais fácil:
SELECT NREGISTRO FROM CASAMENTOS WHERE NREGISTRO = 12
Se retornar algo, é pq já tem.
Detalhando melhor
procedure TForm1.Button1Click(Sender: TObject); begin with MinhaQuery do begin Close; SQL.Clear; SQL.Add(´SELECT NREGISTRO FROM CASAMENTOS WHERE NREGISTRO=:NREGISTRO´); ParamByName(´NREGISTRO´).AsInteger := Edit1.Text; //exemplo Active := True; if not IsEmpty then ShowMessage(´NÚMERO JÁ EXISTE´); Active := False; end; end;
Veja, essa é uma maneira...existem milhares.
GOSTEI 0
Rodrigorpb
19/09/2005
Cara vc manja heim... :wink:
Vou testar tudo ai passo os dois se deram certinhos.
Obrigado mesmo.
Rodrigo.
Vou testar tudo ai passo os dois se deram certinhos.
Obrigado mesmo.
Rodrigo.
GOSTEI 0
Rodrigorpb
19/09/2005
Outra dúvida,
Primeiro para que serve o IsEmpty? Outra coisa, o código que vc passou é ótimo, mas caso eu queria válidar somente quando tiver número, pois ele tb pode ser nulo.
Tem como?
Rodrigo.
Obrigado Adriano Santos
Primeiro para que serve o IsEmpty? Outra coisa, o código que vc passou é ótimo, mas caso eu queria válidar somente quando tiver número, pois ele tb pode ser nulo.
Tem como?
procedure TForm1.Button1Click(Sender: TObject); begin with MinhaQuery do begin Close; SQL.Clear; SQL.Add(´SELECT NREGISTRO FROM CASAMENTOS WHERE NREGISTRO=:NREGISTRO´); ParamByName(´NREGISTRO´).AsInteger := Edit1.Text; //exemplo Active := True; if not IsEmpty then ShowMessage(´NÚMERO JÁ EXISTE´); Active := False; end; end;
Rodrigo.
Obrigado Adriano Santos
GOSTEI 0
Beppe
19/09/2005
1) IsEmpty retorna True se e somente se nenhuma linha for retornada.
2) Se NREGISTRO for null, a comparação retorna null, e o predicado falha, não retornando a linha.
3) Pq não deixa o sistema gerar NREGISTRO para o usuário?
2) Se NREGISTRO for null, a comparação retorna null, e o predicado falha, não retornando a linha.
3) Pq não deixa o sistema gerar NREGISTRO para o usuário?
GOSTEI 0