Ver Mensaje Individual
  #1  
Antiguo 14-09-2007
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Reputación: 21
gorsan Va por buen camino
Error en procedimiento SQL embebido en Delphi 7

Hola a todos. Debido al error que les presento a continuacion estoy atascado desde hace ya una semana. No entiendo el porque me pasa esto. Me explicare:

Tengo las siguientes tablas definidas con Interbase 6:

Código SQL [-]
/* Domain definitions */
CREATE DOMAIN "AB" AS VARCHAR(1)
   DEFAULT 'A'
   CHECK(VALUE='A' OR VALUE='B');
CREATE DOMAIN "SITIO" AS VARCHAR(3)
   CHECK(VALUE='ABC' OR VALUE='DEF');
CREATE DOMAIN "FECHA_CADUCIDAD" AS TIMESTAMP
   CHECK(VALUE>='NOW');
CREATE DOMAIN "MATRICULA_COCHE" AS VARCHAR(10);
CREATE DOMAIN "NOM" AS VARCHAR(60);
CREATE DOMAIN "NUM_IDEN_EXTRANJERO" AS VARCHAR(14);
CREATE DOMAIN "OBJETO_ACCESO" AS VARCHAR(20);
CREATE DOMAIN "PRIMER_APELLIDO" AS VARCHAR(60);
CREATE DOMAIN "SEGUNDO_APELLIDO" AS VARCHAR(60);
CREATE DOMAIN "VERDADERO_FALSO" AS CHAR(1)
   DEFAULT 'N'
   CHECK(VALUE='S' OR VALUE='N');

/* Table: EXTERNOS_NIE, Owner: SYSDBA */

CREATE TABLE "EXTERNOS_NIE" 
(
  "NIE1"  "NUM_IDEN_EXTRANJERO" NOT NULL,
  "APELLIDO_1"  "PRIMER_APELLIDO" NOT NULL,
  "APELLIDO_2"  "SEGUNDO_APELLIDO",
  "NOMBRE"  "NOM" NOT NULL,
  "MATRICULA"  "MATRICULA_COCHE",
  "CENTRO"  "SITIO" NOT NULL,
  "OBJETO"  "OBJETO_ACCESO",
  "ALTA_BAJA"  "AB",
  "CADUCIDAD"  "FECHA_CADUCIDAD",
  "NOTAS"  BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  "ESTA_DENTRO"  "VERDADERO_FALSO",
 PRIMARY KEY ("NIE1")
);

Código SQL [-]
/* Domain definitions */
CREATE DOMAIN "SITIO" AS VARCHAR(3)
   CHECK(VALUE='ABC' OR VALUE='DEF');
CREATE DOMAIN "NOM" AS VARCHAR(60);
CREATE DOMAIN "NUM_IDEN" AS VARCHAR(10);
CREATE DOMAIN "PRIMER_APELLIDO" AS VARCHAR(60);
CREATE DOMAIN "SEGUNDO_APELLIDO" AS VARCHAR(60);

/* Table: INTERNOS, Owner: SYSDBA */

CREATE TABLE "INTERMEDIARIOS" 
(
  "NUM1"  "NUM_IDEN" NOT NULL,
  "APELLIDO_1"  "PRIMER_APELLIDO" NOT NULL,
  "APELLIDO_2"  "SEGUNDO_APELLIDO",
  "NOMBRE"  "NOM" NOT NULL,
  "CENTRO"  "SITIO" NOT NULL,
  "NOTAS"  BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
 PRIMARY KEY ("NUM1")
);

y un procedimiento embebido con delphi 7 que intenta hacer un query que arroja como resultado un único registro de la tabla EXTERNOS_NIE en tiempo de ejecucion. El procedimeiento es el siguiente:
Código Delphi [-]
procedure TForm1.BuscarUno;
begin
if PageControl1.ActivePage=TabSheet1 then
   begin
    with DM.IBDS_DNI do
     begin
       if Active=True then Active:=False;
       UnPrepare;
       SelectSQL.Clear;
       SelectSQL.Add('SELECT * FROM EXTERNOS_DNI');
       SelectSQL.Add('WHERE DNI1='+ComboBox1.Text);
       Prepare;
       if Active=False then Active:=True;
       Open;
     end;
   end;

if PageControl1.ActivePage=TabSheet2 then
   begin
    with DM.IBDS_NIE do
     begin
       if Active=True then Active:=False;
       UnPrepare;
       SelectSQL.Clear;
       SelectSQL.Add('SELECT * FROM EXTERNOS_NIE');
       SelectSQL.Add('WHERE NIE1='+ComboBox1.Text);
       Prepare;
       if Active=False then Active:=True;
       Open;
     end;
   end;

if PageControl1.ActivePage=TabSheet3 then
   begin
    with DM.IBDS_PAS do
     begin
       if Active=True then Active:=False;
       UnPrepare;
       SelectSQL.Clear;
       SelectSQL.Add('SELECT * FROM EXTERNOS_PAS');
       SelectSQL.Add('WHERE PASAPORTE1='+ComboBox1.Text);
       Prepare;
       if Active=False then Active:=True;
       Open;
     end;
   end;

if PageControl1.ActivePage=TabSheet4 then
   begin
    with DM.IBDS_INTERMEDIARIOS do
     begin
       if Active=True then Active:=False;
       UnPrepare;
       SelectSQL.Clear;
       SelectSQL.Add('SELECT * FROM INTERMEDIARIOS');
       SelectSQL.Add('WHERE NUM1='+ComboBox1.Text);
       Prepare;
       if Active=False then Active:=True;
       Open;
     end;
   end;
end;

El código subrayado en azul pasa sin problemas y arroja el query esperado, pero el codigo subrayado con rojo no. Da un error que es el siguiente:
"Project Control_Exterior.Exe raised exception class EIBInterBaseError with message 'Dynamic sql error SQL error code=-104; Token unknown -line 2, char 14 X22222222K.' Process stopped. Use step ....." El dato que intenta leer es la siguiente cadena: 0000X22222222K.

Si os fijais, cuando se hace el select sobre INTERMEDIARIOS que tambien esta definido como VARCHAR, no hay problema y todo funciona como debe. Es en cualqueira de los dos casos que expongo donde me da el error. Otras veces me dice, en lugar del error que os he expuesto, que "el campo X22222222K no esta definido"

¿Alguien tiene una idea de porque esto falla?
Muchas gracias por vuestro tiempo.
Responder Con Cita