Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Unhappy IBX LookUp enlace Maestro-Detalle

El problema que tengo es, con un Campo LookUp que ya le busque por todas partes e investigue en muchos lugares por la Web y no he encontrado con la Solución a mi problema que a continuación describo y espero ser Claro:

Manejo los componentes IBX Ver 7.08 con FireBird 1.5 Delphi 7.0, tengo un maestro detalle(Facturas) que enlazado el Campo LookUp del Detalle con la Tabla de Artículos, Detallo como creo el Campo LookUp:

Doy doble clic al ibDataSet del Detalle(Facturas) y con el boton derecho del raton seleccionó “New Field” en Field Properties escribó en el “Name” el nombre del Campo LookUp, en “Type” seleccionó el tipo de dato String, en “Size” le pongo la longitud de 80, en “Field Type” selecciono LookUp, en “KeyFields” seleccionó el campo llave del articulo del Detalle(se llama CLAVEART) y después seleccionó en el “Dataset” tArticulos, ahora en “LookUp Keys” seleccionó el campo llave de tArticulos(CLAVEART) este campo se llama igual que la del Detalle, y por último seleccionó en “Result Field” el campo DESART que es el campo resultante del LookUp.

Hasta aquí espero ir bien, ahora, el siguiente paso es enlazar el campo LookUp con el dbGrid, una vez enlazado ejecuto mi aplicación, al estar capturando la Código del Artículo me pone Correctamente la Descripción, después al abrir un nuevo registro dentro del dbGrid, al capturar un Código de Artículo distinto al anterior, el campo descripción del anterior desaparece y en el Actual es Correcto, pero si capturó el mismo Código de Artículo en el siguiente registro, Sorpresa no se desaparece, mientras capture códigos iguales no desaparecen las Descripciones anteriores.




**Tengo una función SQL que busca el Código a la Tabla de Artículos en el cual tiene los siguientes valores de Entrada…: tDataSet, Tabla de la Base de datos, Campo de la Tabla a Buscar y el Dato, pongo un ejemplo de esta función:

with Tabla do begin

Active:=False;

SelectSQL.Clear;

SelectSQL.Add('SELECT * FROM '+NombreTabla);

SelectSQL.Add(' Where '+Campo+'='+Chr(39)+Dato+Chr(39));

Active:=True;

if IsEmpty then

Result:=False

else

Result:=True;

end;




Ahora bien, les describó lo que he realizado para corregir el problema:




1.- En la propiedad LookUpCache del Campo LookUp le cambio a TRUE, y pasa lo siguiente:

*Al estar capturando los códigos de los artículos en el dbGrid y buscarlos a la vez con la función que arriba describí, ya sean iguales ó diferentes Códigos no se Borran las descripciones, al Guardar la Factura y al querer abrirla de nuevo, no aparecen todas las descripciones solamente aproximadamente entre 2 y 3 Artículos de 10 capturados.




2.-Pongo otro ibDataSet en el DataModule apuntando a la misma Tabla de Artículos y la hago llamar tArticulos2, ahora, en el campo LookUp del Detalle(Facturas) le cambio en la propiedad LookUpDataSet de tArticulos a tArticulos2, ahora, bien se preguntarán porque hago esto, pues por conclusión al parecer que en las anteriores pruebas el campo lookup apuntaba siempre al mismo registro es por eso que hice esta otra prueba y me funcionó. Pero me salió por consecuencia otro problema, al estar capturando los Códigos de los Artículos me pone Correctamente las Descripciones de todos y también al Guardar la Factura y al Abrirla de Nuevo me aparecen todas las Descripciones y se preguntarán en donde esta el problema, el problema que tengo es que al Abrir el DataSet (Detalle de Facturas) después de haber abierto el Maestro tarda aproximadamente 8 Segundos, y para que me muestre la descripción de cada Código de Artículo tarda aproximadamente otros 6 segundos por cada uno, son tiempos muy grandes, siendo que solamente tengo 2 facturas que contienen 2 productos cada una en la Base de Datos, y tengo aprox. 58,000 Artículos guardados por lo que no creo que le haga cosquillas al FireBird, una cosa curiosa, al abrir manualmente el ibDataSet en tiempo de Diseño tarda lo mismo que en tiempo de ejecución, pero si borro el campo LookUp no tarda nada en abrirla.




Espero haber redactado correctamente si tienen alguna duda estoy a sus ordenes, cualquier comentario se los agradezco mucho.
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


La franja horaria es GMT +2. Ahora son las 22:42:32.


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