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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-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
Actualizar datos de un StringGrid desde DB

Buenas a todos.
como verán no suelo postear mucho por que con la info que hay en ClubDelphi creo que no es necesário hacerlo ya que está "casi" todo lo que uno necesita para poder realizar "casi" cualquier cosa, estoy aprendiendo muchísimo gracias a este foro y a sus foreros que siempre me han ayudado hasta el momento ( saludos Caral, Lepe, Roman.. y alguno que se me escapa ) que me resolvieron las dudas hasta el momento.. pero bueno al grano xDD

Resulta que estoy haciendo un sistema de facturación y ahora estoy en la parte de ventas, que es donde mas problemas he tenido y los superé como dije gracias al foro.. pero ahora este problema que tengo ahora me mata!!!
No pude resolverlo es mas. creo que parte de mi por no saber plantearme bién que es lo que necesito o COMO necesito hacerlo.

Bueno lo que quiero hacer es ACTUALIZAR una COLUMNA de un StringGrid con datos de una DB ( MySQL ) que conecto con ZEOS
no tengo problemas para insertar datos.. eliminarlos, etc.

Ahora el problema es que para los que estoy haciendo el programa manejan 6 Precios diferentes de cada producto que se los agrega el momento de agregar el respectivo producto o "Item", bueno ahora cada cliente el momento de darle de alta se le asigna una lista de precio ( cualquiera de los precios )

Ya hasta este punto bién.. ahora lo que pretengo hacer es lo siguiente.

CUando abro el módulo ventas lo primero que me sale es esto
(si, si ya se que está feo pero quiero que sea funcinal xD )

