Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2007
d-hugo d-hugo is offline
Miembro
 
Registrado: abr 2007
Posts: 34
Poder: 0
d-hugo Va por buen camino
Cita:
Empezado por BlackDaemon
ahh es que ya tengo casi todo en mi stringGrind, sería como comenzar casi de nuevo con lo mucho que me esta costando
Sí, ese es el inconveniente, especialmente si tienes la aplicación muy adelantada. En todo caso bien puedes probarlo en un formulario que aun no hayas hecho, o cuando termines puedes hacer un proyecto de prueba a ver si usar clientdatasets te resulta mas simple.

Última edición por d-hugo fecha: 10-04-2007 a las 10:52:50.
Responder Con Cita
  #2  
Antiguo 10-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Cita:
Sí, ese es el inconveniente, especialmente si tienes la aplicación muy adelantada. En todo caso bien puedes probarlo en un formulario que aun no hayas hecho, o cuando termines puedes hacer un proyecto de prueba a ver si usar clientdatasets te resulta mas simple.
Bueno esta bién, ya lo había tenido pensado eso, luego hacer otra app sacando las mejoras de esta y actualizando todo lo que se pueda, pero tengo una duda, cuando hablas de clientdatasets a que te refieres ?? Osea a que componente :
ahh tambien si me podría aclarar las dudas con el DATASET de los componentes ZOES lib, por que por lo que veo no las tienen y me han recomendado mucho

saludos
Responder Con Cita
  #3  
Antiguo 10-04-2007
d-hugo d-hugo is offline
Miembro
 
Registrado: abr 2007
Posts: 34
Poder: 0
d-hugo Va por buen camino
Cita:
Empezado por BlackDaemon
tengo una duda, cuando hablas de clientdatasets a que te refieres ?? Osea a que componente :
ahh tambien si me podría aclarar las dudas con el DATASET de los componentes ZOES lib, por que por lo que veo no las tienen y me han recomendado mucho
El ClientDataSet es un componente del Delphi (al menos del D7 enterprise), basicamente lo que hace es una base de datos virtual en memoria, con todas las propiedades normales de una base de datos. Pero también podrías usar el componente llamado KbmMemTable, que tiene buena reputación en cuanto a rapidez y funcionalidad, parece que es incluso mejor que el propio ClientDataSet. Haz una busqueda.

Con respecto al ZEOS, no puedo decirte la gran cosa, porque no lo he probado.
Responder Con Cita
  #4  
Antiguo 10-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Bueno si, pero Lepe me ha hablado mucho de DataSet pero no los tengo en los ZEoS y si, si he visto el ClientDataSet, pero pensé que te referías a otro de los Zeos por ej, ahora como se usaría un ClientDataSet, y tu me dijiste que use en ClientDataSet en ves de un StringGrid pero la verdad es que yo no los veo nada de parecidos.. al princípio pensé que te referías al DBGrid pero veo que no, si me aclaras mis dudas te estaría muy agradecido.

saludos
Responder Con Cita
  #5  
Antiguo 12-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Bueno despues de tanto luchar con este tema.. lo he logrado de una manera que aún no me convence pero que da resultados buenos, pero tambien tiene muuuuuchas contras, sin mas aquí les dejo mi código por si alguien lo quisiera usar, aunque estoy seguro que solo serviría para confundir aún mas

Bueno comenzemos.. como ya tengo las 2 tablas PRODUCTOS y la tabla TARIFAS en los anteriores post puse la estructura, así que no la repetiré
Asi que este es el código con el cual AGREGO tooooodos los campos que tengo en diferentes edits y DataBaseComboBoxsLoock y un meno.

AGREGAR PRODUCTOS

Tengo estas variables definidas

Código Delphi [-]
var
  FrmAgregarProductos: TFrmAgregarProductos;
  Editando : Boolean;
  idTarifa, prec1Old, prec2Old, prec3Old, prec4Old, prec5Old, prec6Old : Integer;
  codBarOld, codProOld : String;


Y el código del botón agregar si, ya se que esta largo y feo

Código Delphi [-]
procedure TFrmAgregarProductos.SBAgregarClick(Sender: TObject);
var
  idProducto : Integer;
