Jump to content
Fórum Script Brasil
  • 0

valor do maskedit sendo gravado no campo data


FABIO-2012

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...