[img=http://img187.imageshack.us/img187/4128/preciosow0.th.jpg]

ahora cuando busco un cliente tiene que cambiar el ComboBox que ven a la derecha el que está encerrado con en un óvalo

Bueno luego de eso comienzo la búqueda del producto por código de producto o código de barras lo encuentro y lo agrego el StringGrid
OJO.- el precio lo toma desde el ComboBox según el número que esté

Bueno y todo lo demás sin problemas.. pero ahora que pasaría si el Cliente quiere que le den con la lista de precio 4 ( precio4 ) por ej y siendo que el tenía la lista de precio 3 ( precio3 ) pues si como se lo imaginaban.. hay que precionar el botón LIMPIAR TODO y comensar a agregar de nuevo con la nueva lista de precios escojida en el ComboBOx perooooooooo como se darán cuenta es una pérdida de tiempo y además el programa no sería efisciente.. daría malos ratos al que lo usa y no me gusta eso, si hago algo lo quiero hacer bién.

Ya ahora lo quiera es que el que usa la app pueda cambiar el item en el COmboBox y automaticamente se ACTUALIZEN TODOS los precios de la respectiva columna

Pero no se como hacer..
Por el momento lo que analicé es hacer con una consulta SQL a la tabla Productos de mi Base de Datos.

TABLA PRODUCTOS.

Código SQL [-]
CREATE TABLE `productos` (
  `ID_producto` int(10) unsigned NOT NULL auto_increment,
  `CodProducto` varchar(10) NOT NULL,
  `CodigoBarra` varchar(15) NOT NULL default '0',
  `Descripcion` varchar(30) NOT NULL default '',
  `Categoria` varchar(20) NOT NULL default '',
  `SubCategoria` varchar(20) NOT NULL default '',
  `Unidad` varchar(5) NOT NULL,
  `Cantidad` int(11) NOT NULL default '0',
  `Proveedor` varchar(20) NOT NULL default '',
  `UnidadPrecio` varchar(5) NOT NULL default '',
  `PrecioCompraBs` float default '0',
  `PrecioCompraSus` float default '0',
  `Costo` float default '0',
  `Precio1` float NOT NULL default '0',
  `Precio2` float default NULL,
  `Precio3` float default NULL,
  `Precio4` float default NULL,
  `Precio5` float default NULL,
  `Precio6` float default NULL,
  `FechaActualizacion` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`ID_producto`),
  UNIQUE KEY `CodProducto` (`CodProducto`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1


luego de eso pensé primer lugar en buscar el producto ya sea por codProducto o por CodigoBarra que si o si tienen que tenerlo una ves encontrado el producto de la primera columna ( vamos la horizontal, estoy tan confundido que no recuerdo cual es fila y columna en el StringGrid )
una ves buscaod el producto por codproducto o codigobarra y buscar el campo precio pienso que sería una variable que contenga de acuerdo al ComboBox el respectivo precio ( precio1, precio2,.... )
Luego de eso una ves encontrado el producto por su código y su campo precio con la variable precio hacer que ACTUALIZE el precio que tiene insertado en el StringGrid... por ej si estaba un producto:

SIlla de madera precio1

que me lo actualice a :

Silla de madera precio2 ( dependiendo de que items tengan en el ComboBox )

y eso hacer con tooooodos los productos que tenga en el StringGrid


Bueno se que sería con unos 2 bucles pero vamos.. soy pura teoría que no se como hacerlo

ajunto una chapucera que intenté pero se que está mal xDD
por lo menos intenté

Código Delphi [-]
procedure TFrmVentas.CBListaPrecioChange(Sender: TObject);
var
  i : Integer;
  Precio : String;
begin
  DM.ZQAgregarItems.Close;
  DM.ZQAgregarItems.SQL.Text := 'Select * FROM productos';
  DM.ZQAgregarItems.Open;

  case CBListaPrecio.ItemIndex of
    0:Precio := DM.ZQAgregarItems.FieldByName('Precio1').Value;
    1:Precio := DM.ZQAgregarItems.FieldByName('Precio2').Value;
    2:Precio := DM.ZQAgregarItems.FieldByName('Precio3').Value;
    3:Precio := DM.ZQAgregarItems.FieldByName('Precio4').Value;
    4:Precio := DM.ZQAgregarItems.FieldByName('Precio5').Value;
    5:Precio := DM.ZQAgregarItems.FieldByName('Precio6').Value;
  end;

For i:=0 to  SGListaProductos.RowCount-1 Do
Begin
    DM.ZQActualizaListaPrecio.Close;
    DM.ZQActualizaListaPrecio.SQL.Clear;
    DM.ZQActualizaListaPrecio.SQL.Add('SELECT recio FROM productos');
    DM.ZQActualizaListaPrecio.SQL.Add('Where CodProducto = :codigo');
    DM.ZQActualizaListaPrecio.ParamByName('precio').AsString := Precio;
    DM.ZQActualizaListaPrecio.ParamByName('codigo').AsInteger  := StrToInt(SGListaProductos.Cells[3,i]);
    DM.ZQActualizaListaPrecio.Open;
End;

Bueno eso lo puse en el evento OnChange del CBListaPrecio que así se llama el ComboBox que dependen de el las listas de precios,
Bueno que datos mas ??

Pues uso un query para agregar los items ahí que se llama
ZQAgregarItems

el código que uso para agregar los items es el siguiente por si a alguien le sirve..

AGREGAR ITEMS A STRINGGRID DESDE BASE DE DATOS MySQL

Código Delphi [-]
if (CBListaPrecio.Text <> '') then
  begin

  FrmAgregarItems := TFrmAgregarItems.Create(self);

   try
      FrmAgregarItems.ShowModal;
   finally
      If FrmAgregarItems.Cancela = False then
      Begin
         If Cuenta > 1 then SGListaProductos.RowCount := SGListaProductos.RowCount + 1;
          SGListaProductos.Cells[1,cuenta] := FrmAgregarItems.ECantidad.Text;
          SGListaProductos.Cells[2,cuenta] := DM.ZQAgregarItems.FieldByName('unidad').AsString;
          SGListaProductos.Cells[3,cuenta] := DM.ZQAgregarItems.FieldByName('codproducto').AsString;
          SGListaProductos.Cells[4,cuenta] := DM.ZQAgregarItems.FieldByName('codigobarra').AsString;
          SGListaProductos.Cells[5,cuenta] := DM.ZQAgregarItems.FieldByName('descripcion').AsString;
          SGListaProductos.Cells[6,cuenta] := DM.ZQAgregarItems.FieldByName('unidadprecio').AsString;
          case CBListaPrecio.ItemIndex of
            0:Precio := DM.ZQAgregarItems.FieldByName('Precio1').Value;
            1:Precio := DM.ZQAgregarItems.FieldByName('Precio2').Value;
            2:Precio := DM.ZQAgregarItems.FieldByName('Precio3').Value;
            3:Precio := DM.ZQAgregarItems.FieldByName('Precio4').Value;
            4:Precio := DM.ZQAgregarItems.FieldByName('Precio5').Value;
            5:Precio := DM.ZQAgregarItems.FieldByName('Precio6').Value;
          end;
          SGListaProductos.Cells[7,cuenta] := Precio; //DM.ZQAgregarItems.FieldByName('precio1').AsString;
          SGListaProductos.Cells[8,cuenta] := Format('%8.2f',[StrToFloat(Precio) * StrToFloat(SGListaProductos.Cells[1,cuenta])]);
    
          Cuenta := Cuenta +1;
          SortGrid(SGListaProductos,0,0);
          CalculaTotales;
      end;
      FrmAgregarItems.Free;
   end;
end;

Bueno creo que he sido muy claro en mi duda..

saludos y gracias por adelantado foreros.. y disculpen por aumentar el tamaño de su DB del foro xDD

salud!!!

Última edición por BlackDaemon fecha: 21-03-2007 a las 06:20:28.
Responder Con Cita
 



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 09:56:54.


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