PDA

Ver la Versión Completa : Operation Not Applicable -fklookup


Jabi
27-02-2008, 17:18:27
Hola a todos, a ver si alguien tiene tiempo como para echarle un vistazo a este hilo:

versión : delphi 7, BDE, base de datos ORACLE 8i

Situación:

Tengo un programa para realizar informes con un estadillo de campos para rellenar. Uno de estos campos hasta ahora lo tenía como editable, es un campo VARCHAR2(50) llamado "Registro".

A la hora de rellenar un informe lanzo la siguiente consulta para que me devuelva el registro correspondiente del informe:

select *
from informes
where referencia_informe= 'XXX'

la consulta la tengo en un Qry_Informe

(aquí tengo el campo "Registro")

Ahora necesito codificar este campo y guardar "Registro" de una manera concreta.

(voy a seguir guardando la información en el mismo campo "Registro")

Se me ha proporcionado una tabla llamada Registros con la siguiente estructura:

REGISTROS

cod_registro varchar2 (7) --> donde todos los valores serán numéricos:
Ejemplo: 3001245

Nombre_registro varchar2 (50)
Ejemplo: Valladolid 3

Esta tabla me permite cerrar el campo que hasta ahora tenía como editable, de tal manera que el usuario no tenga más que seleccionar de un desplegable.

El problema que los datos que tengo en mi aplicación cliente-servidor pueden venir de una web (1) directamente o pueden darse de alta en mi aplicación (2) internamente.


(1)Asi que cuando vienen de la web solo tengo que mostrarlo, pero de la web ya me viene el código y yo quiero mostrar la descripción:

para eso creo un camplo fklookup REGISTRO_WEB que es el que muestro ahora en el estadillo del informe

keyfield: registro
lookupkeyfield:cod_registro
lookupresultfield:nombre_registro

(2) Casos internos tengo un DBLookupComboBox y cuando entro aparece el listado y me permite seleccionar.

hasta aquí todo funciona perfecto pero tengo un (3) tercer caso que es el que me fastidia el chiringuito:

(3) si intento consultar un informe realizado antes de la implantación de este sistema donde en el campo registro tengo un valor alfanumérico que no aparece en la tabla REGISTROS obtengo el siguiente error:
OPERATION NOT APPLICABLE

quería saber si a alguien se le ocurre algo para resolver este tercer problema.
No se si se puede hacer algo para que no me salte el error con el campo lookup y poder mostrar lo que tengo en el campo

No se si me he sabido explicar, intentar lo he intentado, a ver si alguien puede darme alguna pista o se le ocurre algo.

Gracias por vuestro tiempo.

Jabi
28-02-2008, 14:38:32
finalmente lo único que se me ha ocurrido es generar el campo fklookup en tiempo de ejecución, así pues, lo que hago es una consulta para ver el estado del campo y si no es un campo codificado lo trato de una manera, y cuando el campo es codificado entonces genero el campo flklookup de la siguiente manera:

with TStringField.Create(MiDataSet) do
begin
FieldName := 'FieldName';
FieldKind := fkLookup;
DataSet := MiDataSet;
Name := MiDataSet.Name + FieldName;
KeyFields := 'MiKeyFields';
LookupDataSet := MiLookupDataSet;
LookupKeyFields := 'MiLookupKeyFields';
LookupResultField := 'MiLookupResultField';

MiDataSet.FieldDefs.Add(FieldName, ftString, 50, False);
end;