Ver Mensaje Individual
  #38  
Antiguo 12-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Reputación: 18
BlackDaemon Va por buen camino
Bueno y una ves llenados todos los componetes podemos editar a nustro gusto todo y luego tenemos que guardar los cambios con el boton GUARDAR que en su evento OnClick pongo esto.

Código Delphi [-]
procedure TFrmAgregarProductos.SBGuardarClick(Sender: TObject);
begin
  if (MDescripcion.Text <> '') then
  begin
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE productos SET Descripcion = : desc, Categoria = : cat, SubCategoria = : SubCat, ');
      SQL.Add('Unidad = : Uni, Cantidad = : Cant, Proveedor = : Prov, UnidadPrecio = : UniPre, ');
      SQL.Add('PrecioCompraBs = : PCBs, PrecioCompraSus = : PCSus, Costo = : Cos, FechaActualizacion = : FA');
      SQL.Add('WHERE id_producto = : IDP');
      //Asignamos parametros a la tabla Productos
      ParamByName('desc').AsString := MDescripcion.Text;
      ParamByName('cat').AsString := DBLCBCategoria.Text;
      ParamByName('SubCat').AsString := DBLCBSubCategoria.Text;
      ParamByName('Uni').AsString := DBLCBUnidad.Text;
      ParamByName('Cant').AsString := ECantidad.Text;
      ParamByName('Prov').AsString := DBLCBProveedor.Text;
      ParamByName('UniPre').AsString := DBLCBUnidadPrecio.Text;
      ParamByName('PCBs').AsString := EPrecioCompraBs.Text;
      ParamByName('PCSus').AsString := EPrecioCompraSus.Text;
      ParamByName('Cos').AsString := ECosto.Text;
      ParamByName('FA').AsDateTime := DateTimePicker1.Date;

      ParamByName('IDP').AsInteger := idTarifa;
      ExecSQL;
    end;
    //Updateamos el código de la tabla Tarifas
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = : CodProNew, Precio = rec1New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P1 AND precio = : prec1Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec1New').AsInteger := StrToInt(EPrecio1.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P1').AsString := 'Precio1';
      ParamByName('prec1Old').AsInteger := prec1Old;
      ExecSQL;
    end;
    //Updateamos el precio1 de la tabla tarifas
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = :CodProNew, Precio = : prec2New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P2 AND precio = : prec2Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec2New').AsInteger := StrToInt(EPrecio2.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P2').AsString := 'Precio2';
      ParamByName('prec2Old').AsInteger := prec2Old;
      ExecSQL;
    end;
    //vamos por el último precio3
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = : CodProNew, Precio = : prec3New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P3 AND precio = : prec3Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec3New').AsInteger := StrToInt(EPrecio3.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P3').AsString := 'Precio3';
      ParamByName('prec3Old').AsInteger := prec3Old;
      ExecSQL;
    end;
    //Updateamos el precio4
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = : CodProNew, Precio = : prec4New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P4 AND precio = : prec4Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec4New').AsInteger := StrToInt(EPrecio4.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P4').AsString := 'Precio4';
      ParamByName('prec4Old').AsInteger := prec4Old;
      ExecSQL;
    end;
    //Updatemos el precio5
        with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = : CodProNew, Precio = rec5New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P5 AND precio = : prec5Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec5New').AsInteger := StrToInt(EPrecio5.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P5').AsString := 'Precio5';
      ParamByName('prec5Old').AsInteger := prec5Old;
      ExecSQL;
    end;
    //Updateamos el precio6
        with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE tarifas SET CodigoBarra = : codBarNew, CodProducto = : CodProNew, Precio = : prec6New');
      SQL.Add('WHERE id_producto = : IDP AND CodigoBarra = : codBarOld');
      SQL.Add('AND CodProducto = : codProOld AND ListaPrecio = : P6 AND precio = : prec6Old');

      ParamByName('codBarNew').AsString := ECodigoBarra.Text;
      ParamByName('codProNew').AsString := ECodProducto.Text;
      ParamByName('prec6New').AsInteger := StrToInt(EPrecio6.Text);
      ParamByName('IDP').AsInteger := idTarifa;
      ParamByName('codBarOld').AsString := codBarOld;
      ParamByName('codProOld').AsString := codProOld;
      ParamByName('P6').AsString := 'Precio6';
      ParamByName('prec6Old').AsInteger := prec6Old;
      ExecSQL;
    end;
    modoEditar(False);
    SBNuevo.Enabled := True;
    SBEditar.Enabled := True;
    SBEliminar.Enabled := True;
    SBAgregar.Enabled := False;;
    SBCancelar.Enabled := False;
    GBBusqueda.Visible := False;
    ShowMessage('Producto editado con éxito');

  end
  else
  begin
    ShowMessage('no hay datos que Editar');
  end;

end;

Ahora ya estan editados nuentros datos en las 2 tablas..

Y por último eliminar un producto con sus respectivos precios, como la estructura de las 2 tablas PRODUCTOS y TARIFAS son relacionales entonces solo bastará eliminar el producto para que así se eliminen TODOS sus precios de la tabla TARIFAS
Para que surta efecto tenemos que buscar primero el producto con el anterior código que puse de búsqueda.. e se llenan todos los componetes y esto va en el boton ELIIMINAR en el evento onclick

Código Delphi [-]
procedure TFrmAgregarProductos.SBDeleteClick(Sender: TObject);
var
  resp : Integer;
begin
resp := Application.MessageBox(Pchar('¿Desea eliminar el código '+ECodigoBarra.Text+'?'),'Eliminar un registro',MB_YESNO+MB_ICONERROR);
  if resp = ID_YES then begin
    with DM.ZQProductos do
    begin
      Close;
      SQL.Clear;
      SQL.Add('DELETE FROM productos WHERE id_producto = : IDP');
      ParamByName('IDP').AsString := DM.ZQBusqProducto.FieldByName('id_producto').AsString;
      ExecSQL;
    end;
    modoEditar(False);
    SBNuevo.Enabled := True;
    SBEditar.Enabled := True;
    SBEliminar.Enabled := True;
    SBAgregar.Enabled := False;;
    SBCancelar.Enabled := False;
    GBBusqueda.Visible := False;
  end;
end;

Los parámetros puse alejados de los 2 puntos por que me los pone como emoticons :_precioOld ahí quitan la barra baja que sería el espacio.


bueno ya terminé el fin de pegar tanta basura de código, pero como digo lo pongo por 2 cosas.. una para que pueda servirle a alguien mas ( que lo dudo ) y la otra para que puedan dar una idea mejor de hacerla
O tambien de implementar cosas como por ej a la hora de agregar un producto que si ya esta repetido el código me diga que ese código ya existe y tambien me habría gustado _mucho_ que en la busqueda sep ued abuscar con un LIKE y los resultados mostrarmelos en un DBGrid y luego el hacerle doble click "Recién" me llene los Edits, pero como veran no soy experto en delphi y trato de hacer lo mejor que puedo mis cosas..

saludos y suerte

PD ahh para que esto no quede así he echo un pequeño ejemplo de su uso, pero con 3 pequeñas tablas y una interfáz, para que todo funcione lo único que tienen que tener las componentes ZEOSlib en su última versión, aunque tambien las otras les servirá ya que uso puros querys
PD2 si el mensaje esta muuuuy largo, perdón y lo siento mucho, puedo quitarlo

PD3 tienen solo que poner el user y pass de su base de datos en el componente ZConnection

joder el adjunto se me fue en un mensaje anterior
Responder Con Cita