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

list index out of bounds(8)


lucy4000

Pergunta

oi pessoal, estou com um um problema quando executo minhas buscas..

tenho um form, e nele deixo a opcao do usuario fazer a pesquisa do jeito q ele quer: tipos, subtipos, cliente, data, todos..enfim..só que em algum momento, ele dá esse erro.

é estranho porque quando eu mando procurar(primeira vez) por data, tipo, subtipo1 e subtipo2 ele busca normal, sem erros, mas se eu faço por partes ele da erro...tipo assim:

eu mando procurar por data, ele busca sem erro, depois eu mando buscar por data e tipo, sem erro novamente, depois por data e subtipo1, sem erros... dae quando mando por subtipo2 ele dá esse erro =S sendo q quando eu mando procurar por data, tipo, subtipo1 e subtipo2 na primeira vez q abro o form ele busca sem erros, mas se é na segunda consulta em diante, ele da o erro:

"list index out of bounds(8)"

não consigo entender...alguém sabe q erro é esse? e o porque dá esse erro?valeu

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
"list index out of bounds(8)"

índice de lista fora da faixa (8) "

Esse erro acontece por falta ou excesso de parametros passados ....

poste o seu codigo que fica mais facil te ajudar

abraço

if ValidarDAta(mskdatainicial, mskdatafinal) then

begin

decodedate(strtodate(mskdatainicial.Text), ano, mes, dia);

datainicial:= inttostr(mes) +'/'+ inttostr(dia) +'/'+ inttostr(ano);

decodedate(strtodate(mskdatafinal.text), ano, mes, dia);

datafinal:= inttostr(mes) +'/'+ inttostr(dia) +'/'+ inttostr(ano);

if chktipos.Checked then

begin

if (cosub1.Text <>'') and (cosub2.Text='') then

begin

if optcliente.Checked then

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, Format(L.total_operacao,"###,##0.00"), '+

'S2.Subtipo2, L.NF, S1.Subtipo FROM Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2=S2.Cod_Subtipo2) ON S1.Cod_Subtipo1=L.cod_subtipo1 WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%") '+

'AND ((S1.Subtipo)="'+cosub1.text+'")) ORDER BY L.data, L.Cod_lancamento';

flag:=2;

end

else

begin

varsql:='SELECT FORMAT(IIf([operacao]="Entrada",total_operacao,""),"#####0.00") AS Entrada, FORMAT(IIf([operacao]="Saída",total_operacao,""),"#####0.00") AS Saida, lancamentos.cod_lancamento, lancamentos.data, lancamentos.historico,Lancamentos.NF, '+

'lancamentos.operacao,FORMAT(lancamentos.total_operacao, "###,##0.00"), Subtipo2.Subtipo2 FROM (Subtipo1 INNER JOIN (lancamentos LEFT JOIN subtipo2 ON lancamentos.cod_subtipo2 = subtipo2.Cod_Subtipo2) ON Subtipo1.Cod_Subtipo1 = lancamentos.cod_subtipo1) ' +

'WHERE (Lancamentos.Data Between #'+datainicial+'# And #'+datafinal+'#) and (subtipo1.subtipo = "'+cosub1.Text+'") ORDER BY Lancamentos.Data, Lancamentos.Cod_lancamento';

flag:=2;

end

end

else

begin

if (cosub1.Text<>'') and (cosub2.Text<>'') then

begin

if optcliente.Checked then

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, Format(L.total_operacao,"###,##0.00"), '+

'S2.Subtipo2, L.NF, S1.Subtipo FROM Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2=S2.Cod_Subtipo2) ON S1.Cod_Subtipo1=L.cod_subtipo1 WHERE (((L.data) Between #1/7/2008# And #7/30/2008#) AND ((L.historico) Like "'+edtnome.Text+'%") '+

'AND ((S1.Subtipo)="'+cosub1.Text+'") AND ((S2.Subtipo2)="'+cosub2.Text+'")) ORDER BY L.data, L.Cod_lancamento';

flag:=3;

end

else

begin

varsql:='SELECT FORMAT(IIf([operacao]="Entrada",total_operacao,""),"#####0.00") AS Entrada, FORMAT(IIf([operacao]="Saída",total_operacao,""),"#####0.00") AS Saida, L.cod_lancamento, L.data, L.historico, '+

