Delphi - Ayuda con adoquery.post

 
Vista:

Ayuda con adoquery.post

Publicado por JuanchoDev (20 intervenciones) el 19/04/2010 05:26:39
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)
3)reemplaza los datos del primer registro

parece haber enloquecido

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 pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con adoquery.post

Publicado por JuanchoDev (20 intervenciones) el 19/04/2010 06:03:25
lo arregle bastante pero me dice adoquery3.Parameters.ParamByName('p'). parameter p not found

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 and colaboradores.id=:p';
adoquery3.Parameters.ParamByName('p').Value:=adoquery1.Fields[10].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 from roles where rol=:p';
adoquery4.Parameters.ParamByName('p').Value:=combobox1.Text ;
adoquery4.Open;

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

showmessage('Registro modificado exitosamente!');
adoquery1.Open;



end

else

showmessage('Las Contraseñas no fueron confirmadas correctamente, deben ser iguales');

end;
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:Ayuda con adoquery.post

Publicado por martin (43 intervenciones) el 19/04/2010 13:53:43
Probaste poner el ParamByName('p').Value:=adoquery1.Fields[10].AsString; depues de concatenar el Query, quisas no enuentra p en el SQL.text y puede ser que te modifique el primer registro por que cuando haces open el cursor siempre se para en el primer registro y luego le poner edit, con lo cual modifica el registro donde estas parado.

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:Ayuda con adoquery.post

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

//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 ';
//cons3:='where colaboradores.rol=roles.id and colaboradores.id=:p';

adoquery3.SQL.Add('select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha ');
adoquery3.SQL.Add('from colaboradores, roles ');

adoquery3.SQL.Add('where colaboradores.rol=roles.id and colaboradores.id=:p') ;

adoquery3.SQl.CommaText:=adoquery3.Parameters.ParseSQL
(adoquery3.SQL.Text,true);

//tambien con solo sql.text

//adoquery3.SQL.Text:=cons1+cons2+cons3;
//adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true);
adoquery3.Parameters.ParamByName('p').Value:=adoquery2.Fields[0].AsInteger;

adoquery3.Open;
adoquery3.Edit;
adoquery3.Fields[1].AsString:=edit1.Text;
adoquery3.Fields[2].AsString:=edit2.Text;

y me da lo mismo...estoy desconsolado
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