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
[-]
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');
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
[-]
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);
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.