Hola a todos!
Gracias a los sabios consejos que me dieron en este post:
https://www.clubdelphi.com/foros/showthread.php?t=94720 comencé con mucho éxito la migración y refactorización de mi humilde sistema.
He avanzado mucho y el código está quedando mucho más legible y ordenado que antes.
Sin embargo, en algunas ocasiones me está costando bastante separar las consultas SQL de los forms.
Por ejemplo, un código como este:
Código Delphi
[-]Modulo.ADOCommand.CommandText := 'DELETE FROM Productos WHERE Cod_Producto = :pCodigo';
Modulo.ADOCommand.Parameters.ParamByName('pCodigo').Value := Edit_Codigo.Text;
Modulo.ADOCommand.Execute
Fue sencillo de separar con un simple procedimiento:
Código Delphi
[-]Modulo.EliminarArticulo(Edit_Codigo.Text);
Ahora bien, cuando necesito volcar los datos recibidos de la consulta en el form no se muy bien como hacerlo.
Por ejemplo, un código como este ¿cómo lo refactorizarían?
Código Delphi
[-]
Modulo.Consulta.Active := FALSE;
Modulo.Consulta.SQL.Clear;
Modulo.Consulta.SQL.Add('SELECT Productos.*, Proveedores.Denominacion, Secciones.Desc_Seccion, '+
'Categorias.Desc_Categoria, IVA.Valor AS Valor_IVA '+
'FROM Productos, Proveedores, Categorias, Secciones, IVA '+
'WHERE (Cod_Producto = :pCodigo) AND '+
'(Productos.Cod_Proveedor = Proveedores.Cod_Proveedor) AND '+
'(Productos.Cod_Categoria = Categorias.Cod_Categoria) AND '+
'(Categorias.Cod_Seccion = Secciones.Cod_Seccion) AND '+
'(Productos.Porcentaje_IVA = IVA.Codigo)');
Modulo.Consulta.Parameters.ParamByName('pCodigo').Value := Edit_Codigo.Text;
Modulo.Consulta.Active := TRUE;
With Modulo.Consulta do
begin
Edit_Descripcion.Text := FieldByName('Desc_Producto').AsString;
Edit_PreUnitario.Text := FieldByName('Precio').AsString;
ComboBox_IVA.Text := FieldByName('Valor_IVA').AsString;
Edit_Ganancia.Text := FieldByName('Porcentaje_Ganancia').AsString;
SpinEdit_Stock.Text := FieldByName('Cant_Existente').AsString;
SpinEdit_StockMinimo.Text := FieldByName('Cant_Minima').AsString;
SpinEdit_CantRep.Text := FieldByName('Cant_Reposicion').AsString;
ComboBox_Seccion.Text := FieldByName('Desc_Seccion').AsString;
ComboBox_Categoria.Text := FieldByName('Desc_Categoria').AsString;
ComboBox_Proveedor.Text := FieldByName('Denominacion').AsString;
Edit_CodProveedor.Text := FieldByName('Cod_Producto_Proveedor').AsString;
SpinEdit_UniProveedor.Text := FieldByName('Unidad_Proveedor').AsString;
Edit_CodBarras.Text := FieldByName('Cod_Barras').AsString;
end;
Saludos!