Fórum Campo Date no Delphi #390005
05/11/2010
0
Bruno Vba
Curtir tópico
+ 0Posts
05/11/2010
Rodrigo Mattos
if FormatDateTime('yyyy',Campo da Data) < FormatDateTime('yyyy',Date) then
begin
ShowMessage('Ano menor do que o atual');
Exit;
end;
Depois a do Mês:
if FormatDateTime('mm',Campo da Data) < FormatDateTime('mm',Date) then
begin
ShowMessage('Mês menor do que o atual');
Exit;
end;
Olha ja contar os pedidos você pode fazer um select, exemplo:
Select count(*) From TABELA
depois você pode colocar o parametro da data, filtrando apenas o mês.
Gostei + 0
05/11/2010
Bruno Vba
primeiramente muito obrigado pela ajuda, mas não deu certo, não sei se estou
fazem errado fiz assim, no OnExit do meu DBEdit da Data fiz isso:
if FormatDateTime('yyyy',DbEdit.text) < FormatDateTime('2010',Date) then
begin
ShowMessage('Ano menor do que o atual');
Exit;
end;Se puder me falar o que
estou fazendo de errado muito obrigado.
Gostei + 0
05/11/2010
Frost
Bruno
Tente assim
if FormatDateTime('yyyy',StrToDate(DbEdit.text)) < FormatDateTime('2010',Date) then
begin
ShowMessage('Ano menor do que o atual');
Exit;
Gostei + 0
05/11/2010
Bruno Vba
Boa Tarde, também não deu certo quando digito a data, aparece um erro dizendo
que data não é valida.Obrigado.
Gostei + 0
05/11/2010
Compusoftware Ltda
Gostei + 0
05/11/2010
Bruno Vba
Estou usando o Sql Server 2008 e o Formato de data é esse yyyy/MM/dd.Obrigado.
Gostei + 0
14/11/2010
Flavia Santos
Declare a DateUtils na uses do seu form.
var Hoje, Mes: TDate; // A variavel Hoje salva a data atual e a Mes salva a data que consta no seu DBEdit.
begin
Hoje := MonthOf(now);
Mes := MonthOf(strtodate(DBEdit1.Caption));
if Mes < Hoje then
begin
ShowMessage('mes menor do que o atual');
end else
if Mes = hoje then
begin
Showmessage ('Mes OK ');
end else
if (Mes > Hoje) then
begin
showmessage('Mes maior que o atual ');
end;
end;
Gostei + 0
14/11/2010
Flavia Santos
Declare a DateUtils na uses do seu form.
var Hoje, Mes: TDate; // A variavel Hoje salva a data atual e a Mes salva a data que consta no seu DBEdit.
begin
Hoje := MonthOf(now);
Mes := MonthOf(strtodate(DBEdit1.Caption));
if Mes < Hoje then
begin
ShowMessage('mes menor do que o atual');
end else
if Mes = hoje then
begin
Showmessage ('Mes OK ');
end else
if (Mes > Hoje) then
begin
showmessage('Mes maior que o atual ');
end;
end;
Corrigindo:
Na linha Mes := MonthOf(strtodate(DBEdit1.Caption));
O correto é Mes := MonthOf(strtodate(DBEdit1.Text));
Passa a estrutura da sua tabela de pedidos para que possamos ajudá-lo na criação do select.
flw
Gostei + 0
15/11/2010
Bruno Vba
procedure TFrmPedido.DateTimePicker1Exit(Sender: TObject);begin inherited;DM.CdsPedidodataEntrega.Value := DatetoStr((DateTimePicker1.Date));
try if StrToDate(FormatDateTime ('dd/mm/yyyy',StrToDate(DM.CdsPedidodataEntrega.Value))) < StrToDate(FormatDateTime('dd/mm/yyyy', now)) then begin Application.MessageBox('Data Incorreta. Por Favor verifique.','Alerta',MB_ok + MB_defbutton1 + MB_iconexclamation); DateTimePicker1.SetFocus; abort; end; BtnSalvar.click; except //ShowMessage('Data Incorreta, Favor Verificar'); DateTimePicker1.SetFocus; end;Gostei + 0
15/11/2010
Flavia Santos
procedure TFrmPedido.DateTimePicker1Exit(Sender: TObject);begin inherited;DM.CdsPedidodataEntrega.Value := DatetoStr((DateTimePicker1.Date));
try if StrToDate(FormatDateTime ('dd/mm/yyyy',StrToDate(DM.CdsPedidodataEntrega.Value))) < StrToDate(FormatDateTime('dd/mm/yyyy', now)) then begin Application.MessageBox('Data Incorreta. Por Favor verifique.','Alerta',MB_ok + MB_defbutton1 + MB_iconexclamation); DateTimePicker1.SetFocus; abort; end; BtnSalvar.click; except //ShowMessage('Data Incorreta, Favor Verificar'); DateTimePicker1.SetFocus; end;Bruno,
Eu não aconselharia vc a mudar o tipo de campo de Date para VarChar.
A função MonthOf da Unit DateUtils serve exatamente para extrair o mes de uma data, assim vc pode fazer a comparação que desejar de forma simples e rápida. Sem contar que o seu código fica mais limpo.
Isso sem mencionar que se vc alterar o campo de Date para Varchar e o tiver utilizado como parametro em rotinas em relatorios, graficos, ou ate mesmo formularios de consulta, vc tera que atualizar estes locais incluindo o StrToDate para não gerar nenhum bug's no sistema. Se vc o utilizou em um ou dois formularios é fácil, mas se tiver utiliza em varios ai o trabalho vai ser maior ainda.
flw,
Gostei + 0
15/11/2010
Bruno Vba
Flavia, mudei para varchar(11), pois estava tendo problemas com o formato date do Sql Server, sabe, e essa data só estou usando mesmo no pedido.Muito Obrigado pelas dicas.
Gostei + 0
15/11/2010
Flavia Santos
Flavia, mudei para varchar(11), pois estava tendo problemas com o formato date do Sql Server, sabe, e essa data só estou usando mesmo no pedido. Muito Obrigado pelas dicas.
Bruno,
Qual versão do SQL Server você está usando?
Parei de usar o SQL Server a cerca de um ano, mas eu sempre utilizava a data formatada da seguinte forma: MM/DD/YYYY
Mas para ter certeza de como manipular a data de forma correta, vá em painel de controle -> opções regionais e de idioma e veja como está formatada a data no seu computador.
Utilize este mesmo formato na sua codificação e veja se funciona.
flw,
Gostei + 0
15/11/2010
Bruno Vba
utilizo o Sql Server 2008, o formato de data nas opções regionais esta
assim 15/11/2010 normal, mas no meu Sql Server esta de forma
invertida.Obrigado.
Gostei + 0
15/11/2010
Flavia Santos
mso-bidi-font-family:"Times New Roman";color:black;mso-fareast-language:PT-BR">Flavia
utilizo o Sql Server 2008, o formato de data nas opções regionais esta
assim 15/11/2010 normal, mas no meu Sql Server esta de forma
invertida.Obrigado.
Bruno,
Não estou com o SQL Server aqui, então vou falar mais ou menos pelo que me lembre, vê se consegue achar esta opção ai, se não conseguir eu procuro o cd e instalo para auxilia-lo melhor, ok?
Acesse o Enterprise Manager
Clique em Microsoft SQL Servers
Clique agora em SQL Server Group
Agora clique com o botão direito em cima da sua conexão e clique em Propriedades
Na tela que abrir clique em Server Settings
Nesta opção irá listar o Default language for user - é neste local que está a linguagem que esta sendo utilizado.
Se não me engano a Language Portuguese trabalha da seguinte forma: DDMMYYYY e a English desta outra forma MMDDYYYY
As languages que trabalham com o formato yyyymmdd são a Japanese, a croatian e algumas outras que não lembro agora.
flw,
Gostei + 0
15/11/2010
Bruno Vba
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)