Pues si, has sido muy claro y conciso
.
Creo que vas bien. La SQL que necesitas para actualizar el precio según la lista elegida sería:
Código Delphi
[-]
For i:=0 to SGListaProductos.RowCount-1 Do
Begin
DM.ZQActualizaListaPrecio.SQL.Add('UPDATE productos');
DM.ZQActualizaListaPrecio.SQL.Add(' SET Precio = :precio');
DM.ZQActualizaListaPrecio.SQL.Add('Where CodProducto = :codigo');
DM.ZQActualizaListaPrecio.ParamByName('precio').AsCurrency:= strToCur(Precio);
DM.ZQActualizaListaPrecio.ParamByName('codigo').AsInteger := StrToInt(SGListaProductos.Cells[3,i]);
DM.ZQActualizaListaPrecio.ExecSql; end;
Aunque yo, en lugar de guardar los 4 precios en la tabla productos, hubiera creado una nueva tabla llamada tarifas, donde a cada producto le pondría los precios:
tabla tarifas:
Código:
codProducto Tipo_Tarifa Precio
21 Precio_Bajo 10 €
21 Precio_Medio 15 €
21 Precio_Alto 30 €
1 Precio_Bajo 10 €
1 Precio_Alto 30 €
La clave primaria la conformaría los dos primeros campos, de esa forma no se permitirían inchoherencias (poner 2 precios a un mismo producto con el mismo Tipo_Tarifa).
Después, para presentar la lista en el combo haría algo así:
Código SQL
[-]
select * from tarifas where codigo = 1
En el combo podría presentar el campo Tipo_Tarifa, y el usuario elije la que quiere aplicar.
Saludos