Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KADILLO

rotina

Recommended Posts

olá !gostaria de que me ajudasse na seguinte rotina- ela deve, ao abrir o programa, mostrar os dependentes que fazem aniversário naquele dia.-os dependentes estão numa tabela no interbase.-os aniverssariantes devem ser exibidos numa grid- a rotina só deve funcionar na primeira vez que o programa rodar no dia. não deve aparecer sempre que o programa rodar. só na primeira vez do dia.já tentei de várias formas, não consigo.pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você já têm pronto até o momento ? Já tem a tabela com os campos ? Já têm a consulta SQL ? O que realmente precisa ser feito ?

pelo visto todo o programa!kkkposta ae cara o q você ja tem pra galera te ajudar! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você já têm pronto até o momento ? Já tem a tabela com os campos ? Já têm a consulta SQL ? O que realmente precisa ser feito ?

pelo visto todo o programa!kkkposta ae cara o q você ja tem pra galera te ajudar! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Olá... bom dia !obrigado pela atenção ao meu problema.bem, na verdade sou iniciante em Delphi e só tenho montada a tabela no interbase.a tebela(DEPENDENTES), contem os campos iddep,nomedep,datanasdep e sexodep.no meu form principal, possuo os menus CADASTRO/funcionários/dependentes , RELATÓRIOS/funcionários/dependentes e SAIR.a montagem dos forms estão prontas, juntamente com os códigos dos botôes e procedimentos que preciso.o que preciso é do procedure para os aniversariantes(que não faço a mínima idéia de como fazer) e deste detalhe, que esta procedure só aconteça uma vez por dia, quando o programa for aberto, e não aconteça de novo em nenhum momento do dia. apenas na primeira vez que o programa for iniciado.é isso que tenho.obrigado novamente.abraços !

O que você já têm pronto até o momento ? Já tem a tabela com os campos ? Já têm a consulta SQL ? O que realmente precisa ser feito ?

Olá... bom dia !obrigado pela atenção ao meu problema.bem, na verdade sou iniciante em Delphi e só tenho montada a tabela no interbase, o formulário principal,cadastro de funcionários e dependentes, relatório de funcionários e dependentes e sair.até aqui está tudo pronto e operacional.*a tabela(DEPENDENTES), contém os campos iddep,nomedep,datanasdep e sexodep.*no meu form principal, possuo os menus CADASTRO/funcionários/dependentes , RELATÓRIOS/funcionários/dependentes e SAIR.*a montagem dos forms estão prontas, juntamente com os códigos dos botôes e procedimentos que preciso.*o que preciso é do procedure para os aniversariantes(que não faço a mínima idéia de como fazer) e deste detalhe, que esta procedure só aconteça uma vez por dia, quando o programa for aberto, e não aconteça de novo em nenhum momento do dia. apenas na primeira vez que o programa for iniciado.*é isso que preciso.obrigado novamente.abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso o que poderia fazer é controlar através do BD, possivelmente você deve de ter uma tabela com informações da empresa, caso tenha pode armazenar ali uma data com a informação da data, no caso quando entrar no sistema verifica esta data, caso ela seja menor que o dia de hoje, então faz a consulta e atualiza este campo com a data de hoje, para que o mesmo nao seja mais apresentado durante o dia, você poderia tb controlar a data para cada usuario que se logar, no caso teria de colocar o campo na tabela de usuarios e quando ele se logar fazer o mesmo controle.... se quiser pode ainda usar o registro do windows... sem preicsar de bd...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, uma forma seria você criar um arquivo de texto mesmo, ou .Ini,gravando a data dentro dele e que assim que o programa fosse aberto você iria verificar se ele existe...se ele existir: você verifica se a data é a mesma do sistema, se for ai você ñ mostra, do contrário você grava a data atual nele e mostra...se ele não existir: você cria ele, grava a data e mostra...sendo assim ele somente seria exibido na primeira vez...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, uma forma seria você criar um arquivo de texto mesmo, ou .Ini,gravando a data dentro dele e que assim que o programa fosse aberto você iria verificar se ele existe...se ele existir: você verifica se a data é a mesma do sistema, se for ai você ñ mostra, do contrário você grava a data atual nele e mostra...se ele não existir: você cria ele, grava a data e mostra...sendo assim ele somente seria exibido na primeira vez...

