Hola
Seguimos.....
El evento oncreate:
procedure TBuscaArticulo.FormCreate(Sender: TObject);
begin
ATArticulos.Open;
end;
Si, ya se, este es el nombre que le di a ADOTable que se ve en la foto.

Como veis, simplemente se abre desde el inicio del form.
Vamos arriba, al edit (buscar) Edit1:
En el evento OnChange:
procedure TBuscaArticulo.Edit1Change(Sender: TObject);
Var Filtro: String;
begin
If (Edit1.Text <> '') then
Begin
ATArticulos.Filtered := False;
If CBFiltro.Text = 'Código' then Filtro := 'CodProducto Like '''+Edit1.Text + '*'''
else If CBFiltro.Text = 'Descripción' then Filtro := 'Descripcion Like '''+ Edit1.Text + '*''';
ATArticulos.Filter := Filtro;
ATArticulos.Filtered := True
end
else ATArticulos.Filtered := False;
end;
El botón aceptar, el mas importante:
procedure TBuscaArticulo.Button1Click(Sender: TObject);
Var
a,b,c,d,e,f,g : real;
begin
a:= StrTofloat(Edit2.Text); //cantidad
b:= StrTofloat(Edit3.Text); //pVenta
f:= StrTofloat(Edit4.Text); //Impuesto
d:= StrTofloat(Edit5.Text); // Descuento
c:= (a * b); // subtotal
e:= c * f / 100; // impuesto
g:= (c - d) + e; // Total
// Inserta en la tabla factura
AdoQuery1.SQL.Text := 'Insert into Factura Values ('+QuotedStr(FFacturaDBG.ECodFactura.Text)+', :fecha, '+QuotedStr(FFacturaDBG.ECodCliente.Text)+ ', '+QuotedStr(ATArticulosCodProducto.AsString)+ ', '+QuotedStr(ATArticulosDescripcion.AsString)+ ', '+QuotedStr(Edit2.Text)+ ', '+QuotedStr(FFacturaDBG.ComboBox1.Text)+', '+QuotedStr(FFacturaDBG.EOCompra.Text)+', '+
QuotedStr(FFacturaDBG.EVendedor.Text)+', '+QuotedStr(Edit3.Text)+', '+QuotedStr(Edit4.Text)+', '+FloatToStr(c)+', '+QuotedStr(Edit5.Text)+ ', '+FloatToStr(e)+ ', '+FloatToStr(g)+')';
AdoQuery1.Parameters.ParamByName('fecha').Value:= DateToStr(FFacturaDBG.DateTimePicker1.Date);
AdoQuery1.ExecSQL;
// actualiza el inventario
AdoQuery2.SQL.Text:= 'Update Articulos set disponible = disponible - :a Where CodProducto = :b';
AdoQuery2.Parameters[0].Value:= FloatToStr(a);
AdoQuery2.Parameters[1].Value:= Cod;
AdoQuery2.ExecSQL;
Close;
end;
Este hace prácticamente lo mismo que el botón Guardar del antiguo form factura, solamente le hice algunos cambios para mejorar la practica, compararlos, siempre es bueno.
Ahora nos vamos al datasource que esta ligado al adotable, en este caso lo he llamado
DSArticulos.
Vamos al evento
OnDataChange, le damos doble click y ponemos esto:
procedure TBuscaArticulo.DSArticulosDataChange(Sender: TObject;
Field: TField);
begin
Edit3.Text:= FloatToStr(ATArticulosPrecioVA.Value);
Cod:= ATArticulosCodProducto.AsString;
Des:= ATArticulosDescripcion.asString;
end;
Si, también lo se, donde están declaradas esas variables ?, bien, aquí, en el inicio del form:
var
BuscaArticulo: TBuscaArticulo;
Cod, Des: String; // aquí mismo
Que hace esto ?'??:
Cada vez que se mueve entre los registros cambia el valor de las variables ademas de cambiar el valor del edit3 que contiene el precio del articulo.
Bien, como veis no ha sido nada dificil el cambio.
Por cierto, ha modificado el campo
Exento y le he puesto
PrecioVenta (para que lo tengáis presente.
Para llamar al nuevo form factura, que llamara a su vez al de búsqueda haced simplemente lo mismo que hicisteis con el anterior, solo que lógicamente usando el nuevo nombre .
Bueno, ya podeis correr el programa........
Espero os sirva de practica y ojala de algún conocimiento adicional, aunque sea básico.
Saludos
Os dejo el código completo con los cambios, como siempre.
Listo el Tutorial de Facturación 3, espero os sirva.
Aqui os dejo el enlace.