'L.operacao, L.NF, FORMAT(L.total_operacao, "###,##0.00") FROM (Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+

'WHERE (L.Data Between #'+datainicial+'# And #'+datafinal+'#) and (S1.subtipo = "'+cosub1.Text+'") and (S2.subtipo2 = "'+cosub2.Text+'") ORDER BY L.Data, L.Cod_lancamento';

flag:=3;

end;

end

else

begin

if cotipo.Text <> '' then

begin

if optcliente.Checked then

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+

'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, S2.Subtipo2, Tipo.Tipo FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+

'INNER JOIN Tipo ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%") AND ((Tipo.Tipo)="'+cotipo.Text+'")) ORDER BY L.data, L.Cod_lancamento';

flag:=1;

end

else

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+

'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF, Tipo.Tipo FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+

'INNER JOIN Tipo ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((Tipo.Tipo)="'+cotipo.Text+'")) ORDER BY L.data, L.Cod_lancamento;';

flag:=1;

end;

end

else

begin

showmessage('Escolha um tipo ou desmarque a opção');

exit;

end;

end

end

end

else

begin

if optcliente.Checked then

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+

'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) INNER JOIN Tipo '+

'ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%")) ORDER BY L.data, L.Cod_lancamento';

flag:=1;

end

else

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+

'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) INNER JOIN Tipo '+

'ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#)) ORDER BY L.data, L.Cod_lancamento';

flag:=1;

end;

end;

FRelatSint.QuickRep1.Preview;

end;

obrigada jhonas:)

esse flag eu uso para posicionamento dos dbedits e outros controles..porque difere dependendo da consulta

Link para o comentário
Compartilhar em outros sites

  • 0

