Argument out of range
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)
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
Curtidas 0
Melhor post
Joel Rodrigues
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.
GOSTEI 2
Mais Respostas
Erick
08/05/2015
Então Joel, o Campo de índice 3 é o campo "Valor" da tabela
GOSTEI 0
Joel Rodrigues
08/05/2015
Mas você não tem 4 campos, só tem um. Observe a instrução SQL:
Isso vai retornar apenas um campo, que você deve acessar pelo índice zero.
Select sum(Valor) from TabVendas
Isso vai retornar apenas um campo, que você deve acessar pelo índice zero.
GOSTEI 0
Erick
08/05/2015
Putz... Verdade, resolvido. Muito obrigado mesmo Joel!
GOSTEI 0
Joel Rodrigues
08/05/2015
Putz... Verdade, resolvido. Muito obrigado mesmo Joel!
Que bom que resolveu,
Um abraço e bons códigos.
GOSTEI 0