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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2007
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
To Be or Not To Be: Filtrar o no Filtrar esa es la cuestion

Buenos días a todos. Planteo la siguiente cuestión:
En mi aplicación tengo, entre otras muchas cosas, dos tablas

Código SQL [-]
CREATE DOMAIN "AB" AS VARCHAR(1)
   DEFAULT 'A'
   CHECK(VALUE='A' OR VALUE='B');
CREATE DOMAIN "CENTRO_LABORAL" AS VARCHAR(3)
   CHECK(VALUE='PRI' OR VALUE='SEG');
CREATE DOMAIN "DOC_NAL_IDEN" AS INTEGER
   CHECK (VALUE>=1 AND VALUE<=99999999);
CREATE DOMAIN "FECHA_CADUCIDAD" AS TIMESTAMP
   CHECK(VALUE>='NOW');
CREATE DOMAIN "MATRICULA_COCHE" AS VARCHAR(10);
CREATE DOMAIN "NOM" AS VARCHAR(60);
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_DNI" 
(
  "DNI1"  "DOC_NAL_IDEN" NOT NULL,
  "LETRA_NIF"  CHAR(1),
  "APELLIDO_1"  "PRIMER_APELLIDO" NOT NULL,
  "APELLIDO_2"  "SEGUNDO_APELLIDO",
  "NOMBRE"  "NOM" NOT NULL,
  "MATRICULA"  "MATRICULA_COCHE",
  "CENTRO"  "CENTRO_LABORAL" 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 ("DNI1")
);

Código SQL [-]
CREATE DOMAIN "DOC_NAL_IDEN" AS INTEGER
   CHECK (VALUE>=1 AND VALUE<=99999999);

CREATE TABLE "MOV_EXTERNOS_DNI" 
(
  "DNI2"  "DOC_NAL_IDEN" NOT NULL,
  "DIA_ENTRADA"  TIMESTAMP,
  "DIA_SALIDA"  TIMESTAMP
);
ALTER TABLE "MOV_EXTERNOS_DNI" ADD CONSTRAINT "MOVIMIENTO_DNI" FOREIGN KEY ("DNI2") REFERENCES EXTERNOS_DNI ("DNI1") ON DELETE CASCADE;
ALTER TABLE "MOV_EXTERNOS_DNI" ADD CONSTRAINT "MOVIMIENTO_DNI_2" FOREIGN KEY ("DNI2") REFERENCES EXTERNOS_DNI ("DNI1") ON UPDATE CASCADE;

Éstas están encapsuladas en dos IBDataSet (uso IBX6).
Mediante un IBQuery quiero conseguir un conjunto de datos que luego seran pasados a la impresora para obtener un listado (les ruego si hay otra forma mejor de hacer esto me lo hagan saber). Hasta el momento he intentado de las dos maneras que mas adelante expondré, obtener ese conjunto de datos pero no hay forma. Me explicaré:
Quiero de la tabla MOV_EXTERNOS_DNI obtener solo los registros que se correspondan con un dia determinado. El criterio de union entre los dos conjuntos de datos es DN1=DN2.
Primero he intentado con un filtro en el evento OnFilterRecord del IBQuery lo siguiente:
Código Delphi [-]
procedure TDM.IBQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
  Dia: TDateTime;
begin
  DataSet:=DM.IBDS_DNI_MOV;//esta es MOV_EXTERNOS_DNI
  Dia:=DateOf(DM.IBDS_DNI_MOV.FieldByName('DIA_ENTRADA').AsDateTime);
  Accept:=DateTimeToTimeStamp(DataSet['DIA_ENTRADA'])=DateTimeToTimeStamp(Dia);
end;
Pero falla en el subrayado.
Despues he intentado con una consulta en los siguientes términos:
Código SQL [-]
procedure TForm1.FormShow(Sender: TObject);
var
  Dia: String;
begin
 Dia:=DateTimeToStr(Now);
 with DM.IBQuery1 do
   begin
       if Active=True then Active:=False;
       UnPrepare;
       SQL.Clear;
       SQL.Add('SELECT DNI1, LETRA_NIF, APELLIDO_1, APELLIDO_2, NOMBRE, MATRICULA, CENTRO, OBJETO, DNI2, DIA_SALIDA, DIA_ENTRADA');
       SQL.Add('FROM EXTERNOS_DNI, MOV_EXTERNOS_DNI');
       SQL.Add('WHERE DNI1=DNI2 AND '+quotedstr(DM.IBDS_DNI_MOV.FieldByName('DIA_ENTRADA').AsString)+'='+quotedstr(Dia));
       SQL.Add('ORDER BY DNI1');
       Prepare;
       if Active=False then Active:=True;
       Open;
   end;
end;
El resultado de esta consulta es cero registros.
¿Alguien me puede ayudar? Estoy mas perdido que el "banco del arroz".

Gracias a todos.
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Filtrar miguel_figueroa Conexión con bases de datos 11 03-01-2007 23:50:48
Filtrar BD NoSv Conexión con bases de datos 8 11-10-2006 12:27:47
Filtrar Dbf userlazarus Conexión con bases de datos 2 23-05-2006 16:48:45
Filtrar pepelu1975 OOP 24 18-05-2004 09:14:57
Filtrar elloco C++ Builder 2 28-04-2004 05:12:36


La franja horaria es GMT +2. Ahora son las 05:12:41.


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