begin
  if (ECodProducto.Text <> '') then
  begin
    if (ECodigoBarra.Text <> '') then
    begin
      if (MDescripcion.Text <> '') then
      begin
        if (DBLCBCategoria.Text <> '') then
        begin
          if (DBLCBSubCategoria.Text <> '') then
          begin
            if (ECantidad.Text <> '') then
            begin
              if (DBLCBUnidadPrecio.Text <> '') AND (DBLCBUnidad.Text <> '') then
              begin
                //Insertamos todos los registros de los campos Edits, DBComboBox, etc
                with DM.ZQProductos do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add('INSERT INTO productos (Descripcion, Categoria, SubCategoria, Unidad, Cantidad, Proveedor, ');
                  SQL.Add('UnidadPrecio, PrecioCompraBs, PrecioCompraSus, Costo, FechaActualizacion)');
                  SQL.Add('VALUES (es, :Cat, :SubCat, :Uni, :Cant, :Prov, :UniPre, :PCB, :PCS, :Cos, :FechAct)');
                  //Asignamos los parámetros tomados de los edits.text
                  ParamByName('Des').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('PCB').AsString := EPrecioCompraBs.Text;
                  ParamByName('PCS').AsString := EPrecioCompraSus.Text;
                  ParamByName('Cos').AsString := ECosto.Text;
                  ParamByName('FechAct').AsDateTime := DateTimePicker1.Date;
                  //Executamos todo e insertamo en la tabla Productos
                  ExecSQL;
                end;
                //Sacamos el último ID de la tabla productos.. sería el ID del producto insertado
                with DM.ZQProductos do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add('SELECT max(id_producto) as xxx FROM productos');
                  Open;
                end;
                  idProducto := DM.ZQProductos.fieldByName('xxx').AsInteger;
                //Insertamos ahora los campo "id_producto ( este es de la tabla productos )
                //Código, Código Producto, precio1, precio2... precioN en la tabla Tarifas
                with DM.ZQProductos do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add('INSERT INTO tarifas (Id_producto, CodigoBarra , CodProducto , ListaPrecio , Precio)');
                  SQL.Add('VALUES (:IDP, :CB, :CP, :LP1, rec1), ');
                  SQL.Add('(:IDP, :CB, :CP, :LP2, rec2), ');
                  SQL.Add('(:IDP, :CB, :CP, :LP3, rec3), ');
                  SQL.Add('(:IDP, :CB, :CP, :LP4, rec4), ');
                  SQL.Add('(:IDP, :CB, :CP, :LP5, rec5), ');
                  SQL.Add('(:IDP, :CB, :CP, :LP6, rec6)');
                  //Asignamos parámetros que se repiten en los 6 campos
                  ParamByName('IDP').AsInteger := idProducto;
                  ParamByName('CB').AsString := ECodigoBarra.Text;
                  ParamByName('CP').AsString := ECodProducto.Text;
                  //Asignamos parámetros a las lista de precios que son 6
                  ParamByName('LP1').AsString := 'precio1';
                  ParamByName('LP2').AsString := 'precio2';
                  ParamByName('LP3').AsString := 'precio3';
                  ParamByName('LP4').AsString := 'precio4';
                  ParamByName('LP5').AsString := 'precio5';
                  ParamByName('LP6').AsString := 'precio6';
                  //Asignamos parámetro a los precios que tambien son 6
                  ParamByName('prec1').AsInteger := StrToInt(EPrecio1.Text);
                  ParamByName('prec2').AsInteger := StrToInt(EPrecio2.Text);
                  ParamByName('prec3').AsInteger := StrToInt(EPrecio3.Text);
                  ParamByName('prec4').AsInteger := StrToInt(EPrecio4.Text);
                  ParamByName('prec5').AsInteger := StrToInt(EPrecio5.Text);
                  ParamByName('prec6').AsInteger := StrToInt(EPrecio6.Text);
                  ExecSQL;
                end;
                ModoEditar(False);
                SBAgregar.Enabled := False;
                SBCancelar.Enabled := False;
                SBNuevo.Enabled := True;
                SBEditar.Enabled := True;
                SBEliminar.Enabled := True;
                //Mostramos mensajes si los campos están vacíos
              end
              else
              begin
                ShowMessage('Los campos Unidad no pueden estar vacíos');
              end;
            end
            else
            begin
              ShowMessage('El campo Cantidad no puede estar vacío');
            end;
          end
          else
          begin
            ShowMessage('El campo proveedor no puede estar vacío');
          end;
        end
        else
        begin
          ShowMessage('El campo Categoría no puede estar vacío');
        end;
      end
      else
      begin
        ShowMessage('El campo Descripción no puede estar vacío');
      end;
    end
    else
    begin
      ShowMessage('El campo Código Barra no puede estar vacío');
    end;
  end
  else
  begin
    ShowMessage('El campo Código no puede estar vacío');
  end;

end;



pfff Bueno ahora toca el código de edición, para lo cual realizo una búsqueda por CodigoBarra y llenos los edits, DataBaseComboBoxLook y el meno

BUSCAR Y LLENAR LOS COMPONTES

Todo esto en el evento OnClik del boton búsqueda