Amigão, obrigado pela atenção.vamos lá..não foi por falta de tentar.li e achei muito show o post que me indicou.mas para falar a verdade, iniciante é uma merd....não consigo nem montar o form que me mostre os aniversariantes na grid.poderia me explicar tipo um passo a passo?muito obrigado e desculpe a amolação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz... Mais passo-a-passo que isto acho que não consigo, hehehe

 

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, DB, DBTables, Grids, DBGrids, Registry;type  TForm1 = class(TForm)	dbgAniversariantes: TDBGrid;	Database1: TDatabase;	qryAniversariante: TQuery;	dtsAniversariante: TDataSource;	qryAniversarianteNMCLIENTE: TStringField;	qryAniversarianteDTNASCIMENTO: TDateTimeField;	procedure FormCreate(Sender: TObject);  private	{ Private declarations }	function LeRegWin(root: HKey; chave, valor: string): string;	procedure GravaRegWin(root: HKey; chave, valor, conteudo: string);	procedure VerificaAniversariantes;  public	{ Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.GravaRegWin(root: HKey; chave, valor, conteudo: string);var   reg: TRegistry;   ins: boolean;beginreg:=TRegistry.Create;reg.RootKey:=root;ins:=True;reg.OpenKey(chave, True);if reg.ValueExists(valor) then	if Reg.ReadString(valor) = conteudo then		ins:=False;if ins then	reg.WriteString(valor, conteudo);reg.CloseKey;reg.Free;end;function TForm1.LeRegWin(root: HKey; chave, valor: string): string;var   reg: TRegistry;   ret: string;beginret:='';reg:=TRegistry.Create;reg.RootKey:=root;if reg.OpenKey(chave, False) then	if reg.ValueExists(valor) then		ret:=Reg.ReadString(valor);reg.CloseKey;reg.Free;LeRegWin:=ret;end;procedure TForm1.FormCreate(Sender: TObject);beginVerificaAniversariantes();end;procedure TForm1.VerificaAniversariantes;var	data: string;	consultar: boolean;	ano, mes, dia: Word;begindbgAniversariantes.Visible:=False;consultar:=True;data:=LeRegWin(HKEY_LOCAL_MACHINE,'SOFTWARE\MeuPrograma','DataVerificado');if data <> '' then	if StrToDate(data) >= Date then		consultar:=False;if consultar then	begin	DecodeDate(Date,ano,mes,dia);	GravaRegWin(HKEY_LOCAL_MACHINE,'SOFTWARE\MeuPrograma','DataVerificado',DateToStr(Date));	qryAniversariante.Close;	qryAniversariante.SQL.Clear;	qryAniversariante.SQL.Add('select cliente.nmcliente, cliente.dtnascimento');	qryAniversariante.SQL.Add('from cliente');	qryAniversariante.SQL.Add('where extract(day from dtnascimento) = ' + IntToStr(dia));	qryAniversariante.SQL.Add('and extract(month from dtnascimento) = ' + IntToStr(mes));	qryAniversariante.Open;	if not qryAniversariante.IsEmpty then		dbgAniversariantes.Visible:=True;	end;end;end.

No caso somente utilizei um DBGrid, uma Query, DataSource e Database... sendo que executa o comando SQL buscando os registros, mas antes verifica o registro na máquina para ver se pode consultar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

hoje, 17/11 12:45Meu mais novo amigomuito, mas muito onrigado mesmo !É de pessoas como você que o mundo precisa !Já estou colocando em prática os códigos que me passou.Novamente meu muito obrigado e desculpe pela amolação !Um grande abraço, quente e forte como deve ser seu coração !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.