if ValidarDAta(mskdatainicial, mskdatafinal) then
begin
decodedate(strtodate(mskdatainicial.Text), ano, mes, dia);
datainicial:= inttostr(mes) +'/'+ inttostr(dia) +'/'+ inttostr(ano);
decodedate(strtodate(mskdatafinal.text), ano, mes, dia);
datafinal:= inttostr(mes) +'/'+ inttostr(dia) +'/'+ inttostr(ano);
if chktipos.Checked then
begin
if (cosub1.Text <>'') and (cosub2.Text='') then
begin
if optcliente.Checked then
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, Format(L.total_operacao,"###,##0.00"), '+
'S2.Subtipo2, L.NF, S1.Subtipo FROM Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2=S2.Cod_Subtipo2) ON S1.Cod_Subtipo1=L.cod_subtipo1 WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%") '+
'AND ((S1.Subtipo)="'+cosub1.text+'")) ORDER BY L.data, L.Cod_lancamento';
flag:=2;
exit;  ///   sair aqui
end
else
begin
varsql:='SELECT FORMAT(IIf([operacao]="Entrada",total_operacao,""),"#####0.00") AS Entrada, FORMAT(IIf([operacao]="Saída",total_operacao,""),"#####0.00") AS Saida, lancamentos.cod_lancamento, lancamentos.data, lancamentos.historico,Lancamentos.NF, '+
'lancamentos.operacao,FORMAT(lancamentos.total_operacao, "###,##0.00"), Subtipo2.Subtipo2 FROM (Subtipo1 INNER JOIN (lancamentos LEFT JOIN subtipo2 ON lancamentos.cod_subtipo2 = subtipo2.Cod_Subtipo2) ON Subtipo1.Cod_Subtipo1 = lancamentos.cod_subtipo1) ' +
'WHERE (Lancamentos.Data Between #'+datainicial+'# And #'+datafinal+'#) and (subtipo1.subtipo = "'+cosub1.Text+'") ORDER BY Lancamentos.Data, Lancamentos.Cod_lancamento';
flag:=2;
exit;  /// sair aqui
end
end
else
begin
if (cosub1.Text<>'') and (cosub2.Text<>'') then
begin
if optcliente.Checked then
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, Format(L.total_operacao,"###,##0.00"), '+
'S2.Subtipo2, L.NF, S1.Subtipo FROM Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2=S2.Cod_Subtipo2) ON S1.Cod_Subtipo1=L.cod_subtipo1 WHERE (((L.data) Between #1/7/2008# And #7/30/2008#) AND ((L.historico) Like "'+edtnome.Text+'%") '+
'AND ((S1.Subtipo)="'+cosub1.Text+'") AND ((S2.Subtipo2)="'+cosub2.Text+'")) ORDER BY L.data, L.Cod_lancamento';
flag:=3;
exit; // sair aqui
end
else
begin
varsql:='SELECT FORMAT(IIf([operacao]="Entrada",total_operacao,""),"#####0.00") AS Entrada, FORMAT(IIf([operacao]="Saída",total_operacao,""),"#####0.00") AS Saida, L.cod_lancamento, L.data, L.historico, '+
'L.operacao, L.NF, FORMAT(L.total_operacao, "###,##0.00") FROM (Subtipo1 as S1 INNER JOIN (lancamentos as L LEFT JOIN subtipo2 as S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+
'WHERE (L.Data Between #'+datainicial+'# And #'+datafinal+'#) and (S1.subtipo = "'+cosub1.Text+'") and (S2.subtipo2 = "'+cosub2.Text+'") ORDER BY L.Data, L.Cod_lancamento';
flag:=3;
exit; // sair aqui
end;
end
else
begin
if cotipo.Text <> '' then
begin
if optcliente.Checked then
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+
'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, S2.Subtipo2, Tipo.Tipo FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+
'INNER JOIN Tipo ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%") AND ((Tipo.Tipo)="'+cotipo.Text+'")) ORDER BY L.data, L.Cod_lancamento';
flag:=1;
exit; // sair aqui
end
else
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+
'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF, Tipo.Tipo FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) '+
'INNER JOIN Tipo ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((Tipo.Tipo)="'+cotipo.Text+'")) ORDER BY L.data, L.Cod_lancamento;';
flag:=1;
end;
end
else
begin
showmessage('Escolha um tipo ou desmarque a opção');
exit;
end;
end
end
end
else
begin
if optcliente.Checked then
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+
'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) INNER JOIN Tipo '+
'ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%")) ORDER BY L.data, L.Cod_lancamento';
flag:=1;
exit; // sair aqui
end
else
begin
varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+
'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) INNER JOIN Tipo '+
'ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#)) ORDER BY L.data, L.Cod_lancamento';
flag:=1;
end;
end;
FRelatSint.QuickRep1.Preview;
end;

OBS: Coloque o FRelatSint.QuickRep1.Preview para ser executado nas saidas do codigo ( exit; )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Jhonas, obrigada pela ajuda mas não funcionou..:( fiz assim em cada saida: ex:

if optcliente.Checked then

begin

varsql:='SELECT Format(IIf([operacao]="Entrada",[total_operacao],""),"#####0.00") AS Entrada, Format(IIf([operacao]="Saída",[total_operacao],""),"#####0.00") AS Saida, L.Cod_lancamento, L.data, L.historico, L.operacao, '+

'Format(L.total_operacao,"###,##0.00") AS Expr1, S2.Subtipo2, S1.Subtipo, L.NF FROM (Subtipo1 AS S1 INNER JOIN (lancamentos AS L LEFT JOIN subtipo2 AS S2 ON L.cod_subtipo2 = S2.Cod_Subtipo2) ON S1.Cod_Subtipo1 = L.cod_subtipo1) INNER JOIN Tipo '+

'ON S1.Cod_tipo = Tipo.Cod_tipo WHERE (((L.data) Between #'+datainicial+'# And #'+datafinal+'#) AND ((L.historico) Like "'+edtnome.Text+'%")) ORDER BY L.data, L.Cod_lancamento';

flag:=1;

FRelatSint.QuickRep1.Preview

exit; // sair aqui

end

Link para o comentário
Compartilhar em outros sites

  • 0

"list index out of bounds(8)"

índice de lista fora da faixa (8) "

Verifique com calma e usando tambem o debugger do delphi ( usando os breakpoints ) para achar qual é o indice que está fora da sua lista.

O erro com certeza está em um dos selects.

abraço

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,2k
×
×
  • Criar Novo...