PDA

Ver la Versión Completa : Asignar valor de Locate


The Cid James
12-12-2017, 22:06:17
Buenas gente necesito asignar el valor del locate del siguiente codigo a una variable de tipo integer, el problema es que siempre me devuelve 0 el resultado

procedure Tfstock.Button1Click(Sender: TObject);
begin
if fmodulo.tProductos.Locate('id_producto', fmodulo.qProductos['id_producto'], [])
then
fstockproductos := Tfstockproductos.Create(self);
fstockproductos.ShowModal;
fstockproductos.Bsprestar.Visible := false;
idproducto := fmodulo.qProductos.Fields.FieldByName('id_producto').AsInteger;
end;

Este valor seria el parametro para editar las cantidades de esta forma

procedure Tfstockproductos.BspaumentarClick(Sender: TObject);
begin
fmodulo.qProductos.Active := true;
fmodulo.tProductos.Active := true;
if fmodulo.tProductos.Locate('id_producto', fstock.idproducto, [])
then
begin
fmodulo.tProductos.Edit;
fmodulo.tProductos.Fields.FieldByName('Stock').AsInteger := fmodulo.qProductos.Fields.FieldByName('Stock').AsInteger + StrToInt(Estockproductos.text);
fmodulo.tProductos.Post;
fmodulo.qProductos.Refresh;
close;
fmodulo.tProductos.Active := false;
fstock.idproducto := 0;
end
else
ShowMessage('no encontrado '+ '- ' +IntToStr(fstock.idproducto));
end;

The Cid James
14-12-2017, 03:34:15
Al final lo resolví con dos radio button de la siguiente manera por no encontrar el erro :confused:

procedure Tfstock.Button1Click(Sender: TObject);
begin
fmodulo.tProductos.Active := true;
if rbsumar.Checked = true
then
begin
if fmodulo.tProductos.Locate('id_producto', fmodulo.qProductos['id_producto'], [])
then
begin
fmodulo.qProductos.Active := true;
fmodulo.tProductos.Edit;
idproducto := 0;
idproducto := StrToInt(Esumrest.text);
fmodulo.tProductos.Fields.FieldByName('Stock').AsInteger := fmodulo.qProductos.Fields.FieldByName('Stock').AsInteger + idproducto;
fmodulo.tProductos.Post;
fmodulo.qProductos.Refresh;
end;
end
else
if RBrestar.Checked = true
then
if fmodulo.tProductos.Locate('id_producto', fmodulo.qProductos['id_producto'], [])
then
begin
fmodulo.qProductos.Active := true;
fmodulo.tProductos.Edit;
idproducto := 0;
idproducto := StrToInt(Esumrest.text);
fmodulo.tProductos.Fields.FieldByName('Stock').AsInteger := fmodulo.qProductos.Fields.FieldByName('Stock').AsInteger - idproducto;
fmodulo.tProductos.Post;
fmodulo.qProductos.Refresh;
end;

end;