Ir para conteúdo
Fórum Script Brasil
  • 0

valor do maskedit sendo gravado no campo data


FABIO-2012

Pergunta

Bom dia, amigos Feliz 2012

Tenho um form aonde pesquiso entre datas e ocorre que descobri que se digito uma data no maskedit esta data acaba sendo grabada no campo data, tentei usar o locktype em readOnly, mas mesmo assim nada, sse alguém puder me ajudar ficarei agradecido. O bd é access

begin

if strtoDate(maskedit1.text) > strtodate(maskedit2.Text) then

begin

Showmessage('A data inicial não deve ser'+#13 +'maior que a final! ' );

maskedit1.setfocus;

exit;

end;

datamodule1.Qpaga.Close;

datamodule1.Qpaga.SQL.Clear;

datamodule1.Qpaga.LockType:=ltReadOnly;

datamodule1.Qpaga.SQL.Add('select * from formPagamento where data_venda Between :inicio and :fim');

datamodule1.Qpaga.Parameters.Parambyname('inicio').Value :=MaskEdit1.Text;

datamodule1.Qpaga.Parameters.Parambyname('fim').Value :=MaskEdit2.Text;

datamodule1.Qpaga.LockType:=ltOptimistic;

datamodule1.Qpaga.Open;

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Fabio -2012, bom dia

você poderia especificar se seu campo data_venda é string ou date. E tmb, se você esta realizando uma consulta, como que grava no campo data ??

Não entendi seu questionamento.

Se seu campo data_venda for do tipo date, recomendo usar datetimepicker, fica melhor para trabalhar.

Link para o comentário
Compartilhar em outros sites

  • 0

olá bom dia!

Pois bem, o campo é Data/Hora que é o que o access têm abaixo segue todfo o código que fiz:

procedure Tpesq10.JvXPButton1Click(Sender: TObject);

begin

if strtoDate(maskedit1.text) > strtodate(maskedit2.Text) then

begin

Showmessage('A data inicial não deve ser'+#13 +'maior que a final!');

maskedit1.setfocus;

exit;

end;

datamodule1.Qpaga.Close;

datamodule1.Qpaga.SQL.Clear;

datamodule1.Qpaga.LockType:=ltReadOnly;

datamodule1.Qpaga.SQL.Add('select * from formPagamento where data_venda Between :inicio and :fim');

datamodule1.Qpaga.Parameters.Parambyname('inicio').Value :=MaskEdit1.Text;

datamodule1.Qpaga.Parameters.Parambyname('fim').Value :=MaskEdit2.Text;

datamodule1.Qpaga.LockType:=ltOptimistic;

datamodule1.Qpaga.Open;

// abaixo estes bot~eos calculam o total dos dbgrids e jogam em um edit

form19.Button2.Click;

form19.Button6.Click;

form19.Button3.Click;

form19.Button4.Click;

form19.Button7.Click;

form19.Button8.Click;

Form19.Button1.Visible:=false;

form19.Panel1.Visible:=true;

form19.Button5.Visible:=true;

form19.GroupBox1.Visible:=true;

form19.GroupBox2.Visible:=true;

pesq10.Close;

form19.Button7.Click;

end;

abaixo o código dos botões:

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

datamodule1.Qpaga.Edit;

dinh := dinh + datamodule1.Qpaga.fieldByName('totaldinhe').AsCurrency;

datamodule1.Qpaga.Next;

Edit2.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button3Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('DebitoForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit3.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button4Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('CreditoForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit4.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button6Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('ChequeForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit5.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button7Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('totaldinhe').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('creditoform').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('chequeform').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('debitoform').AsCurrency;

datamodule1.Qpaga.Next;

Edit6.Text :=FormatFloat('#,00.00',dinh);

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
olá bom dia!

Pois bem, o campo é Data/Hora que é o que o access têm abaixo segue todfo o código que fiz:

procedure Tpesq10.JvXPButton1Click(Sender: TObject);

begin

if strtoDate(maskedit1.text) > strtodate(maskedit2.Text) then

begin

Showmessage('A data inicial não deve ser'+#13 +'maior que a final!');

maskedit1.setfocus;

exit;

end;

datamodule1.Qpaga.Close;

datamodule1.Qpaga.SQL.Clear;

datamodule1.Qpaga.LockType:=ltReadOnly;

datamodule1.Qpaga.SQL.Add('select * from formPagamento where data_venda Between :inicio and :fim');

datamodule1.Qpaga.Parameters.Parambyname('inicio').Value :=MaskEdit1.Text;

datamodule1.Qpaga.Parameters.Parambyname('fim').Value :=MaskEdit2.Text;

datamodule1.Qpaga.LockType:=ltOptimistic;

datamodule1.Qpaga.Open;

// abaixo estes bot~eos calculam o total dos dbgrids e jogam em um edit

form19.Button2.Click;

form19.Button6.Click;

form19.Button3.Click;

form19.Button4.Click;

form19.Button7.Click;

form19.Button8.Click;

Form19.Button1.Visible:=false;

form19.Panel1.Visible:=true;

form19.Button5.Visible:=true;

form19.GroupBox1.Visible:=true;

form19.GroupBox2.Visible:=true;

pesq10.Close;

form19.Button7.Click;

end;

abaixo o código dos botões:

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

datamodule1.Qpaga.Edit;

dinh := dinh + datamodule1.Qpaga.fieldByName('totaldinhe').AsCurrency;

datamodule1.Qpaga.Next;

Edit2.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button3Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('DebitoForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit3.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button4Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('CreditoForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit4.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button6Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('ChequeForm').AsCurrency;

datamodule1.Qpaga.Next;

Edit5.Text :=FormatFloat('#,00.00',dinh);

end;

end;

procedure TForm19.Button7Click(Sender: TObject);

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

dinh := dinh + datamodule1.Qpaga.fieldByName('totaldinhe').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('creditoform').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('chequeform').AsCurrency;

dinh := dinh + datamodule1.Qpaga.fieldByName('debitoform').AsCurrency;

datamodule1.Qpaga.Next;

Edit6.Text :=FormatFloat('#,00.00',dinh);

end;

end;

beleza,

Então, se o campo data_venda é do tipo data/hora por que passar uma string e não um datetime ( podendo fazer uma conversão strtodatetime(MaskEdit1.Text) ) ??

Posso esta enganado, pois não trabalho a um bom tempo com acess.

Qualquer coisa posta ai.

Link para o comentário
Compartilhar em outros sites

  • 0

Descp Fábio,

Eu não me expressei bem. você tem duas situações:

1- A que já existe maskedit. Na sua consulta coloca o strtodatetime ( caso seu campo seja do tipo datetime).

ex: datamodule1.Qpaga.Parameters.Parambyname('inicio').Value := strtodatetime(maskedit1.text);

2- substituir os maskedit por datetimepicker. neste caso você não precisaria de conversão.

ex: datamodule1.Qpaga.Parameters.Parambyname('inicio').Value := datetimepicker1.date;

Isto se seu campo "data_venda" for do tipo datetime. Se ele for do tipo String, você deve lembrar que o banco de dados ( Interbase/ Firebird ) o formato de data a ser passado deve ser:

MM/DD/AAAA. Neste caso você irá precisar tratar a data que foi digitada no maskedit para poder passar com parâmetro em sua consulta.

qualquer coisa posta ai.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Recife, licença para eu me intrometer nesta discussão. :)

Tenho um form aonde pesquiso entre datas e ocorre que descobri que se digito uma data no maskedit esta data acaba sendo grabada no campo data, tentei usar o locktype em readOnly, mas mesmo assim nada, sse alguém puder me ajudar ficarei agradecido. O bd é access

Acredito que o problema real seja com relação à gravação "indevida" de um determinado campo (data - que não diz muito, exceto o tipo) durante uma consulta.

Bom, isto só poderia estar ocorrendo se em algum momento durante a execução da procedure: procedure Tpesq10.JvXPButton1Click(Sender: TObject);

a referida consulta entrasse em modo edição. E isto ocorre, logo na primeira procedure associada aos botões (está sem o cabeçalho):

abaixo o código dos botões:

var

dinh : Real;

begin

dinh :=0;

datamodule1.Qpaga.First;

while not datamodule1.Qpaga.Eof do

Begin

datamodule1.Qpaga.Edit;

dinh := dinh + datamodule1.Qpaga.fieldByName('totaldinhe').AsCurrency;

datamodule1.Qpaga.Next;

Edit2.Text :=FormatFloat('#,00.00',dinh);

end;

end;

O estranho é que ali não é atribuido nada a qualquer campo desta consulta. Logo, acho que este Edit está "voando" (ou parte do código foi omitida).

Se em algum evento do componente utilizado para consulta (o qual não foi citado), houver alguma atribuição ao tal campo data (tipo, no evento OnStateChange ou outro) então estaria justificada a mudança indevida.

___________

Agora, sobre o filtro, o colega FABIO-2012 deve ficar atento ao fato de que se estiver sendo gravada a hora juntamente com a data (p.e., atribuindo o retorno da função Now) então, se no filtro for utilizado apenas a data (sem a hora), a data final pode não retornar os registros para aquele dia já que p.e.:

"12/01/2012" se tornaria "12/01/2012 00:00" e que é inferior a um registro gravado com "12/01/2012 16:45".

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...