Código Delphi [-]
procedure TFrmAgregarProductos.SBBuscarClick(Sender: TObject);
begin
  if (EPalabra.Text <> '') then
  begin
    //llenamos el edit Precio1 y los edits codigos
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP1');
      //SQL.Add('SELECT * FROM tarifas WHERE codigo LIKE "%' +EPalabra.Text+ '%"');
      ParamByName('CB').AsString := EPalabra.Text;
      ParamByName('LP1').AsString := 'Precio1';
      Open;
    end;
    EPrecio1.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    //tenemos el id_producto para usarlo en en query para la tabla productos
    idTarifa := DM.ZQBusqProducto.FieldByName('id_producto').AsInteger;
    codBarOld := DM.ZQBusqProducto.FieldByName('CodigoBarra').AsString;
    codProOld := DM.ZQBusqProducto.FieldByName('CodProducto').AsString;
    prec1Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //Lenamos el campo Edit CódigoBarra y CodProducto
    ECodProducto.Text := DM.ZQBusqProducto.FieldByName('CodProducto').AsString;
    ECodigoBarra.Text := DM.ZQBusqProducto.FieldByName('CodigoBarra').AsString;
    //Llenamos el edit precio2
    with DM.ZQBusqProducto do
    begin
      Close;
      SQl.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP2');
      ParambyName('CB').AsString := EPalabra.Text;
      ParamByName('LP2').AsString := 'precio2';
      Open;
    end;
    EPrecio2.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    prec2Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //Lenamos el edit cantidad3
    with DM.ZQBusqProducto do
    begin
      Close;
      SQl.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP3');
      ParambyName('CB').AsString := EPalabra.Text;
      ParamByName('LP3').AsString := 'precio3';
      Open;
    end;
    EPrecio3.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    prec3Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //Lenamos el edit con Precio4
    with DM.ZQBusqProducto do
    begin
      Close;
      SQl.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP4');
      ParambyName('CB').AsString := EPalabra.Text;
      ParamByName('LP4').AsString := 'precio4';
      Open;
    end;
    EPrecio4.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    prec4Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //llenamos el campo Precio5
    with DM.ZQBusqProducto do
    begin
      Close;
      SQl.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP5');
      ParambyName('CB').AsString := EPalabra.Text;
      ParamByName('LP5').AsString := 'precio5';
      Open;
    end;
    EPrecio5.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    prec5Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //Llenamos el campo Precio6
    with DM.ZQBusqProducto do
    begin
      Close;
      SQl.Clear;
      SQL.Add('SELECT * FROM tarifas WHERE CodigoBarra = :CB AND ListaPrecio = :LP6');
      ParambyName('CB').AsString := EPalabra.Text;
      ParamByName('LP6').AsString := 'precio6';
      Open;
    end;
    EPrecio6.Text := IntToStr(DM.ZQBusqProducto.FieldByName('precio').AsInteger);
    prec6Old := DM.ZQBusqProducto.FieldByName('precio').AsInteger;
    //sacamos el id_tarifa de la otra tabla.
    //Llenamos los campos Descripcion y Categoria
    with DM.ZQBusqProducto do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM productos WHERE id_producto = :IDT');
      ParamByName('IDT').AsInteger := idTarifa;
      Open;
    end;
    //Lenamos toooodos los campos que faltan.. unidad, categoria , subCatetgoria..
    MDescripcion.Text := DM.ZQBusqProducto.FieldByName('descripcion').AsString;
    DBLCBCategoria.KeyValue := DM.ZQBusqProducto.FieldByName('Categoria').AsString;
    DBLCBSubCategoria.KeyValue := DM.ZQBusqProducto.FieldByName('SubCategoria').AsString;
    DBLCBProveedor.KeyValue := DM.ZQBusqProducto.FieldByName('Proveedor').AsString;
    DBLCBUnidad.KeyValue := DM.ZQBusqProducto.FieldByName('Unidad').AsString;
    DBLCBUnidadPrecio.KeyValue := DM.ZQBusqProducto.FieldByName('UnidadPrecio').AsString;
    ECantidad.Text := DM.ZQBusqProducto.FieldByName('Cantidad').AsString;
    ECosto.Text := DM.ZQBusqProducto.FieldByName('Costo').AsString;
    EPrecioCompraBs.Text := DM.ZQBusqProducto.FieldByName('PrecioCompraBs').AsString;
    EPrecioCompraSus.Text := DM.ZQBusqProducto.FieldByName('PrecioCompraSus').AsString;
    DateTimePicker1.Date := DM.ZQBusqProducto.FieldByName('FechaActualizacion').AsDateTime;
    //Abrimos los campos
    modoEditar(True);
    SBGuardar.Enabled := True;
    SBCancelar.Enabled := True;
    SBNuevo.Enabled := False;
    SBAgregar.Enabled := False;
    SBEditar.Enabled := False;
    SBEliminar.Enabled := False;
    SBDelete.Enabled := True;
  end
  else
  begin
    ShowMessage('Por Favor ingrese un código');
  end;
end;

continuaaa...
Archivos Adjuntos
Tipo de Archivo: zip maestro-detalle.zip (4,6 KB, 9 visitas)

Última edición por BlackDaemon fecha: 12-04-2007 a las 07:42:41.
Responder Con Cita
  #6  
Antiguo 12-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar Archivos Desde FTP papu24ar Varios 4 21-03-2007 03:50:57
Actualizar una base de datos desde un servidor remoto zvf MySQL 1 22-06-2006 22:21:26
Actualizar una base de datos desde un formulario federiconqn21 Varios 1 14-12-2005 16:43:23
Impresión desde un StringGrid... Lester Impresión 10 26-03-2005 07:14:29
Impresion desde un StringGrid fmonte Varios 3 17-09-2004 05:28:29


La franja horaria es GMT +2. Ahora son las 02:22:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi