Delphi - List Index Out of Bounds etc ayuda por favor!!!!

 
Vista:

List Index Out of Bounds etc ayuda por favor!!!!

Publicado por JuanchoDev (20 intervenciones) el 18/04/2010 20:19:46
intento modificar una serie de campos...y me da el error List Index Out Of Bounds...alguien me da una mano...?

gracias de antemano


//el id es el 10
adoquery3.Close;
cons1:='SELECT colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha, colaboradores.id FROM ';
cons2:='colaboradores, roles where colaboradores.rol=roles.id and colaboradores.id=:p';
adoquery3.SQL.Text:=cons1+cons2;
adoquery3.Parameters.ParamByName('p').Value:=adoquery1.Fields[10].AsString;
adoquery3.Open;
adoquery3.Edit;
//falta validar q las pwd sean iguales
adoquery3.Fields[0].AsString:=edit1.Text;
adoquery3.Fields[1].AsString:=edit2.Text;
adoquery3.Fields[2].AsString:=edit3.Text;
adoquery3.Fields[3].AsString:=edit4.Text;
adoquery3.Fields[4].AsString:=edit5.Text;
adoquery3.Fields[5].AsString:=edit6.Text;
adoquery3.Fields[6].AsString:=edit7.Text;
//averiguo el rol
adoquery4.Close;
adoquery4.SQL.Text:='select id, rol from roles where rol=:p';
adoquery4.Parameters.ParamByName('p').Value:=adoquery4.Fields[0].AsString ;
adoquery4.Open;

adoquery3.Fields[7].AsString:=edit8.Text;
adoquery3.Fields[8].AsString:=adoquery4.Fields[1].AsString ;
adoquery3.Fields[9].AsString:=edit10.Text;
adoquery3.Post;
adoquery3.Close;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por martin (43 intervenciones) el 18/04/2010 23:23:03
adoquery4.Fields[0].AsString; no existe, porque unas lineas antes haces un AdoQuery4.Close,con lo cual ya no hay recordset ni indice 0.

creo q falla aca
adoquery4.Parameters.ParamByName('p').Value:=adoquery4.Fields[0].AsString;
ademas estas filtrando adoquery4 con adoquery4. guarda en un variable el dato antes de cerrar l adoquery4 y pasalo como parametros , si es eso lo que queres hacer.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por JuanchoDev (20 intervenciones) el 19/04/2010 01:58:10
sigo en la misma "...BOUNDS(0)".

El .close lo hago porque estoy por digamos reparametrizar el adoquery4.

Igual gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por martin (43 intervenciones) el 19/04/2010 02:28:43
usa F7 para ir depurando el programa y fijate en que linea se detiene;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por JuanchoDev (20 intervenciones) el 19/04/2010 03:21:19
el tema de debuggear asi es q se detiene (aun teniendo el form3 solamente mostrandolo) es que a partir de que hace Show del primer form se detiene...

ideas...?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por martin (43 intervenciones) el 19/04/2010 03:32:29
pone un breakpoint en ese codigo, y play, si no llega a ese breakpoint quiere decir q el problema esta en otro lado.

Por Otro lado, probaste cambiar los indices apartir de 1 y no de 0?

Yo uso para referir a un campo Query4['nombrecampo']
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por JuanchoDev (20 intervenciones) el 19/04/2010 05:13:10
Probe aprolijando las cosas, practicamente funciona, los problemas son 2:
1) en lugar de modificar hace append
2)no postea los datos correspondientes que deberian salir del adoqry4 (que es un combo que se llena con fk´s)

procedure TForm3.Modificar1Click(Sender: TObject);
var cons1, cons2:string;

begin
if edit2.Text = edit9.Text then
begin
adoquery3.Close;
cons1:='select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha ';
cons2:='from colaboradores, roles where colaboradores.rol=roles.id';
//adoquery3.Parameters.ParamByName('p').Value:=adoquery2.Fields[9].AsString;
adoquery3.SQL.Text:=cons1+cons2;
adoquery3.Open;
adoquery3.Edit;
adoquery3.Fields[1].AsString:=edit1.Text;
adoquery3.Fields[2].AsString:=edit2.Text;
adoquery3.Fields[3].AsString:=edit3.Text;
adoquery3.Fields[4].AsString:=edit4.Text;
adoquery3.Fields[5].AsString:=edit5.Text;
adoquery3.Fields[6].AsString:=edit6.Text;
adoquery3.Fields[7].AsString:=edit7.Text;
adoquery3.Fields[8].AsString:=edit8.Text;

//averiguo el rol
adoquery4.Close;
adoquery4.SQL.Text:='select id, rol from roles where rol=:p';
adoquery4.Parameters.ParamByName('p').Value:=adoquery3.Fields[9].AsString ;
adoquery4.Open;

adoquery3.Fields[9].AsString:=adoquery4.Fields[0].AsString;
adoquery3.Fields[10].AsString:=edit10.Text;
adoquery3.Post;
adoquery3.Close;

showmessage('Registro modificado exitosamente!');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:List Index Out of Bounds etc ayuda por favor!!!

Publicado por JuanchoDev (20 intervenciones) el 20/04/2010 03:37:34
probe agregando
adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true);

pero ahora me da list index out of bounds
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar