robinhocne Postado Novembro 3, 2007 Denunciar Share Postado Novembro 3, 2007 Está dando esse erro no meu projeto, na hora de eu salvar os dados, alguém sabe o que é esse erro e porque está acontecendo?List Index out of Bounds (36) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Novembro 3, 2007 Denunciar Share Postado Novembro 3, 2007 Qual banco você usa?Qual componente para conexão?E como esta salvando o registro?AbraçosAlexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Novembro 3, 2007 Autor Denunciar Share Postado Novembro 3, 2007 (editado) Qual banco você usa?Qual componente para conexão?E como esta salvando o registro?AbraçosAlexandreEu uso Firebird 2.0.3Para conexão, IBQuery, IBDataBase e um IBTransaction.Bom eu acrescentei um Chekbox em meu projeto para que o usuario queira colocar a observação que ele queira deixar em alerta tipo assim ai aparecerá uma mensagem na aba principal do cadastro de alunos informando que tem uma observação em alerta.Então vou passar os ultimos codigos que está o ChekBox, pois é sobre isso que está dando erro.No banco de dados da tabela de alunos eu coloquei o Alerta como Numeric (1,0), para ele checar se for 1 ele ficar aparecendo zero caso contrario não!Onde está dando o erro é no ChekObs, verificam para min se eu faço a checagem assim?begin with vcpo do begin clear; add ('dtcadastro'); add ('servicos'); .... add ('observacoes'); add ('CnhEntregue'); If (EData ( TxtDtEnt.Text ) ) Then add ('DtEntregue'); add ('Registro'); Add ('Cedula'); If (EData ( TxtVen.Text ) ) Then add ('Venc_Cnh'); add ('Cat'); Add ('Alerta'); end; with vvlr do begin clear; Add ('Current_Date'); if (rdbhab.checked) then add ('1') else if (rdbalt.checked) then add('2') else if (rdbren.checked) then add ('3'); .... add (#39 + txtla.Text + #39); add (#39 + memobs.Text + #39); If RdbEnt.Checked Then Add ('1'); If ( EData (TxtDtEnt.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtDtEnt.Text)) + #39); Add (#39 + TxtReg.Text + #39); Add (#39 + TxtCed.Text + #39); If ( EData (TxtVen.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtVen.Text)) + #39); Add (#39 + TxtCate.Text + #39); If ChekObs.Checked Then Add ('1'); end; If (Editar) Then begin AlterarRegistro ('alunos', vCpo, vVlr, 'codigo =' + txtmat.Text) end else begin IncluirRegistro('alunos', vCpo, vVlr); imprimeFicha(); end; Inherited; End; Editado Novembro 3, 2007 por robinhocne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Novembro 6, 2007 Autor Denunciar Share Postado Novembro 6, 2007 Estava testando o programa e observei que se eu não selecionar o radiobutton e o check box ele não salva ai ele dá p erro.Esse é os dados do RadioButton que é salvo:If RdbEnt.Checked Then Add ('1') else If RdbEnt.Checked Then Add ('0');e o chekbox If ChekObs.Checked Then Add ('1') else If ChekObs.Checked Then Add ('0');Porque esse erro? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 7, 2007 Denunciar Share Postado Novembro 7, 2007 Está dando esse erro no meu projeto, na hora de eu salvar os dados, alguém sabe o que é esse erro e porque está acontecendo?List Index out of Bounds (36)robinhocne, sempre que você lidar com listas (como TStringList, p.e.) ou vetores e você tentar acessar uma posição da lista que não exista você receberá uma mensagem deste tipo e que significa que você tentou acessar uma posição (Index) fora do domínio (out of bounds) da lista (list).Já "escolado" com este método que você está utilizando para gravar os dados, e vendo o código postado, eu arriscaria dizer que você está esquecendo de adicionar valores a sua lista de valores (vvlr).Levando em consideração que justamente no procedimento AlterarRegistro (ref. post) você faz uso de um único indexador (baseado em vcpo) e acessa as duas listas (vcpo e vvlr), e que geraria este erro caso sua lista de campos fosse maior que a de valores. ;)Imagino que você esteja adicionando a sua lista vcpo os campos associados aos ChekObs e RdbEnt, mas é possível observar no código a adição de valor em apenas uma condição (true), o que significa que em outra (false) não há adição à lista. Veja o comentário num trecho do seu código:... If RdbEnt.Checked Then // <========= apenas se checked Add ('1'); If ( EData (TxtDtEnt.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtDtEnt.Text)) + #39); Add (#39 + TxtReg.Text + #39); Add (#39 + TxtCed.Text + #39); If ( EData (TxtVen.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtVen.Text)) + #39); Add (#39 + TxtCate.Text + #39); If ChekObs.Checked Then // <========= apenas se checked Add ('1'); ... e quando a opção for falsa? supondo esta lógica em seu último post: If RdbEnt.Checked Then Add ('1') else If RdbEnt.Checked Then Add ('0'); isto não está "soando" meio estranho não?! se RdbEnt marcado então adiciona 1 senão se RdbEnt marcado então adiciona 0 e quando RdbEnt NÃO estiver marcado??? O lógico seria: If RdbEnt.Checked Then Add ('1') else Add ('0');já que Checked só pode ser True ou False, logo, if true then, do contrário, else (false)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Novembro 7, 2007 Autor Denunciar Share Postado Novembro 7, 2007 No Radio Button ele não está dando problemas, mas se eu tiro os dados do CheckBox ele funciona normal, mas se eu deixo ele com esses codigo:If ChekObs.Checked Then Add ('1') else If ChekObs.Checked Then Add ('0'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Novembro 7, 2007 Autor Denunciar Share Postado Novembro 7, 2007 No Radio Button ele não está dando problemas, mas se eu tiro os dados do CheckBox ele funciona normal, mas se eu deixo ele com esses codigo:If ChekObs.Checked Then Add ('1') else If ChekObs.Checked Then Add ('0'); Ok Resolvido: Muito Simples e não prestado a atenção: If RdbEnt.Checked Then Add ('1') else Add ('0'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
robinhocne
Está dando esse erro no meu projeto, na hora de eu salvar os dados, alguém sabe o que é esse erro e porque está acontecendo?
Link para o comentário
Compartilhar em outros sites
6 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.