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
