Estou fazendo uma busca através de uma data informada...
A busca é feita e os dados são informados num grid
até aí tudo certo....
Mas depois quando percorro o grid e escolho um registro e dou um Enter para os campos deste registro surgirem em um outro formulário, ocorre o seguinte erro de violação de acesso.
Project winsuperm.exe raised exception class EAccess Violation with message 'Access violation at address 004E9ED1 in module 'winsuperm.exe'. Read of address 00000000'
O código está desta maneira...
procedure TfrmLocalControleCaixa.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var auxdata: TDate;
begin
if (Key = VK_DOWN) Then
begin
if txtLocalControleCaixa_Data.Focused = True then
begin
GridLocalControleCaixa.SetFocus;
GridLocalControleCaixa.SelectedIndex := 0;
end;
end;
if (Key = VK_RETURN) then
begin
if txtLocalControleCaixa_Data.Focused = True then
begin
if (StrToDateDef(txtLocalControleCaixa_Data.Text , 0 ) = 0 ) then
begin
Application.MessageBox('Data inválida!!! ', 'WINSUPERM', MB_ICONERROR);
txtLocalControleCaixa_Data.SetFocus;
txtLocalControleCaixa_Data.SelectAll;
end
else
begin
With QueryLocalControleCaixa Do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM ESTACAI.dbf');
SQL.Add('WHERE CAIDAT = :pData');
SQL.Add('ORDER BY CAIDAT DESC, CAIHOR DESC');
ParamByName('pData').AsDateTime := StrToDate(txtLocalControleCaixa_Data.Text);
Open;
//GridLocalControleCaixa.SetFocus;
GridLocalControleCaixa.SelectedIndex := 0;
end;
end;
end;
if GridLocalControleCaixa.Focused = True then
begin
With QueryLocalControleCaixa Do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM ESTACAI.dbf');
SQL.Add('WHERE CAIDAT = :pData');
////////////////////// LINHA QUE O ERRO ACUSA///////////////////////
ParamByName('pData').AsDateTime := StrToDate(GridLocalControleCaixa.SelectedField.AsString);
////////////////////// LINHA QUE O ERRO ACUSA///////////////////////
Open;
if not(IsEmpty) then
begin
auxdata := dm.QueryControleCaixa.FieldByName('CAIDAT').AsDateTime;
frmControleCaixa.txtControleCaixa_Data.Text := dm.QueryControleCaixa.FieldByName('CAIDAT').AsString;
frmControleCaixa.txtControleCaixa_Hist.Text := dm.QueryControleCaixa.FieldByName('CAIHIS').AsString;
frmControleCaixa.txtControleCaixa_Hora.Text := dm.QueryControleCaixa.FieldByName('CAIHOR').AsString;
frmControleCaixa.txtControleCaixa_ValorEnt.Text := dm.QueryControleCaixa.FieldByName('CAIENT').AsString;
frmControleCaixa.txtControleCaixa_ValorSai.Text := dm.QueryControleCaixa.FieldByName('CAISAI').AsString;
frmControleCaixa.txtControleCaixa_Dinheiro.Text := dm.QueryControleCaixa.FieldByName('CAIDIN').AsString;
frmControleCaixa.txtControleCaixa_CheVis.Text := dm.QueryControleCaixa.FieldByName('CAICHE').AsString;
frmControleCaixa.txtControleCaixa_ChePre.Text := dm.QueryControleCaixa.FieldByName('CAIPRE').AsString;
frmControleCaixa.txtControleCaixa_Cartao.Text := dm.QueryControleCaixa.FieldByName('CAICAR').AsString;
frmControleCaixa.txtControleCaixa_Ticket.Text := dm.QueryControleCaixa.FieldByName('CAIOUT').AsString;
frmControleCaixa.txtControleCaixa_EmAberto.Text := dm.QueryControleCaixa.FieldByName('CAIABE').AsString;
end;
end;
txtLocalControleCaixa_Data.SetFocus;
frmLocalControleCaixa.Close;
frmControleCaixa.txtAuxData.Text := DateToStr(auxdata);
end;
end;
end;
A linha que o erro acusa é a ParamByName('pData').AsDateTime := StrToDate(GridLocalControleCaixa.SelectedField.AsString);
Pergunta
Gabriel Cabral
Bom dia, galera..
Problemão aqui...
Estou fazendo uma busca através de uma data informada...
A busca é feita e os dados são informados num grid
até aí tudo certo....
Mas depois quando percorro o grid e escolho um registro e dou um Enter para os campos deste registro surgirem em um outro formulário, ocorre o seguinte erro de violação de acesso.
Project winsuperm.exe raised exception class EAccess Violation with message 'Access violation at address 004E9ED1 in module 'winsuperm.exe'. Read of address 00000000'
O código está desta maneira...
A linha que o erro acusa é a ParamByName('pData').AsDateTime := StrToDate(GridLocalControleCaixa.SelectedField.AsString);
O que está havendo??
alguém conseguiria me ajudar???
Muito obrigado
Editado por Gabriel CabralLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.