Ver Mensaje Individual
  #1  
Antiguo 07-05-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Reputación: 20
BlackDaemon Va por buen camino
Perdida de Campos en Memória de un Frm o otro

Bueno, siento no haber sido claro en el título, pero no sabía que poner, el problema es el siguiente tengo 2 tablas una Productos y otra Tarifas
Y en un formulário para agregar los items a un StringGrid tengo una consulta de esta forma

Código Delphi [-]
procedure TFrmAgregarItems.EcodigoChange(Sender: TObject);
begin
  with DM.ZQAgregarItems do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT prod.*, tari.*');
    SQL.Add('FROM productos AS prod JOIN tarifas AS tari');
    SQL.Add('ON prod.id_producto = tari.id_producto');
    SQL.Add('WHERE tari.listaprecio = :Prec');
    SQL.Add('AND CodigoBarra LIKE "%'+Ecodigo.Text+'%"');
    ParamByName('Prec').AsString := FrmVentas.CBListaPrecio.Text;
    Open;
  end;
end;

Por si es de ayuda la estructura de mi tabla Tarifas
Código SQL [-]
CREATE TABLE `tarifas` (
  `Id_producto` int(11) unsigned NOT NULL,
  `CodigoBarra` bigint(20) NOT NULL,
  `CodProducto` varchar(20) NOT NULL,
  `ListaPrecio` varchar(10) NOT NULL,
  `Precio` double NOT NULL,
  KEY `id_producto` (`Id_producto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `tarifas`
  ADD CONSTRAINT `FK_tarifas_1` FOREIGN KEY (`Id_producto`) REFERENCES `productos` (`ID_producto`) ON DELETE CASCADE ON UPDATE CASCADE;

Uso un componente ZQuery llamado ZQAgregarItems con el realizo la consulta de búsqueda del campo CodigoBarra que se encuentra en la tabla Tarifas ( no se si poner Tari.CodigoBarra aunque como esta no da problemas)
Bueno, una ves realizada la búsqueda los resultados me los muestra en un DBgrid donde solo muestro 3 campos, luego 2 clic y me despliega los demás campos en unos DBEdits, que son solo para visualizar, y otros como por ej precio, cantidad, eso son Edits para que el usuario los llene, luego le da aceptar y tiene que llenarse una fila en el StringGrid Perooooo ( he aquí el dilema ) Ahora en el form Ventas, donde tengo el StringGrid tengo un Botón desde donde llamo al form BusquedaItems, es del que les he comentado hace un momento, bueno, tengo un blucle que si cumple sierta condición agregue el items al StringGrid, ahora en este form tengo un ComboBox donde tengo las listas de precios que son algo como, precio1, precio2, precio3 .... precio6, son para filtrar los precios y sepa de que campo tomar el respectivo precio para agregarlo al StringGrid, bueno todo normal, realizo la búsqueda en el otro form pero al obtener el campo precio1 (o depende del que este en el combobox) me tira un error, como si no existiera, Ahora mi duda es, cuando realizo la búsqueda el componente ZQuery tiene en memória ese campo ?? Según creo si lo tiene, PERO al cerrar ese form, y querer agregar el items al StringGrid Pierde lo que tenía en memória ??? no creo, por que no estoy haciendo un Zquery.sql.clear, o un close, no se, esa es mi duda, por que me marca un error ZQAgregarItems : field "precio" not found


Como podría acceder a al campo Precio1, o Precio2, etc de mi Tabla Tarifas con FielByName ??
Nesesito este campo para poder agregarlo a mi StringGrid.

Esta es la parte de mi código donde intento acceder el precio1 con fieldByName

Código Delphi [-]
        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; 
          SGListaProductos.Cells[8,cuenta] := Format('%8.2f',[StrToFloat(Precio) * StrToFloat(SGListaProductos.Cells[1,cuenta])]);

Bueno, ahora no se como poder hacer eso, para así poder agregar un Items a mi StringGrid, les digo que agrega TODOS los campos al stringGrid, menos el campo ListaPrecio

saludos

PD aquí les dejo los SS de los 2 form para que se den cuenta.
FrmVentas
http://img443.imageshack.us/img443/4800/ventasud6.jpg
FrmAgregarItems
http://img399.imageshack.us/img399/5...aritemsts9.jpg


Última edición por BlackDaemon fecha: 07-05-2007 a las 21:16:42.
Responder Con Cita