PDA

Ver la Versión Completa : Problema con dbgrid y busquedas en tabla


Gangster
10-02-2007, 04:45:20
Hola a Todos los de Este Foro de Gran ayuda bueno aqui tengo otro asi problemita que ojala y se pueda tener alguna solucion o idea de como hacerlo de la mejor manera, bueno tengo una forma con un dbgrid donde cada columna de este apunta a una sola tabla detail de una base de datos entonces, tengo una columna llamada descripcion que es para strings, entonces el problema que tengo es que si ponen el nombre del producto si me desplega los demas valores que agarro de otra tabla llamada producto donde realizo la busqueda del nombre puesto del producto, entonces esto lo hago en el evento onvalidate de la columna de la tabla detail a la que apunta el grid, enotnces cada producto tambien se requiere buscar por numero y codigo de barras, y ahi es el problema al ponerle el numero que correponde a algun determinado producto o al mismo producto pues este no me sale entonces esa es la cosa la forma como lo busco es esta la forma como lo busco

{ASEcom.tbProducto.FindKey([ASEcom.tbRemDetailRemProd.Value]
donde el tbremdetail es la que apunta al grid y es en donde escribiria el nombre del producto,el codigo de barras o el numero del producto, pero causa problemas este es el codigo:
}
if not ASEcom.tbProducto.FindKey([ASEcom.tbRemDetailRemNombre.Value]) then
begin
ASEcom.tbProducto.CachedUpdates := False;
ASEcom.tbProducto.IndexName := 'IdxNombre';
ASEcom.tbProducto.CachedUpdates := True;
if not ASEcom.tbProducto.FindKey([ASEcom.tbRemDetailRemNombre.Value]) then
begin
ASEcom.tbProducto.CachedUpdates := False;
ASEcom.tbProducto.IndexName := '';
ASEcom.tbProducto.CachedUpdates := True;
end
else
begin
ASEcom.tbRemDetailRemProd.Value := ASEcom.tbProductoNumero.Value;
// ASEcom.tbRemDetailRemNombre.Value := ASEcom.tbProductoNombre.Value;
ASEcom.tbRemDetailRemBar.Value := ASEcom.tbProductoBarras.Value;
ASEcom.tbRemDetailRemUni.Value := ASEcom.tbProductoUnidad.Value;
ASEcom.tbRemDetailRemCostoP.Value := ASEcom.tbProductoCostoP.Value;
ASEcom.tbRemDetailRemCostoD.Value := ASEcom.tbProductoCostoD.Value;
ASEcom.tbRemDetailRemVentaP.Value := ASEcom.tbProductoVentaP.Value;
ASEcom.tbRemDetailRemVentaD.Value := ASEcom.tbProductoVentaD.Value;
ASEcom.tbRemDetailRemIva.Value := ASEcom.tbProductoIVApor.Value;
ASEcom.tbRemDetailRemIeps.Value := ASEcom.tbProductoIEPpor.Value;
ASEcom.tbRemDetailRemPedim.Value := ASEcom.tbProductoPedime.Value;
ASEcom.tbRemDetailRemAdua.Value := ASEcom.tbProductoAduana.Value;
ASEcom.tbRemDetailRemDateAdu.Value := ASEcom.tbProductoDatePe.Value;

if(ASEcom.tbProductoTypVta.Value = 'D')then
begin
ASEcom.tbTC.FindLast;
ASEcom.tbRemDetailRemVentaP.Value := ASEcom.tbRemDetailRemVentaD.Value * ASEcom.tbTCVentas.Value;
end;

if(ASEcom.tbProductoTypCto.Value = 'D')then
begin
ASEcom.tbTC.FindLast;
ASEcom.tbRemDetailRemCostoP.Value := ASEcom.tbRemDetailRemCostoD.Value * ASEcom.tbTCVentas.Value;
end;
end;
end
else
begin
// ASEcom.tbRemDetailRemNombre.Value := ASEcom.tbProductoNombre.Value;
ASEcom.tbRemDetailRemBar.Value := ASEcom.tbProductoBarras.Value;
ASEcom.tbRemDetailRemUni.Value := ASEcom.tbProductoUnidad.Value;
ASEcom.tbRemDetailRemCostoP.Value := ASEcom.tbProductoCostoP.Value;
ASEcom.tbRemDetailRemCostoD.Value := ASEcom.tbProductoCostoD.Value;
ASEcom.tbRemDetailRemVentaP.Value := ASEcom.tbProductoVentaP.Value;
ASEcom.tbRemDetailRemVentaD.Value := ASEcom.tbProductoVentaD.Value;
ASEcom.tbRemDetailRemIva.Value := ASEcom.tbProductoIVApor.Value;
ASEcom.tbRemDetailRemIeps.Value := ASEcom.tbProductoIEPpor.Value;
ASEcom.tbRemDetailRemPedim.Value := ASEcom.tbProductoPedime.Value;
ASEcom.tbRemDetailRemAdua.Value := ASEcom.tbProductoAduana.Value;
ASEcom.tbRemDetailRemDateAdu.Value := ASEcom.tbProductoDatePe.Value;

if(ASEcom.tbProductoTypVta.Value = 'D')then
begin
ASEcom.tbTC.FindLast;
ASEcom.tbRemDetailRemVentaP.Value := ASEcom.tbRemDetailRemVentaD.Value * ASEcom.tbTCVentas.Value;
end;

if(ASEcom.tbProductoTypCto.Value = 'D')then
begin
ASEcom.tbTC.FindLast;
ASEcom.tbRemDetailRemCostoP.Value := ASEcom.tbRemDetailRemCostoD.Value * ASEcom.tbTCVentas.Value;
end;

end;

ASEcom.tbProducto.CachedUpdates := False;
ASEcom.tbProducto.IndexName := '';
ASEcom.tbProducto.CachedUpdates := True;
end;

aqui esta todo esto que esta en el onvalidate de la columna remnombre de la tabla detail y pues ahi quiero segun que si no me encuentran el nombre, entonces le escribo el numero o el codigo de barras y me debe de dar el mismo producto entonces esa es la cuestion y mi problemilla.

Gracias de Antemano a ver si alguien me entiende.