The Cid James |
20-11-2017 11:04:24 |
Cita:
Empezado por movorack
(Mensaje 522612)
No se... Seguiste con las mismas asignaciones. lee los comentarios y entenderás un poco lo que trato de decirte
Código Delphi [-]
procedure TfCantidad.BCokClick(Sender: TObject);
var
CantArts: integer; begin
fmodulo.tVentadetalle.Active := true;
fmodulo.tProductos.Active := true;
if (string(Ecantidad.Text).Trim.Length = 0)
or (not TryStrToInt(Ecantidad.Text, CantArts)) then
begin
Application.MessageBox('El valor ingresado debe ser mayor a O', 'Drugstore',mb_yesno+mb_iconquestion);
Exit;
end;
if fmodulo.tVentadetalle.State in [dsEdit, dsInsert] then
fmodulo.tVentadetalle.Cancel;
fmodulo.tVentadetalle.Insert;
fmodulo.tVentadetalle.Fields.FieldByName('id_ventas').AsString := IntToStr(fmodulo.qnumventa.Fields.FieldByName('id_venta').AsInteger + 1);
fmodulo.tVentadetalle.Fields.FieldByName('id_producto').Value := fmodulo.tProductos.Fields.FieldByName('id_producto').Value;
fmodulo.tVentadetalle.Fields.FieldByName('Precio_v').AsString := IntToStr(fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsInteger * fmodulo.tProductos.Fields.FieldByName('precio_vent').AsInteger);
fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsString := fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsString;
fmodulo.tVentadetalle.Post;
fmodulo.tVentadetalle.Refresh;
self.Close;
end;
He tratado de utilizar los mismos tipos de datos que al parecer tienes en tu dataset. pero cosas como el precio y cantidad es mejor que los coloques como float. EN un futuro pueden decirte que quieren vender medio paquete de cigarrillos o que el valor de un producto con oferta es de 9.99
|
Muchas gracias por tomarte el tiempo de explicarme!
Ahora bien voy a seguir tus consejos pero me quedan las siguientes dudas:
Si me di cuenta que no estaba usando el valor de la asignacion por eso no hacia los calculos, aunque no tenia ni idea de como hacerlo iba a hacer ahora un post con eso ahora que me tengo tiempo xD
En el caso de
Código Delphi [-] d := fmodulo.qnumventa.Fields.FieldByName('id_venta').AsInteger;
e := (d + 1);
Esto lo hacia porque uso un autoincremental en venta, pero el post se hace despues de que se realiza la venta por lo cual no se asigna igual no sabia que podía usar los datos directamente de la base de datos en tiempo de ejecución para hacer los cálculos.
Y la ultima duda que tengo es sobre
Código Delphi [-] if fmodulo.tVentadetalle.State in [dsEdit, dsInsert] then
fmodulo.tVentadetalle.Cancel;
Este codigo es necesario? porque abro y cierro el modo insert en cada boton con el que trabajo o sirve como medida de seguridad si lo tengo abierto de otro lado?
Ademas probando el codigo me dice que dsEdit y dsInsert son variables no definidas (sera porque uso zeoslib?) y la "cantidad" se carga con el valor 1 y no con el valor que le estoy cargando el tedit
|