Fórum Argument out of range #519261

08/05/2015

0

Boa noite,
Eu estou tentando fazer uma tela de controle de vendas, e quando vou clicar no botão "Verificar receita", da um erro de Argument out of range, só que eu já revisei o código todo e não encontro nenhum erro, alguém poderia dar uma ajuda? (Banco de dados é o Access, componentes ADO)

procedure TFormTeste.btnOKClick(Sender: TObject);
begin
DmDados.QVendas.Append;
DmDados.QVendas.FieldByName('Forma_Pgto').value := combobox1.text;
DmDados.QVendas.FieldByName('Valor').value := strtofloat(edit1.text);
DmDados.QVendas.FieldByName('Data_Venda').value := edit2.text;
DmDados.QVendas.post;
end;

procedure TFormTeste.Button1Click(Sender: TObject);
var
vtot:Real;
begin
vtot:=0;
DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Dinheiro'+chr(39)+ 'and Data_Venda = :dtespecifica');
DmDados.QVendas.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DmDados.QVendas.Open;
if (DmDados.QVendas.fields.fields[3].IsNull) then
label3.caption:='R$ 0,00'
else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label3.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Cartão'+chr(39)+ 'and Data_Venda = :dtespecifica');
DmDados.QVendas.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DmDados.QVendas.Open;

if (DmDados.QVendas.fields.fields[3].isnull) then
label5.caption:='R$ 0,00'
else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label5.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.Sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Cheque'+chr(39)+ 'and Data_Venda = :dtespecifica');
DmDados.QVendas.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DmDados.QVendas.Open;

if (DmDados.QVendas.fields.fields[3].isnull) then
label7.caption:='R$ 0,00'
else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label7.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select * from TabVendas');
DmDados.QVendas.Open;

Label10.caption:=floattostrf(vtot,ffCurrency,6,2);

end;

procedure TFormTeste.Button2Click(Sender: TObject);
var
vtot:Real;
begin
vtot:=0;
DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Dinheiro'+chr(39)+ 'and Data_Venda BETWEEN :dtinicial and :dtfinal');
DmDados.QVendas.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DmDados.QVendas.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DmDados.QVendas.Open;
if (DmDados.QVendas.fields.fields[3].isnull) then
label3.caption:='R$ 0,00'
else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label3.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Cartão'+chr(39)+ 'and Data_Venda BETWEEN :dtinicial and :dtfinal');
DmDados.QVendas.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DmDados.QVendas.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DmDados.QVendas.Open;

if (DmDados.QVendas.fields.fields[3].isnull) then
label5.caption:='R$ 0,00'
else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label5.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select sum(Valor) from TabVendas where Forma_Pgto = ' +chr(39)+'Cheque'+chr(39)+ 'and Data_Venda BETWEEN :dtinicial and :dtfinal');
DmDados.QVendas.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DmDados.QVendas.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DmDados.QVendas.Open;

if (DmDados.QVendas.fields.fields[3].isnull) then
label7.caption:='R$ 0,00'

else
begin
vtot:=vtot+DmDados.QVendas.fields.fields[3].value;
label7.caption:=floattostrf(DmDados.QVendas.fields.fields[3].value,ffCurrency,6,2);
end;

DmDados.QVendas.Close;
DmDados.QVendas.sql.clear;
DmDados.QVendas.sql.Add('Select * from TabVendas');
DmDados.QVendas.Open;[img]http://arquivo.devmedia.com.br/forum/imagem/424081-20150508-202758.png[/img]
label10.caption:=floattostrf(vtot,ffCurrency,6,2);
end;

Erick

Erick

Responder

Post mais votado

08/05/2015

Olá. Repare que a query DmDados.QVendas está retornando apenas um campo (SUM) e você está tentando ler o campo de índice 3 (fields[3]). Provavelmente o erro está aí. Verifique.

Joel Rodrigues

Joel Rodrigues
Responder

Gostei + 2

Mais Posts

09/05/2015

Erick

Então Joel, o Campo de índice 3 é o campo "Valor" da tabela
Responder

Gostei + 0

09/05/2015

Joel Rodrigues

Mas você não tem 4 campos, só tem um. Observe a instrução SQL:
Select sum(Valor) from TabVendas

Isso vai retornar apenas um campo, que você deve acessar pelo índice zero.
Responder

Gostei + 0

12/05/2015

Erick

Putz... Verdade, resolvido. Muito obrigado mesmo Joel!
Responder

Gostei + 0

12/05/2015

Joel Rodrigues

Putz... Verdade, resolvido. Muito obrigado mesmo Joel!

Que bom que resolveu,
Um abraço e bons códigos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar