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 07-05-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
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
  #2  
Antiguo 15-05-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, ninguna idea ? O no he sido muy claro en el título de mi tema ?
O es que no lo han entendído mi post, bueno, sigo esperando.. gracias por leer

saludos..
Responder Con Cita
  #3  
Antiguo 15-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Es que no tiene sentido este código:
Código Delphi [-]
 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;

La sql queda al final como:
Código SQL [-]
SELECT prod.*, tari.*
FROM productos AS prod JOIN tarifas AS tari
ON prod.id_producto = tari.id_producto
WHERE tari.listaprecio = 'Precio1' // suponemos que el usuario ha elegido en el  CBListaPrecio el "precio1".
Es decir, solo estas pidiendo el precio1 para todos los productos que tienes en la Base de datos.
En resumen, ese código se traduce a:
Código Delphi [-]
  Precio := DM.ZQAgregarItems.FieldByName('Precio').Value;
puesto que previamente has pedido el "precio1" en el combo, en la consulta solo estará el Precio de esa tarifa.

Si te dice que no encuentra el campo "precio", dale un doble clic a tu query ZQAgregarItems, en la ventana que sale, borra todos los campos y después con el boton derecho añade los campos de nuevo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Exportar e importar campos memo a otro gdb eliasterrero Firebird e Interbase 0 15-03-2005 13:27:07
Campos de un IBDataset a otro noe Firebird e Interbase 1 09-10-2004 00:41:32
Perdida de } Jack Varios 5 06-05-2004 16:44:50
perdida de librerias¡¡¡ YolandaM Varios 3 06-05-2004 11:07:22
Copiar Campos de un ClientDataSet a Otro linsua Conexión con bases de datos 4 06-11-2003 21:25:00


La franja horaria es GMT +2. Ahora son las 23:06:39.


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